diff --git a/README.md b/README.md index 55324df..a569827 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ CSS properties in specific order ## Installation -This mixin will be installable with Chocolat's Extras Manager when the new version is released. Until then, do something like: +This mixin is be installable with Chocolat using the `Actions > Instal Mixins...` menu. Alternatively, you can clone the source with something like: mkdir -p ~/Library/Application\ Support/Chocolat/Mixins/ git clone https://github.com/drudge/csscomb.chocmixin.git ~/Library/Application\ Support/Chocolat/Mixins/csscomb.chocmixin @@ -24,7 +24,7 @@ The following are the major contributors in no specific order: (The MIT License) -Copyright (c) 2012 Nicholas Penree <nick@penree.com> +Copyright (c) 2013 Nicholas Penree <nick@penree.com> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the diff --git a/csscomb.php b/csscomb.php deleted file mode 100644 index d0a7cbb..0000000 --- a/csscomb.php +++ /dev/null @@ -1,1581 +0,0 @@ - - * @license MIT - * @web http://csscomb.com/ - */ - -error_reporting(E_ALL); - -class csscomb{ - - var $sort_order = Array(), - $code = Array( - // оригинальный код, без изменений, то, что пришло на вход - 'original' => null, - // код, который может меняться в процессе выполнения алгоритма пересортировки - 'edited' => null, - // TODO: избавиться от resorted - // конечный, пересортированный CSS-код - 'resorted' => null, - // если найдены expression, то эта переменная станет массивом, ячейки которого - // будут содержать код каждого найденного expression - 'expressions' => null, - // если найдены data uri, то эта переменная станет массивом... - 'datauri' => null, - // если найдены интерполированные переменные, то эта переменная станет массивом - 'interpolations' => null, - // Игнорируем комментарии - 'comments' => null, - 'inlinecomments' => null, - 'magicComments' => null, - // если найдены CSS-хаки мешающие парсить, то эта переменная станет массивом... - 'hacks' => null, - // если найдены комментарии содержащие { или } мешающие парсить, - // то эта переменная станет массивом. - 'braces' => null, - // если найдены entities мешающие парсить, то эта переменная станет массивом. - 'entities' => null - ), - - // В переменной $mode лежит режим работы с CSS-кодом. Возможны следующие значения: - // css-file - только CSS-код - // style-attribute - найден атрибут style="..." - // properties - не найдено фигурных скобок, зато присутствуют точки с запятой и двоеточия. - $mode = 'properties', - - $default_sort_order = '[ - "position", - "top", - "right", - "bottom", - "left", - "z-index", - "display", - "visibility", - "-webkit-flex-direction", - "-moz-flex-direction", - "-ms-flex-direction", - "-o-flex-direction", - "flex-direction", - "-webkit-flex-order", - "-moz-flex-order", - "-ms-flex-order", - "-o-flex-order", - "flex-order", - "-webkit-flex-pack", - "-moz-flex-pack", - "-ms-flex-pack", - "-o-flex-pack", - "flex-pack", - "float", - "clear", - "-webkit-flex-align", - "-moz-flex-align", - "-ms-flex-align", - "-o-flex-align", - "flex-align", - "overflow", - "-ms-overflow-x", - "-ms-overflow-y", - "overflow-x", - "overflow-y", - "clip", - "-webkit-box-sizing", - "-moz-box-sizing", - "box-sizing", - "margin", - "margin-top", - "margin-right", - "margin-bottom", - "margin-left", - "padding", - "padding-top", - "padding-right", - "padding-bottom", - "padding-left", - "min-width", - "min-height", - "max-width", - "max-height", - "width", - "height", - "outline", - "outline-width", - "outline-style", - "outline-color", - "outline-offset", - "border", - "border-spacing", - "border-collapse", - "border-width", - "border-style", - "border-color", - "border-top", - "border-top-width", - "border-top-style", - "border-top-color", - "border-right", - "border-right-width", - "border-right-style", - "border-right-color", - "border-bottom", - "border-bottom-width", - "border-bottom-style", - "border-bottom-color", - "border-left", - "border-left-width", - "border-left-style", - "border-left-color", - "-webkit-border-radius", - "-moz-border-radius", - "border-radius", - "-webkit-border-top-left-radius", - "-moz-border-radius-topleft", - "border-top-left-radius", - "-webkit-border-top-right-radius", - "-moz-border-radius-topright", - "border-top-right-radius", - "-webkit-border-bottom-right-radius", - "-moz-border-radius-bottomright", - "border-bottom-right-radius", - "-webkit-border-bottom-left-radius", - "-moz-border-radius-bottomleft", - "border-bottom-left-radius", - "-webkit-border-image", - "-moz-border-image", - "-o-border-image", - "border-image", - "-webkit-border-image-source", - "-moz-border-image-source", - "-o-border-image-source", - "border-image-source", - "-webkit-border-image-slice", - "-moz-border-image-slice", - "-o-border-image-slice", - "border-image-slice", - "-webkit-border-image-width", - "-moz-border-image-width", - "-o-border-image-width", - "border-image-width", - "-webkit-border-image-outset", - "-moz-border-image-outset", - "-o-border-image-outset", - "border-image-outset", - "-webkit-border-image-repeat", - "-moz-border-image-repeat", - "-o-border-image-repeat", - "border-image-repeat", - "-webkit-border-top-image", - "-moz-border-top-image", - "-o-border-top-image", - "border-top-image", - "-webkit-border-right-image", - "-moz-border-right-image", - "-o-border-right-image", - "border-right-image", - "-webkit-border-bottom-image", - "-moz-border-bottom-image", - "-o-border-bottom-image", - "border-bottom-image", - "-webkit-border-left-image", - "-moz-border-left-image", - "-o-border-left-image", - "border-left-image", - "-webkit-border-corner-image", - "-moz-border-corner-image", - "-o-border-corner-image", - "border-corner-image", - "-webkit-border-top-left-image", - "-moz-border-top-left-image", - "-o-border-top-left-image", - "border-top-left-image", - "-webkit-border-top-right-image", - "-moz-border-top-right-image", - "-o-border-top-right-image", - "border-top-right-image", - "-webkit-border-bottom-right-image", - "-moz-border-bottom-right-image", - "-o-border-bottom-right-image", - "border-bottom-right-image", - "-webkit-border-bottom-left-image", - "-moz-border-bottom-left-image", - "-o-border-bottom-left-image", - "border-bottom-left-image", - "background", - "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader", - "background-color", - "background-image", - "background-attachment", - "background-position", - "-ms-background-position-x", - "-ms-background-position-y", - "background-position-x", - "background-position-y", - "-webkit-background-clip", - "-moz-background-clip", - "background-clip", - "background-origin", - "-webkit-background-size", - "-moz-background-size", - "-o-background-size", - "background-size", - "background-repeat", - "box-decoration-break", - "-webkit-box-shadow", - "-moz-box-shadow", - "box-shadow", - "color", - "table-layout", - "caption-side", - "empty-cells", - "list-style", - "list-style-position", - "list-style-type", - "list-style-image", - "quotes", - "content", - "counter-increment", - "counter-reset", - "-ms-writing-mode", - "vertical-align", - "text-align", - "-webkit-text-align-last", - "-moz-text-align-last", - "-ms-text-align-last", - "text-align-last", - "text-decoration", - "text-emphasis", - "text-emphasis-position", - "text-emphasis-style", - "text-emphasis-color", - "text-indent", - "-ms-text-justify", - "text-justify", - "text-outline", - "text-transform", - "text-wrap", - "-ms-text-overflow", - "text-overflow", - "text-overflow-ellipsis", - "text-overflow-mode", - "text-shadow", - "white-space", - "word-spacing", - "-ms-word-wrap", - "word-wrap", - "-ms-word-break", - "word-break", - "-moz-tab-size", - "-o-tab-size", - "tab-size", - "-webkit-hyphens", - "-moz-hyphens", - "hyphens", - "letter-spacing", - "font", - "font-weight", - "font-style", - "font-variant", - "font-size-adjust", - "font-stretch", - "font-size", - "font-family", - "src", - "line-height", - "opacity", - "-ms-filter:\'progid:DXImageTransform.Microsoft.Alpha", - "filter:progid:DXImageTransform.Microsoft.Alpha(Opacity", - "-ms-interpolation-mode", - "-webkit-filter", - "-ms-filter", - "filter", - "resize", - "cursor", - "nav-index", - "nav-up", - "nav-right", - "nav-down", - "nav-left", - "-webkit-transition", - "-moz-transition", - "-ms-transition", - "-o-transition", - "transition", - "-webkit-transition-delay", - "-moz-transition-delay", - "-ms-transition-delay", - "-o-transition-delay", - "transition-delay", - "-webkit-transition-timing-function", - "-moz-transition-timing-function", - "-ms-transition-timing-function", - "-o-transition-timing-function", - "transition-timing-function", - "-webkit-transition-duration", - "-moz-transition-duration", - "-ms-transition-duration", - "-o-transition-duration", - "transition-duration", - "-webkit-transition-property", - "-moz-transition-property", - "-ms-transition-property", - "-o-transition-property", - "transition-property", - "-webkit-transform", - "-moz-transform", - "-ms-transform", - "-o-transform", - "transform", - "-webkit-transform-origin", - "-moz-transform-origin", - "-ms-transform-origin", - "-o-transform-origin", - "transform-origin", - "-webkit-animation", - "-moz-animation", - "-ms-animation", - "-o-animation", - "animation", - "-webkit-animation-name", - "-moz-animation-name", - "-ms-animation-name", - "-o-animation-name", - "animation-name", - "-webkit-animation-duration", - "-moz-animation-duration", - "-ms-animation-duration", - "-o-animation-duration", - "animation-duration", - "-webkit-animation-play-state", - "-moz-animation-play-state", - "-ms-animation-play-state", - "-o-animation-play-state", - "animation-play-state", - "-webkit-animation-timing-function", - "-moz-animation-timing-function", - "-ms-animation-timing-function", - "-o-animation-timing-function", - "animation-timing-function", - "-webkit-animation-delay", - "-moz-animation-delay", - "-ms-animation-delay", - "-o-animation-delay", - "animation-delay", - "-webkit-animation-iteration-count", - "-moz-animation-iteration-count", - "-ms-animation-iteration-count", - "-o-animation-iteration-count", - "animation-iteration-count", - "-webkit-animation-direction", - "-moz-animation-direction", - "-ms-animation-direction", - "-o-animation-direction", - "animation-direction", - "pointer-events", - "unicode-bidi", - "direction", - "-webkit-columns", - "-moz-columns", - "columns", - "-webkit-column-span", - "-moz-column-span", - "column-span", - "-webkit-column-width", - "-moz-column-width", - "column-width", - "-webkit-column-count", - "-moz-column-count", - "column-count", - "-webkit-column-fill", - "-moz-column-fill", - "column-fill", - "-webkit-column-gap", - "-moz-column-gap", - "column-gap", - "-webkit-column-rule", - "-moz-column-rule", - "column-rule", - "-webkit-column-rule-width", - "-moz-column-rule-width", - "column-rule-width", - "-webkit-column-rule-style", - "-moz-column-rule-style", - "column-rule-style", - "-webkit-column-rule-color", - "-moz-column-rule-color", - "column-rule-color", - "break-before", - "break-inside", - "break-after", - "page-break-before", - "page-break-inside", - "page-break-after", - "orphans", - "widows", - "-ms-zoom", - "zoom", - "max-zoom", - "min-zoom", - "user-zoom", - "orientation" - ]', - - $yandex_sort_order = '[ - [ - "position", - "z-index", - "top", - "right", - "bottom", - "left" - ], - [ - "display", - "visibility", - "float", - "clear", - "overflow", - "overflow-x", - "overflow-y", - "-ms-overflow-x", - "-ms-overflow-y", - "clip", - "zoom", - "flex-direction", - "flex-order", - "flex-pack", - "flex-align" - ], - [ - "-webkit-box-sizing", - "-moz-box-sizing", - "box-sizing", - "width", - "min-width", - "max-width", - "height", - "min-height", - "max-height", - "margin", - "margin-top", - "margin-right", - "margin-bottom", - "margin-left", - "padding", - "padding-top", - "padding-right", - "padding-bottom", - "padding-left" - ], - [ - "table-layout", - "empty-cells", - "caption-side", - "border-spacing", - "border-collapse", - "list-style", - "list-style-position", - "list-style-type", - "list-style-image" - ], - [ - "content", - "quotes", - "counter-reset", - "counter-increment", - "resize", - "cursor", - "nav-index", - "nav-up", - "nav-right", - "nav-down", - "nav-left", - "-webkit-transition", - "-moz-transition", - "-ms-transition", - "-o-transition", - "transition", - "-webkit-transition-delay", - "-moz-transition-delay", - "-ms-transition-delay", - "-o-transition-delay", - "transition-delay", - "-webkit-transition-timing-function", - "-moz-transition-timing-function", - "-ms-transition-timing-function", - "-o-transition-timing-function", - "transition-timing-function", - "-webkit-transition-duration", - "-moz-transition-duration", - "-ms-transition-duration", - "-o-transition-duration", - "transition-duration", - "-webkit-transition-property", - "-moz-transition-property", - "-ms-transition-property", - "-o-transition-property", - "transition-property", - "-webkit-transform", - "-moz-transform", - "-ms-transform", - "-o-transform", - "transform", - "-webkit-transform-origin", - "-moz-transform-origin", - "-ms-transform-origin", - "-o-transform-origin", - "transform-origin", - "-webkit-animation", - "-moz-animation", - "-ms-animation", - "-o-animation", - "animation", - "-webkit-animation-name", - "-moz-animation-name", - "-ms-animation-name", - "-o-animation-name", - "animation-name", - "-webkit-animation-duration", - "-moz-animation-duration", - "-ms-animation-duration", - "-o-animation-duration", - "animation-duration", - "-webkit-animation-play-state", - "-moz-animation-play-state", - "-ms-animation-play-state", - "-o-animation-play-state", - "animation-play-state", - "-webkit-animation-timing-function", - "-moz-animation-timing-function", - "-ms-animation-timing-function", - "-o-animation-timing-function", - "animation-timing-function", - "-webkit-animation-delay", - "-moz-animation-delay", - "-ms-animation-delay", - "-o-animation-delay", - "animation-delay", - "-webkit-animation-iteration-count", - "-moz-animation-iteration-count", - "-ms-animation-iteration-count", - "-o-animation-iteration-count", - "animation-iteration-count", - "-webkit-animation-iteration-count", - "-moz-animation-iteration-count", - "-ms-animation-iteration-count", - "-o-animation-iteration-count", - "animation-iteration-count", - "-webkit-animation-direction", - "-moz-animation-direction", - "-ms-animation-direction", - "-o-animation-direction", - "animation-direction", - "text-align", - "-webkit-text-align-last", - "-moz-text-align-last", - "-ms-text-align-last", - "text-align-last", - "vertical-align", - "white-space", - "text-decoration", - "text-emphasis", - "text-emphasis-color", - "text-emphasis-style", - "text-emphasis-position", - "text-indent", - "-ms-text-justify", - "text-justify", - "text-transform", - "letter-spacing", - "word-spacing", - "-ms-writing-mode", - "text-outline", - "text-transform", - "text-wrap", - "text-overflow", - "-ms-text-overflow", - "text-overflow-ellipsis", - "text-overflow-mode", - "-ms-word-wrap", - "word-wrap", - "word-break", - "-ms-word-break", - "-moz-tab-size", - "-o-tab-size", - "tab-size", - "-webkit-hyphens", - "-moz-hyphens", - "hyphens", - "pointer-events" - ], - [ - "opacity", - "filter:progid:DXImageTransform.Microsoft.Alpha(Opacity", - "-ms-filter:\'progid:DXImageTransform.Microsoft.Alpha", - "-ms-interpolation-mode", - "color", - "border", - "border-collapse", - "border-width", - "border-style", - "border-color", - "border-top", - "border-top-width", - "border-top-style", - "border-top-color", - "border-right", - "border-right-width", - "border-right-style", - "border-right-color", - "border-bottom", - "border-bottom-width", - "border-bottom-style", - "border-bottom-color", - "border-left", - "border-left-width", - "border-left-style", - "border-left-color", - "-webkit-border-radius", - "-moz-border-radius", - "border-radius", - "-webkit-border-top-left-radius", - "-moz-border-radius-topleft", - "border-top-left-radius", - "-webkit-border-top-right-radius", - "-moz-border-radius-topright", - "border-top-right-radius", - "-webkit-border-bottom-right-radius", - "-moz-border-radius-bottomright", - "border-bottom-right-radius", - "-webkit-border-bottom-left-radius", - "-moz-border-radius-bottomleft", - "border-bottom-left-radius", - "-webkit-border-image", - "-moz-border-image", - "-o-border-image", - "border-image", - "-webkit-border-image-source", - "-moz-border-image-source", - "-o-border-image-source", - "border-image-source", - "-webkit-border-image-slice", - "-moz-border-image-slice", - "-o-border-image-slice", - "border-image-slice", - "-webkit-border-image-width", - "-moz-border-image-width", - "-o-border-image-width", - "border-image-width", - "-webkit-border-image-outset", - "-moz-border-image-outset", - "-o-border-image-outset", - "border-image-outset", - "-webkit-border-image-repeat", - "-moz-border-image-repeat", - "-o-border-image-repeat", - "border-image-repeat", - "outline", - "outline-width", - "outline-style", - "outline-color", - "outline-offset", - "background", - "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader", - "background-color", - "background-image", - "background-repeat", - "background-attachment", - "background-position", - "background-position-x", - "-ms-background-position-x", - "background-position-y", - "-ms-background-position-y", - "-webkit-background-clip", - "-moz-background-clip", - "background-clip", - "background-origin", - "-webkit-background-size", - "-moz-background-size", - "-o-background-size", - "background-size", - "box-decoration-break", - "-webkit-box-shadow", - "-moz-box-shadow", - "box-shadow", - "-webkit-box-shadow", - "-moz-box-shadow", - "box-shadow", - "-webkit-box-shadow", - "-moz-box-shadow", - "box-shadow", - "-webkit-box-shadow", - "-moz-box-shadow", - "box-shadow", - "filter:progid:DXImageTransform.Microsoft.gradient", - "-ms-filter:\'progid:DXImageTransform.Microsoft.gradient", - "text-shadow" - ], - [ - "font", - "font-family", - "font-size", - "font-weight", - "font-style", - "font-variant", - "font-size-adjust", - "font-stretch", - "font-effect", - "font-emphasize", - "font-emphasize-position", - "font-emphasize-style", - "font-smooth", - "line-height" - ] - ]'; - - /** - * @param string css - * @param boolean debug, OPTIONAL - * @param json custom_sort_order JSON expected, OPTIONAL - * @return string|false - * - * @TODO: https://github.com/miripiruni/CSScomb/issues/21 - * - * Example: - * - * - * require_once 'PATH_TO_CSScomb/csscomb.php'; - * - * $c = new csscomb(); - * $result_code = $c->csscomb( - * 'div {margin-top:0; color: red; display: inline;}', - * false, - * $MY_JSON_SORT_ORDER - * ); - * - * - */ - function csscomb($css = '', $debug = false, $custom_sort_order = null) { - $this->output = $debug ? true : false; - - if ($css && is_string($css)) { - $this->code['original'] = $this->code['edited'] = $css; - $this->set_mode(); - $this->set_sort_order($custom_sort_order); - $this->preprocess(); - $this->parse_rules(); - $this->postprocess(); - return $this->end_of_process(); - } else { - return false; - } - } - - - /** - * Функция устанавливает $this->sort_order - * - * @param json_array {string/JSON} - * - */ - function set_sort_order($json_array = null) { - $this->sort_order = json_decode($this->default_sort_order); - - if ($json_array !== null) { - $custom_sort_order = json_decode($json_array); - if (is_array($custom_sort_order) AND count($custom_sort_order) > 0) { - $this->sort_order = $custom_sort_order; - } - } - - if ($json_array === 'yandex') { - $this->sort_order = json_decode($this->yandex_sort_order); - //switch(json_last_error()) { - //case JSON_ERROR_DEPTH: - //echo 'JSON parse error: Достигнута максимальная глубина стека'; - //break; - //case JSON_ERROR_STATE_MISMATCH: - //echo 'JSON parse error: Некорректные разряды или не совпадение режимов'; - //break; - //case JSON_ERROR_CTRL_CHAR: - //echo 'JSON parse error: Некорректный управляющий символ'; - //break; - //case JSON_ERROR_SYNTAX: - //echo 'JSON parse error: Синтаксическая ошибка, не корректный JSON'; - //break; - //} - } - } - - - /** - * Функция устанавливает $this->mode - * - * @TODO: а если и тег -
- -
'; - } - - if ($this->output === false) return $this->code['resorted']; - } - - - function log($before, $after) { - echo ' - -
'.$before.'';
-        echo '
'; - echo '
'; - echo ''.var_dump($after).'
'; - } - - - - /** - * Возвращает сквозной прядковый номер элемента двумерного массива так, как если бы этот массив был одномерным - * @param {string} - * @return {bool|int} - */ - private function get_through_number($value) { - $i = 0; - foreach ($this->sort_order as $property_group) { - foreach ($property_group as $key => $val) { - if ($val == $value) return $i; - else $i++; - } - } - return false; - } - - /** - * Разделяет свойства на группы пустой строкой - * Внимание: вызывать только когда есть разделение на группы, иначе вернет входной массив без изменений - * @param {array} - * @return {array} - */ - private function separate_property_group($properties) { - if (is_array($this->sort_order[0])) { // Если в настройках нет разбиения на группы, то выводим входной массив без изменений - foreach ($properties as $key => &$property) { - $property = preg_replace('@\n\s*?(\n\s*?)@ismx', '$1', $property); - $array = explode(':', $property); - $prop_name[$key] = trim($array[0]); - } - foreach ($this->sort_order as $group_num => $property_group) { // Перебираем группы свойств - $intersect = array_intersect($prop_name, $property_group); - if (count($intersect) > 0) { - $num = array_keys($intersect); - $last_key = null; - foreach ($num as $n) { - $last_key = $n; - } - if ($properties[$last_key] !== end($properties)) { - $properties[$last_key] = $properties[$last_key]."\n"; - } - } - } - } - return $properties; - } - -} - diff --git a/init.js b/init.js index a6aaf45..c438b0a 100644 --- a/init.js +++ b/init.js @@ -8,47 +8,33 @@ * Module dependencies. */ -var spawn = require('child_process').spawn; +var Comb = require('csscomb'); + +var COMPATIBLE_SCOPES = [ + 'plain.text', + 'css.source', + 'less.source', + 'sass.source' +]; /** * Hook up menu items. */ Hooks.addMenuItem('Actions/CSS/Sort via CSScomb', 'control-shift-c', function() { - var output = '', err = '', sel, text, comb, scope; + var output = '', err = '', sel, text, scope; Recipe.run(function(recipe) { sel = (!recipe.selection.length)? new Range(0, recipe.length) : recipe.selection; text = recipe.textInRange(sel); scope = Document.current().rootScope(); - if (!text || [ 'css.source', 'less.source', 'sass.source' ].indexOf(scope) === -1) { + if (!text || COMPATIBLE_SCOPES.indexOf(scope) === -1) { Alert.beep(); return; } - comb = spawn('php', [ __dirname + '/run.php', text ]); - - comb.stdout.on('data', function (data) { - output += data.toString('utf8'); - }); - - comb.stderr.on('data', function (data) { - err += data.toString('utf8'); - }); - - comb.on('exit', function (code) { - if (code !== 0) return undefined; - - if (err) { - Alert.show('Unable to sort via CSScomb.', err, [ 'OK' ]); - return; - } - - Recipe.run(function(r) { - r.replaceTextInRange(sel, output); - }); - }); + recipe.replaceTextInRange(sel, new Comb().processString(text)); return undefined; }); diff --git a/node_modules/.bin/csscomb b/node_modules/.bin/csscomb new file mode 120000 index 0000000..1f3257e --- /dev/null +++ b/node_modules/.bin/csscomb @@ -0,0 +1 @@ +../csscomb/bin/csscomb \ No newline at end of file diff --git a/node_modules/csscomb/.csscomb.json b/node_modules/csscomb/.csscomb.json new file mode 100644 index 0000000..883e1ac --- /dev/null +++ b/node_modules/csscomb/.csscomb.json @@ -0,0 +1,321 @@ +{ + "exclude": [ + ".git/**", + "node_modules/**" + ], + "always-semicolon": true, + "block-indent": true, + "colon-space": true, + "color-case": "lower", + "color-shorthand": true, + "combinator-space": true, + "element-case": "lower", + "eof-newline": true, + "leading-zero": false, + "remove-empty-rulesets": true, + "rule-indent": true, + "stick-brace": "\n", + "strip-spaces": true, + "unitless-zero": true, + "vendor-prefix-align": true, + "sort-order": [ + [ + "font", + "font-family", + "font-size", + "font-weight", + "font-style", + "font-variant", + "font-size-adjust", + "font-stretch", + "font-effect", + "font-emphasize", + "font-emphasize-position", + "font-emphasize-style", + "font-smooth", + "line-height" + ], + [ + "position", + "z-index", + "top", + "right", + "bottom", + "left" + ], + [ + "display", + "visibility", + "float", + "clear", + "overflow", + "overflow-x", + "overflow-y", + "-ms-overflow-x", + "-ms-overflow-y", + "clip", + "zoom", + "flex-direction", + "flex-order", + "flex-pack", + "flex-align" + ], + [ + "-webkit-box-sizing", + "-moz-box-sizing", + "box-sizing", + "width", + "min-width", + "max-width", + "height", + "min-height", + "max-height", + "margin", + "margin-top", + "margin-right", + "margin-bottom", + "margin-left", + "padding", + "padding-top", + "padding-right", + "padding-bottom", + "padding-left" + ], + [ + "table-layout", + "empty-cells", + "caption-side", + "border-spacing", + "border-collapse", + "list-style", + "list-style-position", + "list-style-type", + "list-style-image" + ], + [ + "content", + "quotes", + "counter-reset", + "counter-increment", + "resize", + "cursor", + "-webkit-user-select", + "-moz-user-select", + "-ms-user-select", + "user-select", + "nav-index", + "nav-up", + "nav-right", + "nav-down", + "nav-left", + "-webkit-transition", + "-moz-transition", + "-ms-transition", + "-o-transition", + "transition", + "-webkit-transition-delay", + "-moz-transition-delay", + "-ms-transition-delay", + "-o-transition-delay", + "transition-delay", + "-webkit-transition-timing-function", + "-moz-transition-timing-function", + "-ms-transition-timing-function", + "-o-transition-timing-function", + "transition-timing-function", + "-webkit-transition-duration", + "-moz-transition-duration", + "-ms-transition-duration", + "-o-transition-duration", + "transition-duration", + "-webkit-transition-property", + "-moz-transition-property", + "-ms-transition-property", + "-o-transition-property", + "transition-property", + "-webkit-transform", + "-moz-transform", + "-ms-transform", + "-o-transform", + "transform", + "-webkit-transform-origin", + "-moz-transform-origin", + "-ms-transform-origin", + "-o-transform-origin", + "transform-origin", + "-webkit-animation", + "-moz-animation", + "-ms-animation", + "-o-animation", + "animation", + "-webkit-animation-name", + "-moz-animation-name", + "-ms-animation-name", + "-o-animation-name", + "animation-name", + "-webkit-animation-duration", + "-moz-animation-duration", + "-ms-animation-duration", + "-o-animation-duration", + "animation-duration", + "-webkit-animation-play-state", + "-moz-animation-play-state", + "-ms-animation-play-state", + "-o-animation-play-state", + "animation-play-state", + "-webkit-animation-timing-function", + "-moz-animation-timing-function", + "-ms-animation-timing-function", + "-o-animation-timing-function", + "animation-timing-function", + "-webkit-animation-delay", + "-moz-animation-delay", + "-ms-animation-delay", + "-o-animation-delay", + "animation-delay", + "-webkit-animation-iteration-count", + "-moz-animation-iteration-count", + "-ms-animation-iteration-count", + "-o-animation-iteration-count", + "animation-iteration-count", + "-webkit-animation-direction", + "-moz-animation-direction", + "-ms-animation-direction", + "-o-animation-direction", + "animation-direction", + "text-align", + "-webkit-text-align-last", + "-moz-text-align-last", + "-ms-text-align-last", + "text-align-last", + "vertical-align", + "white-space", + "text-decoration", + "text-emphasis", + "text-emphasis-color", + "text-emphasis-style", + "text-emphasis-position", + "text-indent", + "-ms-text-justify", + "text-justify", + "letter-spacing", + "word-spacing", + "-ms-writing-mode", + "text-outline", + "text-transform", + "text-wrap", + "text-overflow", + "-ms-text-overflow", + "text-overflow-ellipsis", + "text-overflow-mode", + "-ms-word-wrap", + "word-wrap", + "word-break", + "-ms-word-break", + "-moz-tab-size", + "-o-tab-size", + "tab-size", + "-webkit-hyphens", + "-moz-hyphens", + "hyphens", + "pointer-events" + ], + [ + "opacity", + "filter:progid:DXImageTransform.Microsoft.Alpha(Opacity", + "-ms-filter:\\'progid:DXImageTransform.Microsoft.Alpha", + "-ms-interpolation-mode", + "color", + "border", + "border-width", + "border-style", + "border-color", + "border-top", + "border-top-width", + "border-top-style", + "border-top-color", + "border-right", + "border-right-width", + "border-right-style", + "border-right-color", + "border-bottom", + "border-bottom-width", + "border-bottom-style", + "border-bottom-color", + "border-left", + "border-left-width", + "border-left-style", + "border-left-color", + "-webkit-border-radius", + "-moz-border-radius", + "border-radius", + "-webkit-border-top-left-radius", + "-moz-border-radius-topleft", + "border-top-left-radius", + "-webkit-border-top-right-radius", + "-moz-border-radius-topright", + "border-top-right-radius", + "-webkit-border-bottom-right-radius", + "-moz-border-radius-bottomright", + "border-bottom-right-radius", + "-webkit-border-bottom-left-radius", + "-moz-border-radius-bottomleft", + "border-bottom-left-radius", + "-webkit-border-image", + "-moz-border-image", + "-o-border-image", + "border-image", + "-webkit-border-image-source", + "-moz-border-image-source", + "-o-border-image-source", + "border-image-source", + "-webkit-border-image-slice", + "-moz-border-image-slice", + "-o-border-image-slice", + "border-image-slice", + "-webkit-border-image-width", + "-moz-border-image-width", + "-o-border-image-width", + "border-image-width", + "-webkit-border-image-outset", + "-moz-border-image-outset", + "-o-border-image-outset", + "border-image-outset", + "-webkit-border-image-repeat", + "-moz-border-image-repeat", + "-o-border-image-repeat", + "border-image-repeat", + "outline", + "outline-width", + "outline-style", + "outline-color", + "outline-offset", + "background", + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader", + "background-color", + "background-image", + "background-repeat", + "background-attachment", + "background-position", + "background-position-x", + "-ms-background-position-x", + "background-position-y", + "-ms-background-position-y", + "-webkit-background-clip", + "-moz-background-clip", + "background-clip", + "background-origin", + "-webkit-background-size", + "-moz-background-size", + "-o-background-size", + "background-size", + "box-decoration-break", + "-webkit-box-shadow", + "-moz-box-shadow", + "box-shadow", + "filter:progid:DXImageTransform.Microsoft.gradient", + "-ms-filter:\\'progid:DXImageTransform.Microsoft.gradient", + "text-shadow" + ] + ] +} diff --git a/node_modules/csscomb/.jscs.json b/node_modules/csscomb/.jscs.json new file mode 100644 index 0000000..2b0a076 --- /dev/null +++ b/node_modules/csscomb/.jscs.json @@ -0,0 +1,76 @@ +{ + "excludeFiles": [ + "node_modules/**" + ], + "requireCurlyBraces": [ + "else", + "while", + "do" + ], + "requireSpaceAfterKeywords": [ + "if", + "else", + "for", + "while", + "do", + "switch", + "return", + "catch" + ], + "requireSpacesInFunctionExpression": { "beforeOpeningCurlyBrace": true }, + "disallowSpacesInFunctionExpression": { "beforeOpeningRoundBrace": true }, + "disallowMultipleVarDecl": true, + "disallowLeftStickedOperators": [ + "?", + "+", + "-", + "/", + "*", + "=", + "==", + "===", + "!=", + "!==", + ">", + ">=", + "<", + "<=" + ], + "disallowRightStickedOperators": [ + "?", + "+", + "/", + "*", + ":", + ",", + "=", + "==", + "===", + "!=", + "!==", + ">", + ">=", + "<", + "<=" + ], + "requireRightStickedOperators": ["!"], + "requireLeftStickedOperators": [","], + "disallowImplicitTypeConversion": [ + "numeric", + "boolean", + "binary", + "string" + ], + "disallowKeywords": ["with"], + "disallowKeywordsOnNewLine": ["else", "catch"], + "requireLineFeedAtFileEnd": true, + "validateJSDoc": { + "checkParamNames": true, + "checkRedundantParams": true, + "requireParamTypes": true + }, + "requireSpacesInsideObjectBrackets": "all", + "disallowSpacesInsideArrayBrackets": true, + "disallowSpaceAfterObjectKeys": true, + "disallowQuotedKeysInObjects": true +} diff --git a/node_modules/csscomb/.jshint-groups.js b/node_modules/csscomb/.jshint-groups.js new file mode 100644 index 0000000..70b4868 --- /dev/null +++ b/node_modules/csscomb/.jshint-groups.js @@ -0,0 +1,35 @@ +module.exports = { + options: { + eqeqeq: true, + evil: true, + expr: true, + forin: true, + immed: true, + indent: 4, + latedef: true, + maxdepth: 5, + maxlen: 120, + maxparams: 4, + newcap: true, + noarg: true, + noempty: true, + nonew: true, + quotmark: 'single', + trailing: true, + undef: true, + unused: true + }, + groups: { + js: { + options: { node: true }, + includes: ['lib/**/*.js'] + }, + test: { + options: { + node: true, + predef: ['describe', 'beforeEach', 'it'] + }, + includes: ['test/*.js'] + } + } +}; diff --git a/node_modules/csscomb/.travis.yml b/node_modules/csscomb/.travis.yml new file mode 100644 index 0000000..b2118ad --- /dev/null +++ b/node_modules/csscomb/.travis.yml @@ -0,0 +1,10 @@ +language: node_js + +node_js: + - "0.8" + - "0.10" + - "0.11" + +matrix: + allow_failures: + - node_js: "0.11" diff --git a/node_modules/csscomb/CHANGELOG.md b/node_modules/csscomb/CHANGELOG.md new file mode 100644 index 0000000..58c8cb5 --- /dev/null +++ b/node_modules/csscomb/CHANGELOG.md @@ -0,0 +1,94 @@ +# Changelog + +## 1.0.0 - 2013-11-06 +- Option: vendor-prefix-align +- Dependencies updated +- Fixed options order in readme + +## 0.1.0 - 2013-10-11 +- CLI: lint mode + +## 0.0.15 - 2013-10-03 +- Option: remove-empty-rulesets (#67) +- Option colon-space expanded +- Some refactoring and fixes + +## 0.0.14 - 2013-09-12 +- Option: eof-newline (#55) +- Verbose option (#62) +- Some refactoring + +## 0.0.13 - 2013-09-12 +- Fixed failing on empty files (#66) + +## 0.0.12 - 2013-09-11 +- Option: combinator-space +- Readme update +- Some CLI fixes +- Contributor added: @anton-rudeshko + +## 0.0.11 - 2013-09-10 +- Option: element-case +- Fixed block-indent bug with space after at-rule opening brace +- Fixed JSDoc +- Fixed colon-space description + +## 0.0.10 - 2013-09-06 +- Option: color-case +- Option: color-shorthand +- Option: leading-zero +- Option: unitless-zero +- Option update: colon-space +- Contributors added: @kizu and @ignovak +- Readme updated +- Licence added +- Contributing info added +- Changelog added + +## 0.0.9 - 2013-08-28 +- Option: sort-order +- Sort order config fix +- JSCS version and config update +- jshint config fix +- Some codestyle fixes + +## 0.0.8 - 2013-08-22 +- !!! Now using Gonzales instead of CSSP +- Option: block-indent +- Option: rule-indent +- Added few links to README +- Added some debug info +- Fixed default sort order +- Fixed path processing bug +- Fixed stick-brace option + +## 0.0.7 - 2013-08-09 +- jshint config fix +- Codestyle fix for always-semicolon +- Integral test fix +- Removed old php code + +## 0.0.6 - 2013-08-08 +- Option: always-semicolon + +## 0.0.5 - 2013-08-08 +- Fix for value setting +- Bugfix for stick-brace +- Added integral test + +## 0.0.4 - 2013-08-07 +- Some refactoring +- Tests added + +## 0.0.3 - 2013-08-05 +- Option: colon-space +- Option: stick-brace +- Moved to github/csscomb/csscomb.js + +## 0.0.2 - 2013-08-04 +- Option: strip-spaces - fix + +## 0.0.1 - 2013-08-03 +- Initial release +- Option: strip spaces +- Travis support diff --git a/node_modules/csscomb/CONTRIBUTE.md b/node_modules/csscomb/CONTRIBUTE.md new file mode 100644 index 0000000..93ec341 --- /dev/null +++ b/node_modules/csscomb/CONTRIBUTE.md @@ -0,0 +1,65 @@ +# Contributing to CSSComb + + +## Pull requests + +1. [Fork](http://help.github.com/fork-a-repo/) the project, clone your fork, and configure the remotes: +```bash +# Clone your fork of the repo into the current directory +git clone https://github.com//csscomb.js +# Navigate to the newly cloned directory +cd csscomb.js +# Assign the original repo to a remote called `upstream` +git remote add upstream https://github.com/csscomb/csscomb.js +``` + +2. If you cloned a while ago, get the latest changes from upstream: +```bash +git checkout dev +git pull upstream dev +``` +**IMPORTANT**: We are using `dev` branch for development, not `master`. + +3. Create a topic branch for your feature, change, or fix: +```bash +git checkout -b +``` + +4. Patches and features will not be accepted without tests. + Run `npm test` to check that all tests pass after you've made changes. + +5. Update the `README.md` if there were corresponding changes or new options. + +6. Locally rebase the upstream development branch into your topic branch: +```bash +git pull --rebase upstream dev +``` + +7. Push your topic branch up to your fork: +```bash +git push origin +``` + +8. [Open a Pull Request](https://help.github.com/articles/using-pull-requests/) to a `dev` branch with a clear title and description. + + +## Maintainers + +### Submitting changes + +1. All non-trivial changes should be put up for review using GitHub Pull Requests. +2. Your change should not be merged into `dev`, without at least one "OK" comment + from another maintainer/collaborator on the project. +3. Once a feature branch has been merged into its target branch, please delete + the feature branch from the remote repository. + +### Releasing a new version + +1. Include all new functional changes in the CHANGELOG. +2. Use a dedicated commit to increment the version. The version needs to be + added to the `CHANGELOG.md` (inc. date) and the `package.json`. +3. The commit message must be of `v0.0.0` format. +4. Merge `dev` into `master`. +5. Create a tag for the version: `git tag v0.0.0`. +6. Push the changes and tags to GitHub: `git push origin dev master v0.0.0`. +7. Publish the new version to npm: `npm publish`. diff --git a/node_modules/csscomb/LICENSE b/node_modules/csscomb/LICENSE new file mode 100644 index 0000000..a868d2a --- /dev/null +++ b/node_modules/csscomb/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) +Copyright © 2013 Mikhail Troshev, http://mishanga.pro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the “Software”), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/csscomb/README.md b/node_modules/csscomb/README.md new file mode 100644 index 0000000..9adcfc2 --- /dev/null +++ b/node_modules/csscomb/README.md @@ -0,0 +1,469 @@ +# CSSComb [![CSSComb](logo.png)](http://csscomb.com/) +[![Build Status](https://secure.travis-ci.org/csscomb/csscomb.js.png?branch=master)](http://travis-ci.org/csscomb/csscomb.js) + +CSSComb is a coding style formatter for CSS. +You can easily write your own [configuration](#configuration) to make your style sheets beautiful and consistent. + +The main feature is the [sorting properties](#sort-order) in specific order. +It was inspired by the same-named [@miripiruni](https://github.com/miripiruni)'s [PHP-based tool](https://github.com/csscomb/csscomb). +This is the new JavaScript version, based on powerful CSS parser [Gonzales](https://github.com/css/gonzales). + +## Installation + +```bash +npm install csscomb +``` + +To run `csscomb`, you can use the following command from the project root: + +```bash +./node_modules/.bin/csscomb path[ path[...]] +``` + +```bash +./node_modules/.bin/csscomb --help + + Usage: csscomb [options] + + Options: + + -h, --help output usage information + -V, --version output the version number + -c, --config [path] configuration file path + -l, --lint in case some fixes needed returns an error +``` + +## Configuration + +`csscomb` is configured using [.csscomb.json](https://github.com/csscomb/csscomb.js/blob/master/.csscomb.json) file, located in the project root. + +Example configuration: +```json +{ + "exclude": ["node_modules/**"], + "verbose": true, + + "always-semicolon": true, + "block-indent": true, + "colon-space": true, + "color-case": "lower", + "color-shorthand": true, + "element-case": "lower", + "eof-newline": true, + "leading-zero": false, + "remove-empty-rulesets": true, + "rule-indent": true, + "stick-brace": true, + "strip-spaces": true, + "unitless-zero": true, + "vendor-prefix-align": true +} +``` + +## Options + +### exclude + +Available values: `{String[]}` + +Array of [Ant path patterns](http://ant.apache.org/manual/dirtasks.html#patterns) to exclude. + +Example: `{ "exclude": ["node_modules/**"] }` - exclude all files and directories under `node_modules` dir. + +### verbose + +Available value: `{Boolean}` `true` + +Config mode: `{ "verbose": true }` +```bash +$ ./bin/csscomb ./test +✓ test/integral.origin.css + test/integral.expect.css + +2 files processed +1 file fixed +96 ms spent +``` + +CLI mode: +```bash +$ ./bin/csscomb ./test --verbose +$ ./bin/csscomb ./test -v +``` + +### always-semicolon + +Available value: `{Boolean}` `true` + +Example: `{ "always-semicolon": true }` + +```css +/* before */ +a { color: red } + +/* after */ +a { color: red; } +``` + +### block-indent + +**Note**: better to use with [rule-indent](#rule-indent) + +Available values: + * `{Boolean}` `true` (means 4 spaces) + * `{Number}` of spaces + * `{String}` of whitespace characters (`/[ \t]+/`) + +Example: `{ "block-indent": 2 }` + +```css +/* before */ + a { color: red } + @media all { a { color: green } } + +/* after */ +a { color: red +} +@media all { + a { color: green + } +} +``` + +### colon-space + +Available values: + * `{Boolean}` `true` (means `after`) or `false` (no whitespace at all) + * `{String}`: `before`, `after`, `both` or any combination of whitespaces + and/or a colon (` `, `: `, `\t:\n\t` etc.) + * `{Array}` with two `{String}` values: for setting left and right whitespace around a colon + +Example: `{ "colon-space": true }` + +```css +/* before */ +a { color:red } + +/* after */ +a { color: red } +``` + +Example: `{ "colon-space": ":\n\t\t" }` + +```css +/* before */ +a { + color: red; +} + +/* after */ +a { + color: + red; +} +``` + +Example: `{ "colon-space": "" }` + +```css +/* before */ +a { color: red } + +/* after */ +a { color:red } +``` + +Example: `{ "colon-space": ["\t", "\t"] }` + +```css +/* before */ +a { color: red } + +/* after */ +a { color : red } +``` + +### color-case + +Available values: `{String}` `lower` or `upper` + +Example: `{ "color-case": "lower" }` + +```css +/* before */ +a { color: #FFF } + +/* after */ +a { color: #fff } +``` + +### color-shorthand + +Available values: `{Boolean}` `true` or `false` + +Example: `{ "color-shorthand": true }` + +```css +/* before */ +b { color: #ffcc00 } + +/* after */ +b { color: #fc0 } +``` + +### combinator-space + +Available values: + * `{Boolean}`: `true` sets one space, `false` removes the spaces. + * `{String}`: any combination of whitespaces. + * `{Array}` with two `{String}` values: for setting left and right whitespace. + +Example: `{ "combinator-space": true }` + +```css +/* before */ +a>b { color: red } + +/* after */ +a > b { color: red } +``` + +Example: `{ "combinator-space": "" }` + +```css +/* before */ +a > b { color: red } + +/* after */ +a>b { color: red } +``` + +Example: `{ "combinator-space": [" ", "\n"] }` + +```css +/* before */ +a>b { color: red } + +/* after */ +a > +b { color: red } +``` + +### element-case + +Available values: `{String}` `lower` or `upper` + +Example: `{ "element-case": "upper" }` + +```css +/* before */ +li > a { color: red } + +/* after */ +LI > A { color: red } +``` + +### eof-newline + +Available values: `{Boolean}` `true` or `false` + +Example: `{ "eof-newline": true }` + +`a { color: red }` → `a { color: red }\n` + +Example: `{ "eof-newline": false }` + +`a { color: red }\n` → `a { color: red }` + +### leading-zero + +Available values: `{Boolean}` `true` or `false` + +Example: `{ "leading-zero": false }` + +```css +/* before */ +p { padding: 0.5em } + +/* after */ +p { padding: .5em } +``` + +### remove-empty-rulesets + +Available values: `{Boolean}` `true` + +Example: `{ "remove-empty-rulesets": true }` - remove rulesets that have no declarations or comments. + +`a { color: red; } p { /* hey */ } b { }` → `a { color: red; } p { /* hey */ } ` + +### rule-indent + +**Note**: better to use with [block-indent](#block-indent) + +Available values: + * `{Boolean}` `true` (means 4 spaces) + * `{Number}` of spaces + * `{String}` of whitespace characters (`/[ \t]+/`) + +Example: `{ "rule-indent": 2 }` + +```css +/* before */ +a { color:red; margin:0 } + +/* after */ +a { + color:red; + margin:0 } +``` + +### sort-order + +**Note**: you can use an example of [.csscomb.json](https://github.com/csscomb/csscomb.js/blob/master/.csscomb.json) to set your own sort order + +Available values: + * `{Array}` of rules + * `{Array}` of arrays of rules for groups separation + +Example: `{ "sort-order": [ "margin", "padding" ] }` + +```css +/* before */ +p { + padding: 0; + margin: 0; +} + +/* after */ +p { + margin: 0; + padding: 0; +} +``` + +Example: `{ "sort-order": [ [ "margin", "padding" ], [ "border", "background" ] ] }` + +```css +/* before */ +p { + background: none; + border: 0; + margin: 0; + padding: 0; +} + +/* after */ +p { + margin: 0; + padding: 0; + + border: 0; + background: none; +} +``` + +### stick-brace + +Available values: + * `{Boolean}` `true` (means 1 space) + * `{Number}` of spaces + * `{String}` of whitespace characters (`/[ \t\n]+/`) + +Example: `{ "stick-brace": "\n" }` + +```css +/* before */ +a { color:red } + +/* after */ +a +{ color:red } +``` + +### strip-spaces + +Available value: `{Boolean}` `true` + +Example: `{ "strip-spaces": true }` + +`a { color: red } \n \n \n` → `a { color: red }\n` + +`a { color: red }\t` → `a { color: red }` + +### unitless-zero + +Available value: `{Boolean}` `true` + +Example: `{ "unitless-zero": true }` + +```css +/* before */ +img { border: 0px } + +/* after */ +img { border: 0 } +``` + +### vendor-prefix-align + +Available value: `{Boolean}` `true` + +Example: `{ "vendor-prefix-align": true }` + +```css +/* before */ +a +{ + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + background: -webkit-linear-gradient(top, #fff 0, #eee 100%); + background: -moz-linear-gradient(top, #fff 0, #eee 100%); + background: linear-gradient(to bottom, #fff 0, #eee 100%); +} + +/* after */ +a +{ + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + background: -webkit-linear-gradient(top, #fff 0, #eee 100%); + background: -moz-linear-gradient(top, #fff 0, #eee 100%); + background: linear-gradient(to bottom, #fff 0, #eee 100%); +} +``` + +## Tests + +Run `npm test` for tests. + +## Contributing + +Anyone and everyone is welcome to contribute. Please take a moment to +review the [guidelines for contributing](CONTRIBUTE.md). + +## Authors + +[@mishanga](https://github.com/mishanga) + +Thanks for assistance and contributions: + +[@miripiruni](https://github.com/miripiruni), +[@puzankov](https://github.com/puzankov), +[@L0stSoul](https://github.com/L0stSoul), +[@ignovak](https://github.com/ignovak), +[@kizu](https://github.com/kizu), +[@anton-rudeshko](https://github.com/anton-rudeshko), +[@mishaberezin](https://github.com/mishaberezin) + +## License + +This software is released under the terms of the [MIT license](https://github.com/csscomb/csscomb.js/blob/master/LICENSE). + +## Other projects +* https://github.com/senchalabs/cssbeautify +* https://github.com/css/gonzales +* https://github.com/css/csso +* https://github.com/nzakas/parser-lib diff --git a/node_modules/csscomb/bin/csscomb b/node_modules/csscomb/bin/csscomb new file mode 100755 index 0000000..4ed1172 --- /dev/null +++ b/node_modules/csscomb/bin/csscomb @@ -0,0 +1,2 @@ +#!/usr/bin/env node +require('../lib/cli'); diff --git a/node_modules/csscomb/lib/cli.js b/node_modules/csscomb/lib/cli.js new file mode 100644 index 0000000..0afd8fe --- /dev/null +++ b/node_modules/csscomb/lib/cli.js @@ -0,0 +1,57 @@ +/** + * Command line implementation for CSSComb + * + * Usage example: + * ./node_modules/.bin/csscomb [options] file1 [dir1 [fileN [dirN]]] + */ +var fs = require('fs'); +var program = require('commander'); +var vow = require('vow'); +var Comb = require('./csscomb'); + +program + .version(require('../package.json').version) + .usage('[options] ') + .option('-v, --verbose', 'verbose mode') + .option('-c, --config [path]', 'configuration file path') + .option('-l, --lint', 'in case some fixes needed returns an error') + .parse(process.argv); + +if (!program.args.length) { + console.log('No input paths specified'); + program.help(); +} + +var configPath = program.config || (process.cwd() + '/.csscomb.json'); + +if (fs.existsSync(configPath)) { + var comb = new Comb(); + var config = require(configPath); + + console.time('spent'); + + config.verbose = program.verbose === true || config.verbose; + config.lint = program.lint; + + comb.configure(config); + + vow.all(program.args.map(comb.processPath.bind(comb))) + .then(function() { + if (config.verbose) { + console.log(''); + console.log(comb.processed + ' file' + (comb.processed === 1 ? '' : 's') + ' processed'); + console.log(comb.changed + ' file' + (comb.changed === 1 ? '' : 's') + ' fixed'); + console.timeEnd('spent'); + } + if (config.lint && comb.tbchanged) { + process.exit(1); + } + }) + .fail(function(e) { + console.log('stack: ', e.stack); + process.exit(1); + }); +} else { + console.log('Configuration file ' + configPath + ' was not found.'); + process.exit(1); +} diff --git a/node_modules/csscomb/lib/csscomb.js b/node_modules/csscomb/lib/csscomb.js new file mode 100644 index 0000000..937b966 --- /dev/null +++ b/node_modules/csscomb/lib/csscomb.js @@ -0,0 +1,227 @@ +var gonzales = require('gonzales'); +var minimatch = require('minimatch'); +var vow = require('vow'); +var vfs = require('vow-fs'); +var doNothing = function() {}; + +/** + * Starts Code Style processing process. + * + * @constructor + * @name Comb + */ +var Comb = function() { + this._options = [ + 'remove-empty-rulesets', + 'always-semicolon', + 'color-case', + 'color-shorthand', + 'element-case', + 'leading-zero', + 'strip-spaces', + 'eof-newline', + 'stick-brace', + 'colon-space', + 'combinator-space', + 'rule-indent', + 'block-indent', + 'unitless-zero', + 'sort-order', + 'vendor-prefix-align' + ]; + this._exclude = null; +}; + +Comb.prototype = { + + /** + * Loads configuration from JSON. + * Activates and configures required options. + * + * @param {Object} config + */ + configure: function(config) { + this._handlers = []; + this._options.forEach(function(option) { + if (typeof config[option] === 'undefined') return; + + try { + var handler = require('./options/' + option).setValue(config[option]); + handler && this._handlers.push(handler); + } catch (e) { + console.warn('Error loading "%s" handler: %s', option, e.message); + } + }, this); + + this._exclude = (config.exclude || []).map(function(pattern) { + return new minimatch.Minimatch(pattern); + }); + + this.processed = 0; + this.tbchanged = 0; + this.changed = 0; + this._verbose = config.verbose; + this._lint = config.lint; + }, + + /** + * Processes stylesheet tree node. + * + * @param {Array} tree Parsed tree + * @returns {Array} + */ + processTree: function(tree) { + + // We walk across complete tree for each handler, + // because we need strictly maintain order in which handlers work, + // despite fact that handlers work on different level of the tree. + this._handlers.forEach(function(handler) { + this.processNode(['tree', tree], 0, handler); + }, this); + return tree; + }, + + /** + * Processes tree node. + * @param {Array} node Tree node + * @param {Number} level Indent level + */ + processNode: function(node, level, handler) { + node.forEach(function(node) { + if (!Array.isArray(node)) return; + + var nodeType = node.shift(); + handler.process(nodeType, node, level); + node.unshift(nodeType); + + if (nodeType === 'atrulers') level++; + + this.processNode(node, level, handler); + }, this); + }, + + /** + * Process file provided with a string. + * @param {String} text + * @param {String} [filename] + */ + processString: function(text, filename) { + if (!text) return text; + var tree; + var string = JSON.stringify; + try { + tree = gonzales.srcToCSSP(text); + } catch (e) { + throw new Error('Parsing error at ' + filename + ': ' + e.message); + } + if (typeof tree === 'undefined') { + throw new Error('Undefined tree at ' + filename + ': ' + string(text) + ' => ' + string(tree)); + } + tree = this.processTree(tree); + return gonzales.csspToSrc(tree); + }, + + /** + * Process single file. + * + * @param {String} path + * @returns {Promise} + */ + processFile: function(path) { + var _this = this; + if (this._shouldProcess(path) && path.match(/\.css$/)) { + return vfs.read(path, 'utf8').then(function(data) { + var processedData = _this.processString(data, path); + var changed = data !== processedData; + var lint = _this._lint; + + var tick = changed ? (lint ? '!' : '✓') : ' '; + var message = _this._verbose ? console.log.bind(null, tick, path) : doNothing; + + _this.processed++; + changed && _this.tbchanged++; + + if (!changed || lint) { + message(); + } else { + return vfs.write(path, processedData, 'utf8').then(function() { + _this.changed++; + message(); + }); + } + }); + } + return null; + }, + + /** + * Process directory recursively. + * + * @param {String} path + * @returns {Promise} + */ + processDirectory: function(path) { + var _this = this; + return vfs.listDir(path).then(function(filenames) { + return vow.all(filenames.map(function(filename) { + var fullname = path + '/' + filename; + if (_this._shouldProcess(fullname)) { + return vfs.stat(fullname).then(function(stat) { + if (stat.isDirectory()) { + return _this.processDirectory(fullname); + } else if (fullname.match(/\.css$/)) { + return vow.when(_this.processFile(fullname)).then(function(errors) { + if (errors) return errors; + }); + } + }); + } + })).then(function(results) { + return [].concat.apply([], results); + }); + }); + }, + + /** + * Process directory or file. + * + * @param {String} path + */ + processPath: function(path) { + path = path.replace(/\/$/, ''); + var _this = this; + return vfs.exists(path).then(function(exists) { + if (exists) { + return vfs.stat(path).then(function(stat) { + if (stat.isDirectory()) { + return _this.processDirectory(path); + } else { + return vow.when(_this.processFile(path)).then(function(errors) { + if (errors) return [errors]; + return; + }); + } + }); + } else { + throw new Error('Path ' + path + ' was not found.'); + } + }); + }, + + /** + * Returns true if specified path is not in excluded list. + * + * @returns {Boolean} + */ + _shouldProcess: function(path) { + path = path.replace(/^\.\//, ''); + var exclude = this._exclude; + for (var i = exclude.length; i--;) { + if (exclude[i].match(path)) return false; + } + return true; + } + +}; + +module.exports = Comb; diff --git a/node_modules/csscomb/lib/options/always-semicolon.js b/node_modules/csscomb/lib/options/always-semicolon.js new file mode 100644 index 0000000..c0a3209 --- /dev/null +++ b/node_modules/csscomb/lib/options/always-semicolon.js @@ -0,0 +1,42 @@ +module.exports = { + + /** + * Sets handler value. + * + * @param {String|Boolean} value Option value + * @returns {Object|undefined} + */ + setValue: function(value) { + this._value = value === true; + if (!this._value) return; + return this; + }, + + /** + * Processes tree node. + * @param {String} nodeType + * @param {node} node + */ + process: function(nodeType, node) { + if (nodeType === 'block') { + for (var i = node.length; i--;) { + var nodeItem = node[i]; + var type = nodeItem[0]; + var value = nodeItem[2]; + + if (type === 'decldelim') break; + + if (type === 'declaration') { + var space = []; + for (var j = value.length; j--;) { + if (value[j][0] !== 's' && value[j][0] !== 'comment') break; + space.unshift(value.splice(j)[0]); + } + node.splice.apply(node, [i + 1, 0, ['decldelim']].concat(space)); + break; + } + } + } + } + +}; diff --git a/node_modules/csscomb/lib/options/block-indent.js b/node_modules/csscomb/lib/options/block-indent.js new file mode 100644 index 0000000..06e2ee0 --- /dev/null +++ b/node_modules/csscomb/lib/options/block-indent.js @@ -0,0 +1,74 @@ +module.exports = { + + /** + * Sets handler value. + * + * @param {String|Number|Boolean} value Option value + * @returns {Object|undefined} + */ + setValue: function(value) { + delete this._value; + if (value === true) this._value = ' '; + if (typeof value === 'number' && value === Math.abs(Math.round(value))) + this._value = new Array(value + 1).join(' '); + if (typeof value === 'string' && value.match(/^[ \t]+$/)) this._value = value; + if (typeof this._value === 'string') return this; + }, + + /** + * Processes tree node. + * @param {String} nodeType + * @param {node} node + */ + process: function(nodeType, node, level) { + var value; + var space; + + // Add right space before closing brace + if (nodeType === 'atrulers' || nodeType === 'block') { + value = '\n' + new Array(level + 1).join(this._value); + if (node[node.length - 1][0] === 's') node.pop(); + node.push(['s', value]); + } + + // Add right space before rule declaration + if (nodeType === 'stylesheet' || nodeType === 'atrulers') { + // Level up hack + if (nodeType === 'atrulers') level++; + + // Prevent line break at file start + var isFirst; + if (nodeType === 'stylesheet') { + var first = node[0]; + if (first[0] !== 's' || first[1].match('\n') === null) isFirst = true; + } + + for (var i = 0; i < node.length; i++) { + var nodeItem = node[i]; + if (nodeItem[0] === 'atruler' || nodeItem[0] === 'ruleset') { + value = (i < 2 && isFirst ? '' : '\n') + new Array(level + 1).join(this._value); + isFirst = false; + + space = node[i - 1]; + if (!space || space[0] !== 's') { + var tail = node.splice(i); + space = ['s', '']; + tail.unshift(space); + Array.prototype.push.apply(node, tail); + i++; + } + space[1] = space[1].replace(/(\n)?([\t ]+)?$/, value); + } + } + } + + // Add space before block opening brace + if (nodeType === 'simpleselector') { + space = node[node.length - 1]; + if (space[0] === 's' && space[1].match('\n')) { + space[1] += new Array(level + 1).join(this._value); + } + } + } + +}; diff --git a/node_modules/csscomb/lib/options/colon-space.js b/node_modules/csscomb/lib/options/colon-space.js new file mode 100644 index 0000000..2abfc72 --- /dev/null +++ b/node_modules/csscomb/lib/options/colon-space.js @@ -0,0 +1,58 @@ +module.exports = { + + /** + * Sets handler value. + * + * @param {String|Boolean} value Option value + * @returns {Object|undefined} + */ + setValue: function(value) { + this._value = false; + if (value === true) + value = 'after'; + if (value === false) + value = ''; + if (value === 'both') + this._value = [' ', ' ']; + if (value === 'before') + this._value = [' ', '']; + if (value === 'after') + this._value = ['', ' ']; + if (value.constructor === Array && value[0].match(/^[ \t]*$/) && value[1].match(/^[ \t]*$/)) + this._value = value; + if (typeof value === 'string') { + if (value.match(/^[ \t]*$/)) { + this._value = ['', value]; + } else { + var detectSpaces = value.match(/^(([ \t]*):)?([ \t]*)$/); + if (detectSpaces) { + if (detectSpaces[1]) { + this._value = [detectSpaces[2], detectSpaces[3]]; + } else { + this._value = ['', detectSpaces[3]]; + } + } + } + } + + if (!this._value) return; + return this; + }, + + /** + * Processes tree node. + * @param {String} nodeType + * @param {node} node + */ + process: function(nodeType, node) { + if (nodeType === 'property') { + if (node[node.length - 1][0] === 's') node.pop(); + if (this._value[0] !== '') node.push(['s', this._value[0]]); + } + if (nodeType === 'value') { + if (node[0][0] === 's') node.shift(); + if (this._value[1] !== '') node.unshift(['s', this._value[1]]); + } + } + +}; diff --git a/node_modules/csscomb/lib/options/color-case.js b/node_modules/csscomb/lib/options/color-case.js new file mode 100644 index 0000000..e1bf548 --- /dev/null +++ b/node_modules/csscomb/lib/options/color-case.js @@ -0,0 +1,31 @@ +module.exports = { + + /** + * Sets handler value. + * + * @param {String} value Option value + * @returns {Object|undefined} + */ + setValue: function(value) { + if (value === 'lower' || value === 'upper') { + this._value = value; + return this; + } + }, + + /** + * Processes tree node. + * @param {String} nodeType + * @param {node} node + */ + process: function(nodeType, node) { + if (nodeType === 'vhash') { + if (this._value === 'lower') { + node[0] = node[0].toLowerCase(); + } else if (this._value === 'upper') { + node[0] = node[0].toUpperCase(); + } + } + } + +}; diff --git a/node_modules/csscomb/lib/options/color-shorthand.js b/node_modules/csscomb/lib/options/color-shorthand.js new file mode 100644 index 0000000..3995405 --- /dev/null +++ b/node_modules/csscomb/lib/options/color-shorthand.js @@ -0,0 +1,31 @@ +module.exports = { + + /** + * Sets handler value. + * + * @param {Boolean} value Option value + * @returns {Object|undefined} + */ + setValue: function(value) { + if (value === true || value === false) { + this._value = value; + return this; + } + }, + + /** + * Processes tree node. + * @param {String} nodeType + * @param {node} node + */ + process: function(nodeType, node) { + if (nodeType === 'vhash') { + if (this._value) { + node[0] = node[0].replace(/(\w)\1(\w)\2(\w)\3/i, '$1$2$3'); + } else { + node[0] = node[0].replace(/^(\w)(\w)(\w)$/, '$1$1$2$2$3$3'); + } + } + } + +}; diff --git a/node_modules/csscomb/lib/options/combinator-space.js b/node_modules/csscomb/lib/options/combinator-space.js new file mode 100644 index 0000000..3a51f2d --- /dev/null +++ b/node_modules/csscomb/lib/options/combinator-space.js @@ -0,0 +1,50 @@ +module.exports = { + + /** + * Sets handler value. + * + * @param {String|Boolean|Array} value Option value + * @returns {Object} + */ + setValue: function(value) { + this._value = false; + if (value === true) value = ' '; + if (value === false) value = ''; + if (typeof value === 'string' && value.match(/^[ \t\n]*$/)) { + this._value = [value, value]; + } + if (value.constructor === Array) this._value = value; + if (!this._value) return; + return this; + }, + + /** + * Processes tree node. + * @param {String} nodeType + * @param {node} node + */ + process: function(nodeType, node) { + if (nodeType === 'selector') { + for (var i = node.length; i--;) { + var subSelector = node[i]; + for (var j = subSelector.length; j--;) { + if (subSelector[j][0] === 'combinator') { + // Working with the whitespace after the combinator + if (subSelector[j + 1][0] === 's') { + subSelector[j + 1][1] = this._value[1]; + } else { + subSelector.splice(j + 1, 0, ['s', this._value[1]]); + } + // Working with the whitespace before the combinator + if (subSelector[j - 1][0] === 's') { + subSelector[j - 1][1] = this._value[0]; + } else { + subSelector.splice(j, 0, ['s', this._value[0]]); + } + } + } + } + } + } + +}; diff --git a/node_modules/csscomb/lib/options/element-case.js b/node_modules/csscomb/lib/options/element-case.js new file mode 100644 index 0000000..a0acca7 --- /dev/null +++ b/node_modules/csscomb/lib/options/element-case.js @@ -0,0 +1,36 @@ +module.exports = { + + /** + * Sets handler value. + * + * @param {String} value Option value + * @returns {Object|undefined} + */ + setValue: function(value) { + if (value === 'lower' || value === 'upper') { + this._value = value; + return this; + } + }, + + /** + * Processes tree node. + * @param {String} nodeType + * @param {node} node + */ + process: function(nodeType, node) { + if (nodeType === 'simpleselector') { + for (var i = node.length; i--;) { + var nodeItem = node[i]; + if (nodeItem[0] === 'ident') { + if (this._value === 'lower') { + nodeItem[1] = nodeItem[1].toLowerCase(); + } else if (this._value === 'upper') { + nodeItem[1] = nodeItem[1].toUpperCase(); + } + } + } + } + } + +}; diff --git a/node_modules/csscomb/lib/options/eof-newline.js b/node_modules/csscomb/lib/options/eof-newline.js new file mode 100644 index 0000000..e080222 --- /dev/null +++ b/node_modules/csscomb/lib/options/eof-newline.js @@ -0,0 +1,33 @@ +module.exports = { + + /** + * Sets handler value. + * + * @param {Boolean} value Option value + * @returns {Object|undefined} + */ + setValue: function(value) { + if (value === true || value === false) { + this._value = value; + return this; + } + }, + + /** + * Processes tree node. + * @param {String} nodeType + * @param {node} node + */ + process: function(nodeType, node) { + if (nodeType === 'stylesheet') { + var lastChild = node[node.length - 1]; + if (lastChild[0] !== 's') { + lastChild = ['s', '']; + node.push(lastChild); + } + lastChild[1] = lastChild[1].replace(/\n$/, ''); + if (this._value) lastChild[1] += '\n'; + } + } + +}; diff --git a/node_modules/csscomb/lib/options/leading-zero.js b/node_modules/csscomb/lib/options/leading-zero.js new file mode 100644 index 0000000..cb10584 --- /dev/null +++ b/node_modules/csscomb/lib/options/leading-zero.js @@ -0,0 +1,32 @@ +module.exports = { + + /** + * Sets handler value. + * + * @param {Boolean} value Option value + * @returns {Object|undefined} + */ + setValue: function(value) { + if (value === true || value === false) { + this._value = value; + return this; + } + }, + + /** + * Processes tree node. + * @param {String} nodeType + * @param {node} node + */ + process: function(nodeType, node) { + if (nodeType === 'number') { + if (this._value) { + if (node[0][0] === '.') + node[0] = '0' + node[0]; + } else { + node[0] = node[0].replace(/^0+(?=\.)/, ''); + } + } + } + +}; diff --git a/node_modules/csscomb/lib/options/remove-empty-rulesets.js b/node_modules/csscomb/lib/options/remove-empty-rulesets.js new file mode 100644 index 0000000..10c818b --- /dev/null +++ b/node_modules/csscomb/lib/options/remove-empty-rulesets.js @@ -0,0 +1,85 @@ +module.exports = { + + /** + * Sets handler value. + * + * @param {String} value Option value + * @returns {Object|undefined} + */ + setValue: function(value) { + if (value === true) { + this._value = value; + return this; + } + }, + + /** + * Remove rulesets with no declarations. + * + * @param {String} nodeType + * @param {Array} nodeContent + */ + process: function(nodeType, nodeContent) { + if (nodeType === 'stylesheet') { + this._processStylesheetContent(nodeContent); + } + }, + + _processStylesheetContent: function(nodeContent) { + this._removeEmptyRulesets(nodeContent); + this._mergeAdjacentWhitespace(nodeContent); + }, + + _removeEmptyRulesets: function(nodeContent) { + var i = nodeContent.length; + while (i--) { + if (this._isRuleset(nodeContent[i]) && this._isEmptyRuleset(nodeContent[i])) { + nodeContent.splice(i, 1); + } + } + }, + + /** + * Removing ruleset nodes from tree may result in two adjacent whitespace nodes which is not correct AST: + * [space, ruleset, space] => [space, space] + * To ensure correctness of further processing we should merge such nodes into one. + * [space, space] => [space] + */ + _mergeAdjacentWhitespace: function(nodeContent) { + var i = nodeContent.length - 1; + while (i-- > 0) { + if (this._isWhitespace(nodeContent[i]) && this._isWhitespace(nodeContent[i + 1])) { + nodeContent[i][1] += nodeContent[i + 1][1]; + nodeContent.splice(i + 1, 1); + } + } + }, + + _isEmptyRuleset: function(ruleset) { + return ruleset.filter(this._isBlock).every(this._isEmptyBlock, this); + }, + + /** + * Block considered empty when it has no declarations or comments. + */ + _isEmptyBlock: function(node) { + return !node.some(this._isDeclarationOrComment); + }, + + _isDeclarationOrComment: function(node) { + return node[0] === 'declaration' || node[0] === 'comment'; + }, + + _isRuleset: function(node) { + return node[0] === 'ruleset'; + }, + + _isBlock: function(node) { + return node[0] === 'block'; + }, + + _isWhitespace: function(node) { + return node[0] === 's'; + } + +}; diff --git a/node_modules/csscomb/lib/options/rule-indent.js b/node_modules/csscomb/lib/options/rule-indent.js new file mode 100644 index 0000000..5fb7617 --- /dev/null +++ b/node_modules/csscomb/lib/options/rule-indent.js @@ -0,0 +1,48 @@ +module.exports = { + + /** + * Sets handler value. + * + * @param {String|Number|Boolean} value Option value + * @returns {Object|undefined} + */ + setValue: function(value) { + delete this._value; + if (value === true) this._value = ' '; + if (typeof value === 'number' && value === Math.abs(Math.round(value))) + this._value = new Array(value + 1).join(' '); + if (typeof value === 'string' && value.match(/^[ \t]+$/)) this._value = value; + if (typeof this._value === 'string') return this; + }, + + /** + * Processes tree node. + * @param {String} nodeType + * @param {node} node + */ + process: function(nodeType, node, level) { + if (nodeType === 'block') { + if (node[0][0] !== 's') { + node.unshift(['s', '']); + } + for (var i = 0; i < node.length; i++) { + var nodeItem = node[i]; + if (nodeItem[0] === 'declaration') { + var value = '\n' + new Array(level + 2).join(this._value); + var space = node[i - 1]; + var tail; + + if (space[0] !== 's') { + space = ['s', '']; + tail = node.splice(i); + tail.unshift(space); + Array.prototype.push.apply(node, tail); + i++; + } + space[1] = space[1].replace(/(\n)?([\t ]+)?$/, value); + } + } + } + } + +}; diff --git a/node_modules/csscomb/lib/options/sort-order.js b/node_modules/csscomb/lib/options/sort-order.js new file mode 100644 index 0000000..4527014 --- /dev/null +++ b/node_modules/csscomb/lib/options/sort-order.js @@ -0,0 +1,150 @@ +module.exports = { + + /** + * Sets handler value. + * + * @param {Array} value Option value + * @returns {Object|undefined} + */ + setValue: function(value) { + if (!value) return; + + this._order = {}; + value.forEach(function(group, groupIndex) { + group.forEach(function(prop, propIndex) { + this._order[prop] = { group: groupIndex, prop: propIndex }; + }, this); + }, this); + + return this; + }, + + /** + * Processes tree node. + * @param {String} nodeType + * @param {node} node + */ + process: function(nodeType, node) { + if (nodeType !== 'block') return; + + var order = this._order; + var nodeExt = this._createNodeExt(node); + var firstSymbols = nodeExt[0].decl || nodeExt.shift(); + var lastSymbols = nodeExt[nodeExt.length - 1].decl || nodeExt.pop(); + + nodeExt.sort(function(a, b) { + var indexA = order[a.decl] || { prop: -1 }; + var indexB = order[b.decl] || { prop: -1 }; + var groupDelta = indexA.group - indexB.group; + var propDelta = indexA.prop - indexB.prop; + + return groupDelta !== 0 ? groupDelta : propDelta; + }); + + firstSymbols && nodeExt.unshift(firstSymbols); + lastSymbols && nodeExt.push(lastSymbols); + + this._applyNodeExt(node, nodeExt); + }, + + /** + * Internal. Smart split bunch on '\n' symbols; + * @param {Array} bunch + * @param {Boolean} isPrevDeclExists + */ + _splitBunch: function(bunch, isPrevDeclExists) { + var nextBunch = []; + var declAlready = false; + var flag = false; + var item; + var indexOf; + + for (var i = 0; i < bunch.length; ++i) { + if (flag) { nextBunch.push(bunch[i]); continue; } + if (bunch[i][0] === 'declaration') { declAlready = true; } + + if (isPrevDeclExists && !declAlready) continue; + if (bunch[i][0] !== 's') continue; + + var indexOfNewLine = bunch[i][1].indexOf('\n'); + + if (indexOfNewLine === -1) continue; + + nextBunch.push(['s', bunch[i][1].substr(indexOfNewLine + 1)]); + bunch[i][1] = bunch[i][1].substr(0, indexOfNewLine + 1); + + flag = i + 1; + } + + if (nextBunch.length === 1 && nextBunch[0][0] === 's') { + item = nextBunch[0]; + indexOf = item[1].lastIndexOf('\n'); + + indexOf !== -1 && (item[1] = item[1].substr(indexOf + 1)); + } + + flag && bunch.splice(flag); + + return nextBunch; + }, + + /** + * Internal. Create extended node in format of list + * { + * data:[,,declaration,] + * decl: declarationPropertyName + * }; + * @param {node} node + */ + _createNodeExt: function(node) { + var extNode = []; + var bunch = []; + var nextBunch; + var prevDeclPropertyName; + + node.forEach(function(node) { + if (node[0] === 'declaration') { + nextBunch = this._splitBunch(bunch, prevDeclPropertyName); + extNode.push({ data: bunch, decl: prevDeclPropertyName }); + bunch = nextBunch; + prevDeclPropertyName = node[1][1][1]; + } + bunch.push(node); + }, this); + + nextBunch = this._splitBunch(bunch, prevDeclPropertyName); + extNode.push({ data: bunch, decl: prevDeclPropertyName }); + nextBunch.length && extNode.push({ data: nextBunch }); + + return extNode; + }, + + /** + * Internal. Add delimiter at the end of groups of properties + * @param {extNode} extNodePrev + * @param {extNode} extNode + */ + _addGroupDelimiter: function(extNodePrev, extNode) { + if (!extNodePrev.decl || !extNode.decl) return; + + var indexA = this._order[extNodePrev.decl]; + var indexB = this._order[extNode.decl]; + var isGroupBorder = indexA && indexB && indexA.group !== indexB.group; + + if (isGroupBorder) extNode.data.unshift(['s', '\n']); + }, + + /** + * Internal. apply extNode back at common format node. + * @param {node} node + * @param {extNode} extNode + */ + _applyNodeExt: function(node, extNode) { + node.splice(0, node.length); + extNode.forEach(function(item, i) { + i > 0 && this._addGroupDelimiter(extNode[i - 1], item); + node.push.apply(node, item.data); + }, this); + } + +}; diff --git a/node_modules/csscomb/lib/options/stick-brace.js b/node_modules/csscomb/lib/options/stick-brace.js new file mode 100644 index 0000000..f1d4d77 --- /dev/null +++ b/node_modules/csscomb/lib/options/stick-brace.js @@ -0,0 +1,36 @@ +module.exports = { + + /** + * Sets handler value. + * + * @param {String|Number|Boolean} value Option value + * @returns {Object|undefined} + */ + setValue: function(value) { + delete this._value; + if (value === true) this._value = ' '; + if (typeof value === 'number' && value === Math.abs(Math.round(value))) + this._value = new Array(value + 1).join(' '); + if (typeof value === 'string' && value.match(/^[ \t\n]+$/)) this._value = value; + if (typeof this._value === 'string') return this; + }, + + /** + * Processes tree node. + * @param {String} nodeType + * @param {node} node + */ + process: function(nodeType, node) { + if (nodeType === 'selector' || nodeType === 'atruler') { + for (var i = node.length; i--;) { + var nodeItem = node[i]; + if (nodeItem[0] === 'simpleselector' || nodeItem[0] === 'atrulerq') { + if (nodeItem[nodeItem.length - 1][0] === 's') nodeItem.pop(); + nodeItem.push(['s', this._value]); + break; + } + } + } + } + +}; diff --git a/node_modules/csscomb/lib/options/strip-spaces.js b/node_modules/csscomb/lib/options/strip-spaces.js new file mode 100644 index 0000000..1b6743c --- /dev/null +++ b/node_modules/csscomb/lib/options/strip-spaces.js @@ -0,0 +1,44 @@ +module.exports = { + + /** + * Sets handler value. + * + * @param {String|Boolean} value Option value + * @returns {Object|undefined} + */ + setValue: function(value) { + this._value = value === true; + if (!this._value) return; + return this; + }, + + /** + * Processes tree node. + * @param {String} nodeType + * @param {node} node + */ + process: function(nodeType, node) { + if (nodeType === 's') { + node[0] = this._trim(node[0]); + } + if (nodeType === 'stylesheet') { + var lastChild = node[node.length - 1]; + if (lastChild[0] === 's') { + lastChild[1] = this._trim(lastChild[1]) + .replace(/[ \t]+$/, '') + .replace(/[\n]+/g, '\n'); + } + } + }, + + /** + * Trim trailing spaces on each line. + * @private + * @param {String} s Spaceful string + * @returns {String} + */ + _trim: function(s) { + return s.replace(/[ \t]+\n/g, '\n'); + } + +}; diff --git a/node_modules/csscomb/lib/options/unitless-zero.js b/node_modules/csscomb/lib/options/unitless-zero.js new file mode 100644 index 0000000..a4b48d9 --- /dev/null +++ b/node_modules/csscomb/lib/options/unitless-zero.js @@ -0,0 +1,34 @@ +module.exports = { + + /** + * Sets handler value. + * + * @param {Boolean} value Option value + * @returns {Object|undefined} + */ + setValue: function(value) { + if (value === true) { + this._value = value; + return this; + } + }, + + /** + * Processes tree node. + * @param {String} nodeType + * @param {node} node + */ + process: function(nodeType, node) { + if (nodeType === 'value' || nodeType === 'braces') { + node.forEach(function(child, index) { + if ( + (child[0] === 'percentage' || + child[0] === 'dimension' && ['cm', 'em', 'ex', 'pt', 'px'].indexOf(child[2][1]) !== -1) && + child[1][1] === '0') { + node[index] = child[1]; + } + }); + } + } + +}; diff --git a/node_modules/csscomb/lib/options/vendor-prefix-align.js b/node_modules/csscomb/lib/options/vendor-prefix-align.js new file mode 100644 index 0000000..eb087b8 --- /dev/null +++ b/node_modules/csscomb/lib/options/vendor-prefix-align.js @@ -0,0 +1,159 @@ +module.exports = { + + /** + * Internal + * + * Containt vendor-prefixes list. + */ + _prefixesList: [ + 'webkit', + 'moz', + 'ms', + 'o' + ], + + /** + * Internal + * + * Create object which contains info about vendor prefix used in propertyName. + * @param {String} propertyName property name + * @returns {Object|undefined} + */ + _getPrefixInfo: function(propertyName) { + if (!propertyName) return; + + var result = { baseName: propertyName, prefixLength: 0 }; + + this._prefixesList.some(function(prefix) { + prefix = '-' + prefix + '-'; + if (propertyName.indexOf(prefix) !== 0) return; + result = { + baseName: propertyName.substr(prefix.length), + prefixLength: prefix.length + }; + return true; + }); + + return result; + }, + + /** + * Internal + * + * Walk across nodes, and call payload for every node that pass selector check. + * @param {node} node + * @param {function} selector + * @param {function} payload + */ + _walk: function(node, selector, payload) { + node.forEach(function(item, i) { + var info = this._getPrefixInfo(selector(item)); + if (!info) return; + payload(info, i); + }, this); + }, + + /** + * Internal + * + * Selector for property name. + * @param {node} item + * @returns {String|false|undefined} + */ + _declName: function(item) { + return item[0] === 'declaration' && item[1][1][1]; + }, + + /** + * Internal + * + * Selector for value name. + * @param {node} item + * @returns {String|false|undefined} + */ + _valName: function(item) { + return item[0] === 'declaration' && item[2] && item[2][2] && + item[2][2][0] === 'funktion' && item[2][2][1][0] === 'ident' && + item[2][2][1][1]; + }, + + /** + * Internal + * + * Update dict which contains info about items align. + * @param {Object} info, + * @param {Object} dict, + * @param {String} whitespaceNode + */ + _updateDict: function(info, dict, whitespaceNode) { + if (info.prefixLength === 0) return; + + var indent = dict[info.baseName] || { prefixLength: 0, baseLength: 0 }; + + dict[info.baseName] = indent.prefixLength > info.prefixLength ? + indent : + { + prefixLength: info.prefixLength, + baseLength: whitespaceNode.substr(whitespaceNode.lastIndexOf('\n') + 1).length + }; + }, + + /** + * Return string with correct number of spaces for info.baseName property. + * @param {Object} info, + * @param {Object} dict, + * @param {String} whitespaceNode + * @returns {String} + */ + _updateIndent: function(info, dict, whitespaceNode) { + if (!dict[info.baseName]) + return whitespaceNode; + + var firstPart = whitespaceNode.substr(0, whitespaceNode.lastIndexOf('\n') + 1 ); + var extraIndent = new Array( + dict[info.baseName].prefixLength - + info.prefixLength + + dict[info.baseName].baseLength + 1).join(' '); + + return firstPart.concat(extraIndent); + }, + + /** + * Sets handler value. + * + * @param {Array} value Option value + * @returns {Object|undefined} + */ + setValue: function(value) { + return value ? this : undefined; + }, + + /** + * Processes tree node. + * @param {String} nodeType + * @param {node} node + */ + process: function(nodeType, node) { + if (nodeType !== 'block') return; + + var dict = {}; + var _this = this; + + // Gathering Info + this._walk(node, this._declName, function(info, i) { + _this._updateDict(info, dict, node[i - 1][1]); + }); + this._walk(node, this._valName, function(info, i) { + _this._updateDict(info, dict, node[i][2][1][1]); + }); + + // Update nodes + this._walk(node, this._declName, function(info, i) { + node[i - 1][1] = _this._updateIndent(info, dict, node[i - 1][1]); + }); + this._walk(node, this._valName, function(info, i) { + node[i][2][1][1] = _this._updateIndent(info, dict, node[i][2][1][1]); + }); + } + +}; diff --git a/node_modules/csscomb/logo.png b/node_modules/csscomb/logo.png new file mode 100644 index 0000000..04fa74d Binary files /dev/null and b/node_modules/csscomb/logo.png differ diff --git a/node_modules/csscomb/node_modules/commander/History.md b/node_modules/csscomb/node_modules/commander/History.md new file mode 100644 index 0000000..2e66582 --- /dev/null +++ b/node_modules/csscomb/node_modules/commander/History.md @@ -0,0 +1,179 @@ + +2.0.0 / 2013-07-18 +================== + + * remove input methods (.prompt, .confirm, etc) + +1.3.2 / 2013-07-18 +================== + + * add support for sub-commands to co-exist with the original command + +1.3.1 / 2013-07-18 +================== + + * add quick .runningCommand hack so you can opt-out of other logic when running a sub command + +1.3.0 / 2013-07-09 +================== + + * add EACCES error handling + * fix sub-command --help + +1.2.0 / 2013-06-13 +================== + + * allow "-" hyphen as an option argument + * support for RegExp coercion + +1.1.1 / 2012-11-20 +================== + + * add more sub-command padding + * fix .usage() when args are present. Closes #106 + +1.1.0 / 2012-11-16 +================== + + * add git-style executable subcommand support. Closes #94 + +1.0.5 / 2012-10-09 +================== + + * fix `--name` clobbering. Closes #92 + * fix examples/help. Closes #89 + +1.0.4 / 2012-09-03 +================== + + * add `outputHelp()` method. + +1.0.3 / 2012-08-30 +================== + + * remove invalid .version() defaulting + +1.0.2 / 2012-08-24 +================== + + * add `--foo=bar` support [arv] + * fix password on node 0.8.8. Make backward compatible with 0.6 [focusaurus] + +1.0.1 / 2012-08-03 +================== + + * fix issue #56 + * fix tty.setRawMode(mode) was moved to tty.ReadStream#setRawMode() (i.e. process.stdin.setRawMode()) + +1.0.0 / 2012-07-05 +================== + + * add support for optional option descriptions + * add defaulting of `.version()` to package.json's version + +0.6.1 / 2012-06-01 +================== + + * Added: append (yes or no) on confirmation + * Added: allow node.js v0.7.x + +0.6.0 / 2012-04-10 +================== + + * Added `.prompt(obj, callback)` support. Closes #49 + * Added default support to .choose(). Closes #41 + * Fixed the choice example + +0.5.1 / 2011-12-20 +================== + + * Fixed `password()` for recent nodes. Closes #36 + +0.5.0 / 2011-12-04 +================== + + * Added sub-command option support [itay] + +0.4.3 / 2011-12-04 +================== + + * Fixed custom help ordering. Closes #32 + +0.4.2 / 2011-11-24 +================== + + * Added travis support + * Fixed: line-buffered input automatically trimmed. Closes #31 + +0.4.1 / 2011-11-18 +================== + + * Removed listening for "close" on --help + +0.4.0 / 2011-11-15 +================== + + * Added support for `--`. Closes #24 + +0.3.3 / 2011-11-14 +================== + + * Fixed: wait for close event when writing help info [Jerry Hamlet] + +0.3.2 / 2011-11-01 +================== + + * Fixed long flag definitions with values [felixge] + +0.3.1 / 2011-10-31 +================== + + * Changed `--version` short flag to `-V` from `-v` + * Changed `.version()` so it's configurable [felixge] + +0.3.0 / 2011-10-31 +================== + + * Added support for long flags only. Closes #18 + +0.2.1 / 2011-10-24 +================== + + * "node": ">= 0.4.x < 0.7.0". Closes #20 + +0.2.0 / 2011-09-26 +================== + + * Allow for defaults that are not just boolean. Default peassignment only occurs for --no-*, optional, and required arguments. [Jim Isaacs] + +0.1.0 / 2011-08-24 +================== + + * Added support for custom `--help` output + +0.0.5 / 2011-08-18 +================== + + * Changed: when the user enters nothing prompt for password again + * Fixed issue with passwords beginning with numbers [NuckChorris] + +0.0.4 / 2011-08-15 +================== + + * Fixed `Commander#args` + +0.0.3 / 2011-08-15 +================== + + * Added default option value support + +0.0.2 / 2011-08-15 +================== + + * Added mask support to `Command#password(str[, mask], fn)` + * Added `Command#password(str, fn)` + +0.0.1 / 2010-01-03 +================== + + * Initial release diff --git a/node_modules/csscomb/node_modules/commander/Readme.md b/node_modules/csscomb/node_modules/commander/Readme.md new file mode 100644 index 0000000..d164401 --- /dev/null +++ b/node_modules/csscomb/node_modules/commander/Readme.md @@ -0,0 +1,195 @@ +# Commander.js + + The complete solution for [node.js](http://nodejs.org) command-line interfaces, inspired by Ruby's [commander](https://github.com/visionmedia/commander). + + [![Build Status](https://secure.travis-ci.org/visionmedia/commander.js.png)](http://travis-ci.org/visionmedia/commander.js) + +## Installation + + $ npm install commander + +## Option parsing + + Options with commander are defined with the `.option()` method, also serving as documentation for the options. The example below parses args and options from `process.argv`, leaving remaining args as the `program.args` array which were not consumed by options. + +```js +#!/usr/bin/env node + +/** + * Module dependencies. + */ + +var program = require('commander'); + +program + .version('0.0.1') + .option('-p, --peppers', 'Add peppers') + .option('-P, --pineapple', 'Add pineapple') + .option('-b, --bbq', 'Add bbq sauce') + .option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble') + .parse(process.argv); + +console.log('you ordered a pizza with:'); +if (program.peppers) console.log(' - peppers'); +if (program.pineapple) console.log(' - pineapple'); +if (program.bbq) console.log(' - bbq'); +console.log(' - %s cheese', program.cheese); +``` + + Short flags may be passed as a single arg, for example `-abc` is equivalent to `-a -b -c`. Multi-word options such as "--template-engine" are camel-cased, becoming `program.templateEngine` etc. + +## Automated --help + + The help information is auto-generated based on the information commander already knows about your program, so the following `--help` info is for free: + +``` + $ ./examples/pizza --help + + Usage: pizza [options] + + Options: + + -V, --version output the version number + -p, --peppers Add peppers + -P, --pineapple Add pineapple + -b, --bbq Add bbq sauce + -c, --cheese Add the specified type of cheese [marble] + -h, --help output usage information + +``` + +## Coercion + +```js +function range(val) { + return val.split('..').map(Number); +} + +function list(val) { + return val.split(','); +} + +program + .version('0.0.1') + .usage('[options] ') + .option('-i, --integer ', 'An integer argument', parseInt) + .option('-f, --float ', 'A float argument', parseFloat) + .option('-r, --range ..', 'A range', range) + .option('-l, --list ', 'A list', list) + .option('-o, --optional [value]', 'An optional value') + .parse(process.argv); + +console.log(' int: %j', program.integer); +console.log(' float: %j', program.float); +console.log(' optional: %j', program.optional); +program.range = program.range || []; +console.log(' range: %j..%j', program.range[0], program.range[1]); +console.log(' list: %j', program.list); +console.log(' args: %j', program.args); +``` + +## Custom help + + You can display arbitrary `-h, --help` information + by listening for "--help". Commander will automatically + exit once you are done so that the remainder of your program + does not execute causing undesired behaviours, for example + in the following executable "stuff" will not output when + `--help` is used. + +```js +#!/usr/bin/env node + +/** + * Module dependencies. + */ + +var program = require('../'); + +function list(val) { + return val.split(',').map(Number); +} + +program + .version('0.0.1') + .option('-f, --foo', 'enable some foo') + .option('-b, --bar', 'enable some bar') + .option('-B, --baz', 'enable some baz'); + +// must be before .parse() since +// node's emit() is immediate + +program.on('--help', function(){ + console.log(' Examples:'); + console.log(''); + console.log(' $ custom-help --help'); + console.log(' $ custom-help -h'); + console.log(''); +}); + +program.parse(process.argv); + +console.log('stuff'); +``` + +yielding the following help output: + +``` + +Usage: custom-help [options] + +Options: + + -h, --help output usage information + -V, --version output the version number + -f, --foo enable some foo + -b, --bar enable some bar + -B, --baz enable some baz + +Examples: + + $ custom-help --help + $ custom-help -h + +``` + +## .outputHelp() + + Output help information without exiting. + +## .help() + + Output help information and exit immediately. + +## Links + + - [API documentation](http://visionmedia.github.com/commander.js/) + - [ascii tables](https://github.com/LearnBoost/cli-table) + - [progress bars](https://github.com/visionmedia/node-progress) + - [more progress bars](https://github.com/substack/node-multimeter) + - [examples](https://github.com/visionmedia/commander.js/tree/master/examples) + +## License + +(The MIT License) + +Copyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/csscomb/node_modules/commander/index.js b/node_modules/csscomb/node_modules/commander/index.js new file mode 100644 index 0000000..d5778a7 --- /dev/null +++ b/node_modules/csscomb/node_modules/commander/index.js @@ -0,0 +1,847 @@ + +/** + * Module dependencies. + */ + +var EventEmitter = require('events').EventEmitter; +var spawn = require('child_process').spawn; +var fs = require('fs'); +var exists = fs.existsSync; +var path = require('path'); +var dirname = path.dirname; +var basename = path.basename; + +/** + * Expose the root command. + */ + +exports = module.exports = new Command; + +/** + * Expose `Command`. + */ + +exports.Command = Command; + +/** + * Expose `Option`. + */ + +exports.Option = Option; + +/** + * Initialize a new `Option` with the given `flags` and `description`. + * + * @param {String} flags + * @param {String} description + * @api public + */ + +function Option(flags, description) { + this.flags = flags; + this.required = ~flags.indexOf('<'); + this.optional = ~flags.indexOf('['); + this.bool = !~flags.indexOf('-no-'); + flags = flags.split(/[ ,|]+/); + if (flags.length > 1 && !/^[[<]/.test(flags[1])) this.short = flags.shift(); + this.long = flags.shift(); + this.description = description || ''; +} + +/** + * Return option name. + * + * @return {String} + * @api private + */ + +Option.prototype.name = function(){ + return this.long + .replace('--', '') + .replace('no-', ''); +}; + +/** + * Check if `arg` matches the short or long flag. + * + * @param {String} arg + * @return {Boolean} + * @api private + */ + +Option.prototype.is = function(arg){ + return arg == this.short + || arg == this.long; +}; + +/** + * Initialize a new `Command`. + * + * @param {String} name + * @api public + */ + +function Command(name) { + this.commands = []; + this.options = []; + this._execs = []; + this._args = []; + this._name = name; +} + +/** + * Inherit from `EventEmitter.prototype`. + */ + +Command.prototype.__proto__ = EventEmitter.prototype; + +/** + * Add command `name`. + * + * The `.action()` callback is invoked when the + * command `name` is specified via __ARGV__, + * and the remaining arguments are applied to the + * function for access. + * + * When the `name` is "*" an un-matched command + * will be passed as the first arg, followed by + * the rest of __ARGV__ remaining. + * + * Examples: + * + * program + * .version('0.0.1') + * .option('-C, --chdir ', 'change the working directory') + * .option('-c, --config ', 'set config path. defaults to ./deploy.conf') + * .option('-T, --no-tests', 'ignore test hook') + * + * program + * .command('setup') + * .description('run remote setup commands') + * .action(function(){ + * console.log('setup'); + * }); + * + * program + * .command('exec ') + * .description('run the given remote command') + * .action(function(cmd){ + * console.log('exec "%s"', cmd); + * }); + * + * program + * .command('*') + * .description('deploy the given env') + * .action(function(env){ + * console.log('deploying "%s"', env); + * }); + * + * program.parse(process.argv); + * + * @param {String} name + * @param {String} [desc] + * @return {Command} the new command + * @api public + */ + +Command.prototype.command = function(name, desc){ + var args = name.split(/ +/); + var cmd = new Command(args.shift()); + if (desc) cmd.description(desc); + if (desc) this.executables = true; + if (desc) this._execs[cmd._name] = true; + this.commands.push(cmd); + cmd.parseExpectedArgs(args); + cmd.parent = this; + if (desc) return this; + return cmd; +}; + +/** + * Add an implicit `help [cmd]` subcommand + * which invokes `--help` for the given command. + * + * @api private + */ + +Command.prototype.addImplicitHelpCommand = function() { + this.command('help [cmd]', 'display help for [cmd]'); +}; + +/** + * Parse expected `args`. + * + * For example `["[type]"]` becomes `[{ required: false, name: 'type' }]`. + * + * @param {Array} args + * @return {Command} for chaining + * @api public + */ + +Command.prototype.parseExpectedArgs = function(args){ + if (!args.length) return; + var self = this; + args.forEach(function(arg){ + switch (arg[0]) { + case '<': + self._args.push({ required: true, name: arg.slice(1, -1) }); + break; + case '[': + self._args.push({ required: false, name: arg.slice(1, -1) }); + break; + } + }); + return this; +}; + +/** + * Register callback `fn` for the command. + * + * Examples: + * + * program + * .command('help') + * .description('display verbose help') + * .action(function(){ + * // output help here + * }); + * + * @param {Function} fn + * @return {Command} for chaining + * @api public + */ + +Command.prototype.action = function(fn){ + var self = this; + this.parent.on(this._name, function(args, unknown){ + // Parse any so-far unknown options + unknown = unknown || []; + var parsed = self.parseOptions(unknown); + + // Output help if necessary + outputHelpIfNecessary(self, parsed.unknown); + + // If there are still any unknown options, then we simply + // die, unless someone asked for help, in which case we give it + // to them, and then we die. + if (parsed.unknown.length > 0) { + self.unknownOption(parsed.unknown[0]); + } + + // Leftover arguments need to be pushed back. Fixes issue #56 + if (parsed.args.length) args = parsed.args.concat(args); + + self._args.forEach(function(arg, i){ + if (arg.required && null == args[i]) { + self.missingArgument(arg.name); + } + }); + + // Always append ourselves to the end of the arguments, + // to make sure we match the number of arguments the user + // expects + if (self._args.length) { + args[self._args.length] = self; + } else { + args.push(self); + } + + fn.apply(this, args); + }); + return this; +}; + +/** + * Define option with `flags`, `description` and optional + * coercion `fn`. + * + * The `flags` string should contain both the short and long flags, + * separated by comma, a pipe or space. The following are all valid + * all will output this way when `--help` is used. + * + * "-p, --pepper" + * "-p|--pepper" + * "-p --pepper" + * + * Examples: + * + * // simple boolean defaulting to false + * program.option('-p, --pepper', 'add pepper'); + * + * --pepper + * program.pepper + * // => Boolean + * + * // simple boolean defaulting to false + * program.option('-C, --no-cheese', 'remove cheese'); + * + * program.cheese + * // => true + * + * --no-cheese + * program.cheese + * // => true + * + * // required argument + * program.option('-C, --chdir ', 'change the working directory'); + * + * --chdir /tmp + * program.chdir + * // => "/tmp" + * + * // optional argument + * program.option('-c, --cheese [type]', 'add cheese [marble]'); + * + * @param {String} flags + * @param {String} description + * @param {Function|Mixed} fn or default + * @param {Mixed} defaultValue + * @return {Command} for chaining + * @api public + */ + +Command.prototype.option = function(flags, description, fn, defaultValue){ + var self = this + , option = new Option(flags, description) + , oname = option.name() + , name = camelcase(oname); + + // default as 3rd arg + if ('function' != typeof fn) defaultValue = fn, fn = null; + + // preassign default value only for --no-*, [optional], or + if (false == option.bool || option.optional || option.required) { + // when --no-* we make sure default is true + if (false == option.bool) defaultValue = true; + // preassign only if we have a default + if (undefined !== defaultValue) self[name] = defaultValue; + } + + // register the option + this.options.push(option); + + // when it's passed assign the value + // and conditionally invoke the callback + this.on(oname, function(val){ + // coercion + if (null != val && fn) val = fn(val); + + // unassigned or bool + if ('boolean' == typeof self[name] || 'undefined' == typeof self[name]) { + // if no value, bool true, and we have a default, then use it! + if (null == val) { + self[name] = option.bool + ? defaultValue || true + : false; + } else { + self[name] = val; + } + } else if (null !== val) { + // reassign + self[name] = val; + } + }); + + return this; +}; + +/** + * Parse `argv`, settings options and invoking commands when defined. + * + * @param {Array} argv + * @return {Command} for chaining + * @api public + */ + +Command.prototype.parse = function(argv){ + // implicit help + if (this.executables) this.addImplicitHelpCommand(); + + // store raw args + this.rawArgs = argv; + + // guess name + this._name = this._name || basename(argv[1]); + + // process argv + var parsed = this.parseOptions(this.normalize(argv.slice(2))); + var args = this.args = parsed.args; + + var result = this.parseArgs(this.args, parsed.unknown); + + // executable sub-commands + var name = result.args[0]; + if (this._execs[name]) return this.executeSubCommand(argv, args, parsed.unknown); + + return result; +}; + +/** + * Execute a sub-command executable. + * + * @param {Array} argv + * @param {Array} args + * @param {Array} unknown + * @api private + */ + +Command.prototype.executeSubCommand = function(argv, args, unknown) { + args = args.concat(unknown); + + if (!args.length) this.help(); + if ('help' == args[0] && 1 == args.length) this.help(); + + // --help + if ('help' == args[0]) { + args[0] = args[1]; + args[1] = '--help'; + } + + // executable + var dir = dirname(argv[1]); + var bin = basename(argv[1]) + '-' + args[0]; + + // check for ./ first + var local = path.join(dir, bin); + + // run it + args = args.slice(1); + var proc = spawn(local, args, { stdio: 'inherit', customFds: [0, 1, 2] }); + proc.on('error', function(err){ + if (err.code == "ENOENT") { + console.error('\n %s(1) does not exist, try --help\n', bin); + } else if (err.code == "EACCES") { + console.error('\n %s(1) not executable. try chmod or run with root\n', bin); + } + }); + + this.runningCommand = proc; +}; + +/** + * Normalize `args`, splitting joined short flags. For example + * the arg "-abc" is equivalent to "-a -b -c". + * This also normalizes equal sign and splits "--abc=def" into "--abc def". + * + * @param {Array} args + * @return {Array} + * @api private + */ + +Command.prototype.normalize = function(args){ + var ret = [] + , arg + , index; + + for (var i = 0, len = args.length; i < len; ++i) { + arg = args[i]; + if (arg.length > 1 && '-' == arg[0] && '-' != arg[1]) { + arg.slice(1).split('').forEach(function(c){ + ret.push('-' + c); + }); + } else if (/^--/.test(arg) && ~(index = arg.indexOf('='))) { + ret.push(arg.slice(0, index), arg.slice(index + 1)); + } else { + ret.push(arg); + } + } + + return ret; +}; + +/** + * Parse command `args`. + * + * When listener(s) are available those + * callbacks are invoked, otherwise the "*" + * event is emitted and those actions are invoked. + * + * @param {Array} args + * @return {Command} for chaining + * @api private + */ + +Command.prototype.parseArgs = function(args, unknown){ + var cmds = this.commands + , len = cmds.length + , name; + + if (args.length) { + name = args[0]; + if (this.listeners(name).length) { + this.emit(args.shift(), args, unknown); + } else { + this.emit('*', args); + } + } else { + outputHelpIfNecessary(this, unknown); + + // If there were no args and we have unknown options, + // then they are extraneous and we need to error. + if (unknown.length > 0) { + this.unknownOption(unknown[0]); + } + } + + return this; +}; + +/** + * Return an option matching `arg` if any. + * + * @param {String} arg + * @return {Option} + * @api private + */ + +Command.prototype.optionFor = function(arg){ + for (var i = 0, len = this.options.length; i < len; ++i) { + if (this.options[i].is(arg)) { + return this.options[i]; + } + } +}; + +/** + * Parse options from `argv` returning `argv` + * void of these options. + * + * @param {Array} argv + * @return {Array} + * @api public + */ + +Command.prototype.parseOptions = function(argv){ + var args = [] + , len = argv.length + , literal + , option + , arg; + + var unknownOptions = []; + + // parse options + for (var i = 0; i < len; ++i) { + arg = argv[i]; + + // literal args after -- + if ('--' == arg) { + literal = true; + continue; + } + + if (literal) { + args.push(arg); + continue; + } + + // find matching Option + option = this.optionFor(arg); + + // option is defined + if (option) { + // requires arg + if (option.required) { + arg = argv[++i]; + if (null == arg) return this.optionMissingArgument(option); + if ('-' == arg[0] && '-' != arg) return this.optionMissingArgument(option, arg); + this.emit(option.name(), arg); + // optional arg + } else if (option.optional) { + arg = argv[i+1]; + if (null == arg || ('-' == arg[0] && '-' != arg)) { + arg = null; + } else { + ++i; + } + this.emit(option.name(), arg); + // bool + } else { + this.emit(option.name()); + } + continue; + } + + // looks like an option + if (arg.length > 1 && '-' == arg[0]) { + unknownOptions.push(arg); + + // If the next argument looks like it might be + // an argument for this option, we pass it on. + // If it isn't, then it'll simply be ignored + if (argv[i+1] && '-' != argv[i+1][0]) { + unknownOptions.push(argv[++i]); + } + continue; + } + + // arg + args.push(arg); + } + + return { args: args, unknown: unknownOptions }; +}; + +/** + * Argument `name` is missing. + * + * @param {String} name + * @api private + */ + +Command.prototype.missingArgument = function(name){ + console.error(); + console.error(" error: missing required argument `%s'", name); + console.error(); + process.exit(1); +}; + +/** + * `Option` is missing an argument, but received `flag` or nothing. + * + * @param {String} option + * @param {String} flag + * @api private + */ + +Command.prototype.optionMissingArgument = function(option, flag){ + console.error(); + if (flag) { + console.error(" error: option `%s' argument missing, got `%s'", option.flags, flag); + } else { + console.error(" error: option `%s' argument missing", option.flags); + } + console.error(); + process.exit(1); +}; + +/** + * Unknown option `flag`. + * + * @param {String} flag + * @api private + */ + +Command.prototype.unknownOption = function(flag){ + console.error(); + console.error(" error: unknown option `%s'", flag); + console.error(); + process.exit(1); +}; + + +/** + * Set the program version to `str`. + * + * This method auto-registers the "-V, --version" flag + * which will print the version number when passed. + * + * @param {String} str + * @param {String} flags + * @return {Command} for chaining + * @api public + */ + +Command.prototype.version = function(str, flags){ + if (0 == arguments.length) return this._version; + this._version = str; + flags = flags || '-V, --version'; + this.option(flags, 'output the version number'); + this.on('version', function(){ + console.log(str); + process.exit(0); + }); + return this; +}; + +/** + * Set the description `str`. + * + * @param {String} str + * @return {String|Command} + * @api public + */ + +Command.prototype.description = function(str){ + if (0 == arguments.length) return this._description; + this._description = str; + return this; +}; + +/** + * Set / get the command usage `str`. + * + * @param {String} str + * @return {String|Command} + * @api public + */ + +Command.prototype.usage = function(str){ + var args = this._args.map(function(arg){ + return arg.required + ? '<' + arg.name + '>' + : '[' + arg.name + ']'; + }); + + var usage = '[options' + + (this.commands.length ? '] [command' : '') + + ']' + + (this._args.length ? ' ' + args : ''); + + if (0 == arguments.length) return this._usage || usage; + this._usage = str; + + return this; +}; + +/** + * Return the largest option length. + * + * @return {Number} + * @api private + */ + +Command.prototype.largestOptionLength = function(){ + return this.options.reduce(function(max, option){ + return Math.max(max, option.flags.length); + }, 0); +}; + +/** + * Return help for options. + * + * @return {String} + * @api private + */ + +Command.prototype.optionHelp = function(){ + var width = this.largestOptionLength(); + + // Prepend the help information + return [pad('-h, --help', width) + ' ' + 'output usage information'] + .concat(this.options.map(function(option){ + return pad(option.flags, width) + + ' ' + option.description; + })) + .join('\n'); +}; + +/** + * Return command help documentation. + * + * @return {String} + * @api private + */ + +Command.prototype.commandHelp = function(){ + if (!this.commands.length) return ''; + return [ + '' + , ' Commands:' + , '' + , this.commands.map(function(cmd){ + var args = cmd._args.map(function(arg){ + return arg.required + ? '<' + arg.name + '>' + : '[' + arg.name + ']'; + }).join(' '); + + return pad(cmd._name + + (cmd.options.length + ? ' [options]' + : '') + ' ' + args, 22) + + (cmd.description() + ? ' ' + cmd.description() + : ''); + }).join('\n').replace(/^/gm, ' ') + , '' + ].join('\n'); +}; + +/** + * Return program help documentation. + * + * @return {String} + * @api private + */ + +Command.prototype.helpInformation = function(){ + return [ + '' + , ' Usage: ' + this._name + ' ' + this.usage() + , '' + this.commandHelp() + , ' Options:' + , '' + , '' + this.optionHelp().replace(/^/gm, ' ') + , '' + , '' + ].join('\n'); +}; + +/** + * Output help information for this command + * + * @api public + */ + +Command.prototype.outputHelp = function(){ + process.stdout.write(this.helpInformation()); + this.emit('--help'); +}; + +/** + * Output help information and exit. + * + * @api public + */ + +Command.prototype.help = function(){ + this.outputHelp(); + process.exit(); +}; + +/** + * Camel-case the given `flag` + * + * @param {String} flag + * @return {String} + * @api private + */ + +function camelcase(flag) { + return flag.split('-').reduce(function(str, word){ + return str + word[0].toUpperCase() + word.slice(1); + }); +} + +/** + * Pad `str` to `width`. + * + * @param {String} str + * @param {Number} width + * @return {String} + * @api private + */ + +function pad(str, width) { + var len = Math.max(0, width - str.length); + return str + Array(len + 1).join(' '); +} + +/** + * Output help information if necessary + * + * @param {Command} command to output help for + * @param {Array} array of options to search for -h or --help + * @api private + */ + +function outputHelpIfNecessary(cmd, options) { + options = options || []; + for (var i = 0; i < options.length; i++) { + if (options[i] == '--help' || options[i] == '-h') { + cmd.outputHelp(); + process.exit(0); + } + } +} diff --git a/node_modules/csscomb/node_modules/commander/package.json b/node_modules/csscomb/node_modules/commander/package.json new file mode 100644 index 0000000..15604f0 --- /dev/null +++ b/node_modules/csscomb/node_modules/commander/package.json @@ -0,0 +1,41 @@ +{ + "name": "commander", + "version": "2.0.0", + "description": "the complete solution for node.js command-line programs", + "keywords": [ + "command", + "option", + "parser", + "prompt", + "stdin" + ], + "author": { + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca" + }, + "repository": { + "type": "git", + "url": "https://github.com/visionmedia/commander.js.git" + }, + "devDependencies": { + "should": ">= 0.0.1" + }, + "scripts": { + "test": "make test" + }, + "main": "index", + "engines": { + "node": ">= 0.6.x" + }, + "readme": "# Commander.js\n\n The complete solution for [node.js](http://nodejs.org) command-line interfaces, inspired by Ruby's [commander](https://github.com/visionmedia/commander).\n\n [![Build Status](https://secure.travis-ci.org/visionmedia/commander.js.png)](http://travis-ci.org/visionmedia/commander.js)\n\n## Installation\n\n $ npm install commander\n\n## Option parsing\n\n Options with commander are defined with the `.option()` method, also serving as documentation for the options. The example below parses args and options from `process.argv`, leaving remaining args as the `program.args` array which were not consumed by options.\n\n```js\n#!/usr/bin/env node\n\n/**\n * Module dependencies.\n */\n\nvar program = require('commander');\n\nprogram\n .version('0.0.1')\n .option('-p, --peppers', 'Add peppers')\n .option('-P, --pineapple', 'Add pineapple')\n .option('-b, --bbq', 'Add bbq sauce')\n .option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble')\n .parse(process.argv);\n\nconsole.log('you ordered a pizza with:');\nif (program.peppers) console.log(' - peppers');\nif (program.pineapple) console.log(' - pineapple');\nif (program.bbq) console.log(' - bbq');\nconsole.log(' - %s cheese', program.cheese);\n```\n\n Short flags may be passed as a single arg, for example `-abc` is equivalent to `-a -b -c`. Multi-word options such as \"--template-engine\" are camel-cased, becoming `program.templateEngine` etc.\n\n## Automated --help\n\n The help information is auto-generated based on the information commander already knows about your program, so the following `--help` info is for free:\n\n``` \n $ ./examples/pizza --help\n\n Usage: pizza [options]\n\n Options:\n\n -V, --version output the version number\n -p, --peppers Add peppers\n -P, --pineapple Add pineapple\n -b, --bbq Add bbq sauce\n -c, --cheese Add the specified type of cheese [marble]\n -h, --help output usage information\n\n```\n\n## Coercion\n\n```js\nfunction range(val) {\n return val.split('..').map(Number);\n}\n\nfunction list(val) {\n return val.split(',');\n}\n\nprogram\n .version('0.0.1')\n .usage('[options] ')\n .option('-i, --integer ', 'An integer argument', parseInt)\n .option('-f, --float ', 'A float argument', parseFloat)\n .option('-r, --range ..', 'A range', range)\n .option('-l, --list ', 'A list', list)\n .option('-o, --optional [value]', 'An optional value')\n .parse(process.argv);\n\nconsole.log(' int: %j', program.integer);\nconsole.log(' float: %j', program.float);\nconsole.log(' optional: %j', program.optional);\nprogram.range = program.range || [];\nconsole.log(' range: %j..%j', program.range[0], program.range[1]);\nconsole.log(' list: %j', program.list);\nconsole.log(' args: %j', program.args);\n```\n\n## Custom help\n\n You can display arbitrary `-h, --help` information\n by listening for \"--help\". Commander will automatically\n exit once you are done so that the remainder of your program\n does not execute causing undesired behaviours, for example\n in the following executable \"stuff\" will not output when\n `--help` is used.\n\n```js\n#!/usr/bin/env node\n\n/**\n * Module dependencies.\n */\n\nvar program = require('../');\n\nfunction list(val) {\n return val.split(',').map(Number);\n}\n\nprogram\n .version('0.0.1')\n .option('-f, --foo', 'enable some foo')\n .option('-b, --bar', 'enable some bar')\n .option('-B, --baz', 'enable some baz');\n\n// must be before .parse() since\n// node's emit() is immediate\n\nprogram.on('--help', function(){\n console.log(' Examples:');\n console.log('');\n console.log(' $ custom-help --help');\n console.log(' $ custom-help -h');\n console.log('');\n});\n\nprogram.parse(process.argv);\n\nconsole.log('stuff');\n```\n\nyielding the following help output:\n\n```\n\nUsage: custom-help [options]\n\nOptions:\n\n -h, --help output usage information\n -V, --version output the version number\n -f, --foo enable some foo\n -b, --bar enable some bar\n -B, --baz enable some baz\n\nExamples:\n\n $ custom-help --help\n $ custom-help -h\n\n```\n\n## .outputHelp()\n\n Output help information without exiting.\n\n## .help()\n\n Output help information and exit immediately.\n\n## Links\n\n - [API documentation](http://visionmedia.github.com/commander.js/)\n - [ascii tables](https://github.com/LearnBoost/cli-table)\n - [progress bars](https://github.com/visionmedia/node-progress)\n - [more progress bars](https://github.com/substack/node-multimeter)\n - [examples](https://github.com/visionmedia/commander.js/tree/master/examples)\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", + "readmeFilename": "Readme.md", + "bugs": { + "url": "https://github.com/visionmedia/commander.js/issues" + }, + "_id": "commander@2.0.0", + "dist": { + "shasum": "d1b86f901f8b64bd941bdeadaf924530393be928" + }, + "_from": "commander@2.0.0", + "_resolved": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz" +} diff --git a/node_modules/csscomb/node_modules/gonzales/CHANGELOG.md b/node_modules/csscomb/node_modules/gonzales/CHANGELOG.md new file mode 100644 index 0000000..4147fcf --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/CHANGELOG.md @@ -0,0 +1,44 @@ +Gonzales changelog +================== + +11.02.2013, Version 1.0.7 + +- Identifiers like `_0` are identifiers now. +- Throw error instead of console.error: https://github.com/css/csso/issues/109 + +25.11.2012, Version 1.0.6 +------------------------- + +- Typo fix (global variable leak): https://github.com/css/csso/pull/110 +- Attribute selectors extended by `|`. +- `not(..)` pseudo-class special support: https://github.com/css/csso/issues/111 + +28.10.2012, Version 1.0.5 +------------------------- + +- Better error line numbering: https://github.com/css/gonzales/issues/2 + +11.10.2012, Version 1.0.4 +------------------------- + +- CSSO issue (@page inside @media error): https://github.com/css/csso/issues/90 + +10.10.2012, Version 1.0.3 +------------------------- + +- Both .t-1 and .t-01 should be idents: https://github.com/css/gonzales/issues/1 + +08.10.2012, Version 1.0.2 +------------------------- + +- CSSO issue (filter + important breaks csso v1.3.1): https://github.com/css/csso/issues/87 + +08.10.2012, Version 1.0.1 +------------------------- + +- CSSO issue ("filter" IE property breaks CSSO v1.3.0): https://github.com/css/csso/issues/86 + +03.10.2012, Version 1.0.0 +------------------------- + + - First revision. diff --git a/node_modules/csscomb/node_modules/gonzales/GNUmakefile b/node_modules/csscomb/node_modules/gonzales/GNUmakefile new file mode 100644 index 0000000..2fed96c --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/GNUmakefile @@ -0,0 +1,17 @@ +.PHONY: cssp + +cssp: + @cat src/gonzales.cssp.header.js > lib/.gonzales.cssp.js + @cat src/tokenizer.shared.js >> lib/.gonzales.cssp.js + @cat src/cssp.ast.shared.js >> lib/.gonzales.cssp.js + @cat src/gonzales.cssp.footer.js >> lib/.gonzales.cssp.js + @cp lib/.gonzales.cssp.js lib/gonzales.cssp.node.js + @cat src/gonzales.cssp.node.js >> lib/gonzales.cssp.node.js + @cp lib/.gonzales.cssp.js web/gonzales.cssp.web.js + @rm lib/.gonzales.cssp.js + @cat src/cssp.translator.shared.js > web/cssp.translator.js + @cat src/cssp.translator.shared.js > lib/cssp.translator.node.js + @cat src/cssp.translator.node.js >> lib/cssp.translator.node.js + +cssptest: + @node test/cssp/test.js diff --git a/node_modules/csscomb/node_modules/gonzales/MIT-LICENSE.txt b/node_modules/csscomb/node_modules/gonzales/MIT-LICENSE.txt new file mode 100644 index 0000000..18113b1 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/MIT-LICENSE.txt @@ -0,0 +1,19 @@ +Copyright (C) 2012 by Sergey Kryzhanovsky + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/README.md b/node_modules/csscomb/node_modules/gonzales/README.md new file mode 100644 index 0000000..c371d7b --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/README.md @@ -0,0 +1,39 @@ +# 1. Description + +Gonzales — fast CSS parser. + +This document is an installation guide. + +Usage: [CSSP.USAGE.en] (https://github.com/css/gonzales/blob/master/doc/CSSP.USAGE.en.md). + +CSSP AST description: [AST.CSSP.en] (https://github.com/css/gonzales/blob/master/doc/AST.CSSP.en.md). + +Please report issues on [Issues](https://github.com/css/gonzales/issues). + +# 2. Install using npm + +Prerequisites: + +* nodejs 0.6.x — [http://nodejs.org](http://nodejs.org) +* npm — [http://github.com/isaacs/npm/](http://github.com/isaacs/npm/) + +To install (global): + +* run `npm install gonzales -g` + +To update: + +* run `npm update gonzales` + +To uninstall: + +* run `npm uninstall gonzales -g` + +# 3. Authors + +* idea, implementation — Sergey Kryzhanovsky () +* english translation — Vera Gavryushina () + +# 4. And finally + +* Gonzales is licensed under [MIT](https://github.com/css/gonzales/blob/master/MIT-LICENSE.txt) diff --git a/node_modules/csscomb/node_modules/gonzales/README.ru.md b/node_modules/csscomb/node_modules/gonzales/README.ru.md new file mode 100644 index 0000000..281bbe1 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/README.ru.md @@ -0,0 +1,39 @@ +# 1. Описание + +Gonzales — быстрый парсер CSS. + +Этот документ является инструкцией по установке. + +Использование: [CSSP.USAGE.ru] (https://github.com/css/gonzales/blob/master/doc/CSSP.USAGE.ru.md). + +Описание CSSP AST: [AST.CSSP.ru] (https://github.com/css/gonzales/blob/master/doc/AST.CSSP.ru.md). + +Замеченные ошибки лучше добавлять в [Issues](https://github.com/css/gonzales/issues) проекта. + +# 2. Установка с помощью npm + +Предварительные требования: + +* nodejs версии 0.6.x — [http://nodejs.org](http://nodejs.org) +* npm — [http://github.com/isaacs/npm/](http://github.com/isaacs/npm/) + +Установка (глобально): + +* выполнить `npm install gonzales -g` + +Обновление: + +* выполнить `npm update gonzales` + +Удаление: + +* выполнить `npm uninstall gonzales -g` + +# 3. Авторы + +* идея, реализация — Сергей Крыжановский () +* перевод документации на английский язык — Вера Гаврюшина () + +# 4. Остальное + +* Gonzales распространяется под [лицензией MIT](https://github.com/css/gonzales/blob/master/MIT-LICENSE.txt) diff --git a/node_modules/csscomb/node_modules/gonzales/benchmark/benchmark.js b/node_modules/csscomb/node_modules/gonzales/benchmark/benchmark.js new file mode 100644 index 0000000..194d7b7 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/benchmark/benchmark.js @@ -0,0 +1,24 @@ +var FS = require('fs'), + PATH = require('path'), + G = require('..'), + Benchmark = require('benchmark'), + suite = module.exports = new Benchmark.Suite(); + +var css3pane = read('3pane.css'); + +suite + .add('srcToCSSP(3pane.css)', function() { + G.srcToCSSP(css3pane); + }) + .on('cycle', function(data) { + if (data.target.error) console.error(data.target.error.stack); + console.log(String(data.target)); + }); + +function read(file) { + return FS.readFileSync(PATH.resolve(__dirname, 'css', file), 'utf8'); +} + +if (module.id === module.main) { + suite.run({ async: true }); +} diff --git a/node_modules/csscomb/node_modules/gonzales/benchmark/css/3pane.css b/node_modules/csscomb/node_modules/gonzales/benchmark/css/3pane.css new file mode 100644 index 0000000..38d625c --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/benchmark/css/3pane.css @@ -0,0 +1 @@ +.b-service-tabs{position:absolute;bottom:0;left:-200px;z-index:9;overflow:hidden;white-space:nowrap;width:200px;height:32px;background:#595959 url("//mailstatic.yandex.net/neo2/_/vRDi2SBIsYmRfliviPS16S_oodg.png") 0 50% repeat-x;-webkit-box-shadow:0 -1px 2px -1px rgba(0,0,0,.5);box-shadow:0 -1px 2px -1px rgba(0,0,0,.5)}.b-layout__inner_type_tmessage .jquery-fixedscroll{margin-left:25px}.jquery-fixedscroll{position:fixed;bottom:0;overflow:auto;background:#fff}.jquery-fixedscroll__i{height:1px}.m-layout-3pane-wnd .b-layout__second-pane{left:0!important;top:0!important;margin:0!important}.m-layout-3pane-wnd .b-layout__second-pane .b-layout__inner{-webkit-box-shadow:none;box-shadow:none}.m-layout-3pane-wnd .b-resizer{display:none!important}.b-footer{font:85%/2 Arial;position:absolute;left:0;bottom:0;z-index:1;width:100%;padding:8px 0 10px}.b-page_type_message .b-foot-decor{display:none!important}.b-footer__block{display:-moz-inline-box;display:inline-block;vertical-align:top}.b-footer__block_beta{padding-top:4px;line-height:1.4em}.b-footer__block_copyright{width:31%;padding:0 0 0 2%;text-align:right}.b-footer__block_lang{visibility:hidden;text-align:right;width:5%;padding-left:2%;margin-left:.3em}.m-loaded .b-footer__block_lang{visibility:inherit}.b-footer__block_lang .b-mail-dropdown{position:relative;display:block;overflow:hidden}.b-footer__block_lang .b-mail-dropdown__handle{position:relative;display:inline-block;margin:0;padding:0 0 0 20px}.b-footer__block_lang .b-mail-dropdown__handle .b-mail-icon{position:absolute;top:5px;left:0;padding:1px 5px 1px 1px}.b-footer__block_lang .b-mail-dropdown__handle:hover{text-decoration:underline}.b-footer__block_links{width:34%}.b-footer__block_versions{width:23%;padding-right:2%}.b-footer__col_left{width:224px;padding-left:16px;margin-right:-240px;float:left}.b-footer__col_right{margin:0 16px 0 226px;white-space:nowrap}.b-footer__link_local .b-footer__img{position:absolute;top:50%;left:-15px;width:15px;height:11px;margin-top:-5px;overflow:hidden;text-decoration:none;background:url(//mailstatic.yandex.net/neo2/_/u1b3N9S3qhfRRDjxCnIIBoDqijA.png) no-repeat}a.b-footer__link_local:hover .b-footer__img{background-position:0 -22px}.b-footer__link,.b-footer .b-pseudo-link{color:#444;white-space:nowrap}.b-footer .b-mail-icon{margin-right:2px;vertical-align:middle}.b-footer__link_local{position:relative;margin-left:15px;color:#318800}.b-footer__link_mobile{color:#318800}.b-header .b-stamp{position:absolute;margin:0}.b-header-search+.b-mail-dropdown{margin:3px 0 0 20px;display:inline-block}.m-loaded .b-header__middle .b-header-search_custom,.m-loaded .b-header__middle .b-header-search_custom+.b-mail-dropdown,.b-header-search{visibility:hidden}.b-header-search{position:relative;margin:3px 0 0 7px;padding:3px 7px 3px 3px;width:50%;max-width:920px;display:none;vertical-align:top;background-color:#fc0}.m-loaded .b-header-search{visibility:inherit}.b-header-search:after{content:"";position:absolute;right:0;top:50%;overflow:hidden;width:20px;height:20px;-webkit-transform:translate(50%,-50%)scale(.54,1)rotate(45deg);-moz-transform:translate(50%,-50%)scale(.54,1)rotate(45deg);-o-transform:translate(50%,-50%)scale(.54,1)rotate(45deg);-ms-transform:translate(50%,-50%)scale(.54,1)rotate(45deg);transform:translate(50%,-50%)scale(.54,1)rotate(45deg);background:-webkit-linear-gradient(45deg,transparent 50%,#fc0 50%);background:-moz-linear-gradient(45deg,transparent 50%,#fc0 50%);background:-o-linear-gradient(45deg,transparent 50%,#fc0 50%);background:-ms-linear-gradient(45deg,transparent 50%,#fc0 50%);background:linear-gradient(45deg,transparent 50%,#fc0 50%)}.ie9 .b-header-search__arrow{font-size:0;line-height:0;position:absolute;top:0;right:-21px;height:0;width:0;border-width:14px 14px 14px 7px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #fc0}.b-header-search__holder{height:22px;padding:0;display:block;margin:0 72px 0 0}.m-locale_tr .b-header-search__holder{margin-right:55px}.m-locale_tt .b-header-search__holder,.m-locale_kk .b-header-search__holder{margin-right:65px}.m-locale_az .b-header-search__holder{margin-right:68px}.m-locale_ka .b-header-search__holder,.m-locale_ro .b-header-search__holder{margin-right:71px}.m-locale_hy .b-header-search__holder{margin-right:74px}.m-locale_en .b-header-search__holder,.m-locale_uk .b-header-search__holder{margin-right:77px}.m-locale_be .b-header-search__holder{margin-right:82px}.b-header-search__input{font-size:13px;height:13px;width:100%;margin-top:1px}.b-header-search__button{float:right}.b-header-search__button .b-mail-button__inner{background-color:#ddd}.b-header__right{position:relative;z-index:100;float:right;white-space:nowrap}.b-header__right .b-userpic{position:absolute;text-align:right}.b-header__right .b-userpic__img{max-width:16px;max-height:16px}.b-header__right__wrap{display:block;padding:4px 0}.b-header .b-link_exit{float:right;clear:right;display:inline}.b-header .b-link_entrance,.b-header .b-link_help{float:right;clear:right;display:inline;margin:0 12px 0 1em}.b-header .b-link_setup{margin:0 11px 0 0}.b-header .b-link_exit{margin:4px 12px 0 1em}.b-header .b-link_relax{cursor:pointer;float:left;clear:left}.b-header__middle .b-mail-dropdown,.b-header__right__wrap{visibility:hidden}.m-loaded .b-header__middle .b-mail-dropdown,.m-loaded .b-header__right__wrap{visibility:visible}.b-link_header{display:inline-block;padding:2px 7px;text-decoration:none}.b-link_header,.b-link_header.b-link_js{color:#000}.b-header .b-link_current{font-weight:700}.b-link_header .b-link__i{border-bottom-width:0!important}A.b-link_header:hover{text-decoration:underline}A.b-link_header:hover .b-link__i{border-bottom-width:1px!important}.b-header{height:46px;background:#595959 url("//mailstatic.yandex.net/neo2/_/vRDi2SBIsYmRfliviPS16S_oodg.png") 0 0 repeat-x}.b-header__middle{padding:0;margin:0 0 0 199px;overflow:hidden}.b-header__middle>.b-link_header,.b-header__middle>.b-mail-dropdown{display:none}.b-header__right{padding:0 0 0 51px;color:rgba(255,255,255,.9);text-shadow:0 -1px rgba(0,0,0,.5)}.b-header__right__wrap{display:inline}.b-header__right .b-userpic{top:0;left:32px;padding:10px 0 11px}.b-header__right .b-link_header{padding:15px 12px 16px;color:rgba(255,255,255,.9)}.b-header__right .b-link_header:hover{color:#fff;text-decoration:none}.b-header__right .b-link_header:hover .b-link__i{border-bottom:0!important}.b-header__right .b-link_setup{padding-right:34px;margin-right:0}.b-header__right:before{content:"";position:absolute;left:14px;top:5px;bottom:4px;border-left:1px solid rgba(0,0,0,.2);border-right:1px solid rgba(255,255,255,.1)}.b-link__arrow{visibility:hidden;font:9px/1 Arial,sans-serif;padding-left:2px}.m-loaded .b-link__arrow{visibility:inherit}.b-link_bg{padding:3px;background-color:#b2c0df;color:#000;text-decoration:underline;cursor:pointer}a.b-link_block{position:relative;display:inline-block;padding-left:20px;border-bottom:0}.b-link_block .b-link__i{display:block}.b-link_block .b-mail-icon,.b-link_block .b-site-icon{float:left;margin:2px 0 0 -20px;padding-right:4px}.b-link_filter .b-link{margin:2px 15px 2px 0;zoom:1}.b-link_filter .b-link_checked,.b-link_filter .b-link_checked:hover{margin:0 10px 0 -5px;padding:2px 4px;color:#ccc;background-color:#fff;border:1px solid #ccc}.b-link_w,A.b-link_w{text-decoration:none;border-bottom:0;white-space:nowrap}.b-link_w .b-link__i{text-decoration:underline}.b-link_w .b-mail-icon,.b-link_w .b-site-icon{margin-top:-2px;vertical-align:middle}.b-link_outdent{margin-left:-20px}.b-link_disabled,.b-link_disabled .b-link__i{cursor:default;text-decoration:none!important;border-bottom:0!important;color:rgba(136,136,136,.5)!important}.b-link_js,.b-link_js .b-link__i{text-decoration:none!important;border-bottom:1px dotted;cursor:pointer}.b-link_js{color:#6b7297}.b-link_quoted{text-decoration:none}.b-link_quoted .b-link__i{text-decoration:underline}.b-load-message{text-align:center;margin:130px 0 0}.b-load-message_secondary{margin:80px 0 0}.b-load-message_abook-success .b-teaser{margin:0 0 6px -15px;padding-left:0}.b-load-message_abook-success .b-teaser__stat{padding-left:0;padding-top:3px}BODY .b-load-message_abook-import{color:gray;margin:64px 0 62px}.b-load-message_update-browser{display:none}html{overflow-y:scroll}body{font:.8em Arial,sans-serif;position:relative;z-index:0;margin:0;color:#000;background:#fff}wbr{display:inline-block}A IMG{border:0}A{color:#6b7297}A:active,A:focus{outline:0}html,body{height:100%;padding-bottom:0!important}.b-page{min-height:100%}.b-page__content{z-index:1}.b-page-bottom{position:relative;margin-top:-62px;height:62px;clear:both}body:before{content:"";height:100%;float:left;width:0;margin-top:-32767px}.block-app__loading{display:none}#js .block-app__loading{display:block}.g-invisible{position:absolute!important;top:-9999px!important;left:-9999px!important}.g-invisible,.g-vhidden{visibility:hidden!important}.g-error{font-weight:700;color:#ff0d1a}.b-page_ios .g-ios-hidden{display:none!important}.mail-css-loaded{display:none}.l-head__gap{position:absolute;top:-99em}.b-page_newyear .b-decor-1{content:'';position:absolute;top:0;left:3px;z-index:101;display:block;height:117px;width:45px;background:url("//mailstatic.yandex.net/neo2/_/c3XV34Pg31ubhhdv0HOhAWdkAdE.png") no-repeat}.b-page_newyear .b-mail-icon_minify{z-index:102}.b-page_newyear.b-page_minified .b-decor-1{z-index:-1}.m-layout-3pane-wnd .b-header,.m-layout-3pane-wnd .b-layout__left,.m-layout-3pane-wnd .b-service-tabs,.m-layout-3pane-wnd .b-toolbar__block_right{display:none}.m-layout-3pane-wnd .b-layout{top:0!important}.m-layout-3pane-wnd .b-layout__right,.m-layout-3pane-wnd .b-layout:before{left:0!important}body{min-width:0;-webkit-font-smoothing:subpixel-antialiased}body,.b-layout__left{background:#f4f4f4 url("//mailstatic.yandex.net/neo2/_/IfBraQotdYJNsIgKokhBUIh1-WU.png")}.b-page__content{overflow:hidden}.b-page,.b-page__content,.b-layout,.b-header,.b-layout__left,.b-layout__right,.b-layout__right__content,.b-layout__inner,.b-layout__second-pane,.b-layout__first-pane,.block-folders,.block-labels,.m-layout_3pane-horizontal .b-layout__panes-wrapper{position:absolute!important;top:0;bottom:0;left:0;right:0;padding:0!important}.b-stamp{width:120px;height:90px;display:block;text-align:center;vertical-align:baseline;background:url("//mailstatic.yandex.net/neo2/_/14aFBmU9LWBBpo6SiR3g9oHUZyk.png") no-repeat}.b-stamp,.b-stamp__logo{position:relative;z-index:2}.b-stamp__logo{top:16px;text-decoration:none}.b-stamp__mail{font:700 125%/.82em Arial,sans-serif;position:absolute;left:10px;bottom:11px;z-index:3;width:100px;padding:.1em 0 .25em;display:block;text-decoration:underline}.b-stamp__nda{position:absolute;left:-52px;top:5px;width:81px;height:81px}.b-stamp__logo__pdd-domain{display:none}.b-header .b-stamp{top:0;left:0;z-index:auto;width:199px;height:46px;background:#f6f6f6;background:-webkit-linear-gradient(#fff,#f2f2f2);background:-moz-linear-gradient(#fff,#f2f2f2);background:-o-linear-gradient(#fff,#f2f2f2);background:-ms-linear-gradient(#fff,#f2f2f2);background:linear-gradient(#fff,#f2f2f2)}.b-header .b-stamp__nda{left:-18px;top:-29px}.b-header .b-stamp:before{content:"";position:absolute;right:0;top:50%;width:32px;height:32px;background:#f6f6f6;background:-webkit-linear-gradient(315deg,#fff,#f2f2f2);background:-moz-linear-gradient(315deg,#fff,#f2f2f2);background:-o-linear-gradient(315deg,#fff,#f2f2f2);background:-ms-linear-gradient(315deg,#fff,#f2f2f2);background:linear-gradient(135deg,#fff,#f2f2f2);-webkit-transform:translate(50%,-50%)scale(.54,1)rotate(45deg);-moz-transform:translate(50%,-50%)scale(.54,1)rotate(45deg);-o-transform:translate(50%,-50%)scale(.54,1)rotate(45deg);-ms-transform:translate(50%,-50%)scale(.54,1)rotate(45deg);transform:translate(50%,-50%)scale(.54,1)rotate(45deg)}.b-header .b-stamp:after{content:"";position:absolute;bottom:0;left:0;right:-1px;clip:rect(9px,auto,15px,0);z-index:9;height:10px;-webkit-border-radius:0 0 4px 0;border-radius:0 0 4px 0;-webkit-box-shadow:0 0 3px 0 rgba(0,0,0,.7);box-shadow:0 0 3px 0 rgba(0,0,0,.7)}.b-header .b-stamp__logo__i{position:absolute;top:11px;left:27px;width:69px;height:24px;background:url("//mailstatic.yandex.net/neo2/_/_7lNhAYnn92YZsIzR_kNxf-1Z3M.png")}.b-header .b-stamp_pdd .b-stamp__mail{display:none!important}.b-stamp__logo__pdd-domain{font-size:15px;font-weight:700;padding:15px;width:130px;display:block;overflow:hidden;text-align:left;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;color:#000}.b-stamp__logo__pdd-domain:first-letter{color:#bf3d32;text-transform:uppercase}.m-locale_en .b-stamp__logo__i,.m-locale_tr .b-stamp__logo__i,.m-locale_ro .b-stamp__logo__i,.m-locale_az .b-stamp__logo__i,.m-locale_ka .b-stamp__logo__i,.m-locale_hy .b-stamp__logo__i{background:url("//mailstatic.yandex.net/neo2/_/p8mv98HAI9zroHVV3FAMGYJf9-w.png")}.b-header .b-stamp__mail{top:12px;bottom:auto;left:97px;width:55px;height:24px;padding:0;overflow:hidden;font-size:20px;font-weight:400;line-height:29px;text-indent:101%;text-align:left;text-decoration:none;text-transform:capitalize}.b-header .b-stamp__mail .b-stamp__mail__text{text-decoration:none}.m-locale_ru .b-stamp__mail,.m-locale_tt .b-stamp__mail{top:11px;left:99px;background:url("//mailstatic.yandex.net/neo2/_/wFZi1Im2UCL7IF5mF1GuP9BA8eA.png")}.m-locale_en .b-stamp__mail,.m-locale_tr .b-stamp__mail{top:11px;width:38px;background:url("//mailstatic.yandex.net/neo2/_/wD8FYxn3W_F5IwJWDzb7JKH_vV0.png")}.m-locale_uk .b-stamp__mail,.m-locale_be .b-stamp__mail,.m-locale_kk .b-stamp__mail{width:59px;height:21px;background:url("//mailstatic.yandex.net/neo2/_/f1D73fsikTqvY8yUcaqf9KZ-hIY.png")}.m-locale_ro .b-stamp__mail{width:47px;height:26px;background:url("//mailstatic.yandex.net/neo2/_/smgpdBPc_7sjIj6oz3TDRfJO1Rc.png")}.m-locale_az .b-stamp__mail{top:14px;width:38px;height:26px;background:url("//mailstatic.yandex.net/neo2/_/1WKhBEBmqiKupkuOw3KoKJLpNR4.png")}.m-locale_hy .b-stamp__mail{top:14px;width:64px;height:20px;background:url("//mailstatic.yandex.net/neo2/_/N3YsUr1VEgHdiiuJzBa_pVuREKI.png")}.m-locale_ka .b-stamp__mail{top:17px;width:65px;height:20px;background:url("//mailstatic.yandex.net/neo2/_/SDWSkY2xvpWONXRWXp2sHjS2CCo.png")}.b-header .b-stamp__logo{position:static!important}.b-header .b-stamp__mail__text{text-decoration:underline;color:#000}.b-header .b-stamp__logo__image{display:none}.m-beta .b-stamp__beta{display:block}.m-beta .b-stamp__beta_disk{display:none}body .b-stamp__beta{position:absolute;bottom:.4em;right:-5px;width:32px;height:23px;background:url("//mailstatic.yandex.net/neo2/_/WGAfoMCgBkI-qfK8YlWboZoWzmE.png") no-repeat;display:none}.m-locale_tr .b-stamp__beta,.m-locale_en .b-stamp__beta{background:url("//mailstatic.yandex.net/neo2/_/Kcy1a1mfuF5P5R_AswSY2unwxA.png") no-repeat}.m-beta .b-stamp__beta{display:none}.b-stamp__refresh{position:absolute;top:11px;right:10px;cursor:pointer}.b-stamp__refresh .b-ico_check-mail{width:1px;height:1px;padding:25px 25px 0 0;background:url("//mailstatic.yandex.net/neo2/_/t4He8PvLwYyiJleni_0hEMgPWsk.png") 50% no-repeat}.b-stamp_loading .b-ico_check-mail{background:url("//mailstatic.yandex.net/neo2/_/LiVrk0hRmr6mhlHt8dgNEhvvWkw.gif") 50% no-repeat}.b-stamp_transparent .b-stamp__mail{background:0 0}.b-stamp_small .b-stamp__mail{font-size:100%!important}.b-stamp_add .b-stamp__add-link{width:118px;height:54px;padding:18px 0;display:block}.b-stamp_add a.b-stamp__add-link:hover{background:url(//mailstatic.yandex.net/neo2/_/1xOgNzvr9mdBFEd3TIoJLRtS1R0.png)}.b-stamp_custom .b-stamp__logo{top:6px}.b-stamp_custom .b-stamp__mail{bottom:10px}.m-skin-birthday .b-stamp_small .b-stamp__logo{top:9px}.m-skin-birthday .b-stamp_small .b-stamp__mail{bottom:10px}.b-stamp_empty{background:url(//mailstatic.yandex.net/neo2/_/qGZPS1xzk2w1WCPikMuBlZ3nSSo.png) no-repeat}.b-stamp_pdd .b-stamp__logo{top:9px;display:block;height:70px;margin:0 9px;padding:0}.b-stamp_pdd .b-stamp__logo__i{width:0;height:70px;display:-moz-inline-box;display:inline-block;vertical-align:middle}.b-stamp_pdd .b-stamp__logo__image{vertical-align:middle}.b-stamp_pdd .b-stamp__mail{display:none}.b-stamp_loading .b-stamp__mail{display:block!important}.b-userpic{display:-moz-inline-box;display:inline-block;text-align:center}.b-userpic__img,.b-userpic__i{vertical-align:middle}.b-userpic__img{border:0}.b-userpic__i{display:-moz-inline-box;display:inline-block;height:100%}.b-userpic_small{width:25px;height:25px}.g-hidden{display:none!important} diff --git a/node_modules/csscomb/node_modules/gonzales/benchmark/run b/node_modules/csscomb/node_modules/gonzales/benchmark/run new file mode 100755 index 0000000..adf8038 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/benchmark/run @@ -0,0 +1,4 @@ +#!/usr/bin/env node +// vim: syntax=javascript + +require('./benchmark').run({ async: true }); diff --git a/node_modules/csscomb/node_modules/gonzales/doc/AST.CSSP.en.md b/node_modules/csscomb/node_modules/gonzales/doc/AST.CSSP.en.md new file mode 100644 index 0000000..3d66ff4 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/doc/AST.CSSP.en.md @@ -0,0 +1,687 @@ +### 1. AST — Abstract Syntax Tree + +If you don't know what is AST, first read [Wikipedia/Abstract syntax tree] (http://en.wikipedia.org/wiki/Abstract_syntax_tree). + +#### 1.1. CSSP AST + +This AST format is compatible with [CSSP] (https://github.com/css/cssp). + +In general it looks like this: + + ['stylesheet', + ['atrules', ..], + ['s', ' '], + ['comment', 'sample'], + ['ruleset', + ['selector', ..]], + ['block', ..]] + +#### 1.2. Known issues + +*operator* / *unary* — rather artificial division, in addition *unary* is misnamed. Utilities working with AST may need to handle both types of nodes instead of one. + +*raw* — currently *raw* contains unparsed `progid` IE. In the future it makes sense to parse that parts in full AST. + +### 2. The structure of the node + +Node is a JavaScript-array in the following way: + + ['token type', <- mandatory + ] <- optional +Content can be other nodes or CSS source. + +In case `needInfo` was `true` when the style was parsed, the node includes info-object. Now it only contains the line number from which the token begins in style, but in the future there will be more information: + + [{ ln: ln }, <- info-object + 'token type', <- mandatory + ] <- optional +If you do not know in which mode was the parsing, check the type of the first element in the first node. + +### 3. Nodes + +#### stylesheet + +Style. The root node of AST. + +Consists of *ruleset* (a set of rules with selectors), *atrules* (single-line at-rule), *atruleb* (block at-rule) and *atruler* (at-rule with *ruleset*). Also there are *s* (whitespace) and *comment* (comments). + + @import "x.png"; /*sample*/ x{p:v} + + ↓ + + ['stylesheet', + ['atrules', + ['atkeyword', + ['ident', 'import']], + ['s', ' '], + ['string', '"x.png"']], + ['s', ' '], + ['comment', 'sample'], + ['s', ' '], + ['ruleset', + ['selector', + ['simpleselector', + ['ident', 'x']]], + ['block', + ['declaration', + ['property', + ['ident', 'p']], + ['value', + ['ident', 'v']]]]]] + +#### comment + +Comment. + + /* test */ + + ↓ + + ['comment', ' test '] + +#### s + +Whitespace: space, `\t`, `\n`, `\r`. + + /*a*/ /*b*/ + + ↓ + + ['comment', 'a'], + ['s', ' '], + ['comment', 'b'] + +#### string + +String. + + 'test' + "test" + + ↓ + + ['string', ''test''] + ['string', '"test"'] + +#### ident + +Identifiers or names. + +In *atkeyword*: + + @import ..; + + ↓ + + ['atkeyword', + ['ident', 'import']] +In *clazz*: + + .abc + + ↓ + + ['clazz', + ['ident', 'abc']] +In *dimension*: + + 10px + + ↓ + + ['dimension', + ['number', '10'], + ['ident', 'px']] + +#### number + +Number. + + 10 + 12.34 + + ↓ + + ['number', '10'] + ['number', '12.34'] + +#### percentage + +Number with percent sign. + + 10% + + ↓ + + ['percentage', + ['number', '10']] + +#### dimension + +Number with dimension unit. + + 10px + + ↓ + + ['dimension', + ['number', '10'], + ['ident', 'px']] + +#### shash + +Hexadecimal number in *simpleselector*. + + .. #FFF .. { .. } + + ↓ + + ['shash', 'FFF'] + +#### vhash + +Hexadecimal number in *value*. + + .. { ..: #FFF } + + ↓ + + ['vhash', 'FFF'] + +#### clazz + +Class. + + .abc + + ↓ + + ['clazz', + ['ident', 'abc']] + +#### namespace + +Namespace sign in *simpleselector*. + + *|E { .. } + + ↓ + + ['simpleselector', + ['ident', '*'], + ['namespace'], + ['ident', 'E']] + +#### combinator + +Combinator: `+`, `>`, `~`. + + x+y { .. } + + ↓ + + ['simpleselector', + ['ident', 'x'], + ['combinator', '+'], + ['ident', 'y']] + +#### operator + +Operator: `/`, `,`, `:`, `=`. + + test(x,y) + + ↓ + + ['funktion', + ['ident', 'test'], + ['functionBody', + ['ident', 'x'], + ['operator', ','], + ['ident', 'y']]] + +#### unary + +Unary (or arithmetical) sign: `+`, `-`. + + nth-last-child(3n+0) + + ↓ + + ['nthselector', + ['ident', 'nth-last-child'], + ['nth', '3n'], + ['unary', '+'], + ['nth', '0']] + +#### uri + +URI. + + @import url('/css/styles.css') + + ↓ + + ['atrules', + ['atkeyword', + ['ident', 'import']], + ['s', ' '], + ['uri', + ['string', ''/css/styles.css'']]] + +#### braces + +Braces. + + () + (1) + + ↓ + + ['braces', '(', ')'] + ['braces', '(', ')', + ['number', '1']] + +#### attrselector + +Attribute selector operator: `=`, `~=`, `^=`, `$=`, `*=`, `|=`. + + [a='b'] + + ↓ + + ['attrib', + ['ident', 'a'], + ['attrselector', '='], + ['string', ''b'']] + +#### attrib + +Attribute selector. + + [a='b'] + + ↓ + + ['attrib', + ['ident', 'a'], + ['attrselector', '='], + ['string', ''b'']] + +#### nth + +Numbers and identifiers in *nthselector*. + + :nth-child(2n+1) + + ↓ + + ['nthselector', + ['ident', 'nth-child'], + ['nth', '2n'], + ['unary', '+'], + ['nth', '1']] + +#### nthselector + +`:nth-` pseudo-classes. + +It consists of a pseudo-class *ident* and content. + + :nth-last-child(+3n-2) + + ↓ + + ['nthselector', + ['ident', 'nth-last-child'], + ['unary', '+'], + ['nth', '3n'], + ['unary', '-'], + ['nth', '2']] + +#### pseudoc + +Pseudo-class. + + test:visited + + ↓ + + ['simpleselector', + ['ident', 'test'], + ['pseudoc', + ['ident', 'visited']]] + +#### pseudoe + +Pseudo-element. + + p::first-line + + ↓ + + ['simpleselector', + ['ident', 'p'], + ['pseudoe', + ['ident', 'first-line']]] + +#### delim + +*simpleselector* delimiter in *selector*: `,`. + + x,y{ .. } + + ↓ + + ['selector', + ['simpleselector', + ['ident', 'x']], + ['delim'], + ['simpleselector', + ['ident', 'y']]] + +#### simpleselector + +Sets of selectors between a commas. + + x, y+z { .. } + + ↓ + + ['selector', + ['simpleselector', + ['ident', 'x']], + ['delim'], + ['simpleselector', + ['s', ' '], + ['ident', 'y'], + ['combinator', '+'], + ['ident', 'z'], + ['s', ' ']]] + +#### selector + +Node to store *simpleselector* groups. + + x, y, [a=b] { .. } + + ↓ + + ['selector', + ['simpleselector', + ['ident', 'x']], + ['delim'], + ['simpleselector', + ['s', ' '], + ['ident', 'y']], + ['delim'], + ['simpleselector', + ['s', ' '], + ['attrib', + ['ident', 'a'], + ['attrselector', '='], + ['ident', 'b']], + ['s', ' ']]] + +#### declaration, property, value + +Node to store *property* / *value* pairs. + +Consists of *property* (property name) and *value* (property value). + + color: red + + ↓ + + ['declaration', + ['property', + ['ident', 'color']], + ['value', + ['s', ' '], + ['ident', 'red']]] + +#### block + +Part of the style in the braces. + + { color: red } + + ↓ + + ['block', + ['s', ' '], + ['declaration', + ['property', + ['ident', 'color']], + ['value', + ['s', ' '], + ['ident', 'red'], + ['s', ' ']]]] + +#### decldelim + +*declaration* delimiter in *block*: `;`. + + x {a: b; c: d} + + ↓ + + ['block', + ['declaration', + ['property', + ['ident', 'a']], + ['value', + ['s', ' '], + ['ident', 'b']]], + ['decldelim'], + ['s', ' '], + ['declaration', + ['property', + ['ident', 'c']], + ['value', + ['s', ' '], + ['ident', 'd']]]] + +#### filter, filterv, progid + +Node to store IE `filter`. + +Consists of *property* (property name), *filterv* (contents) и *progid* (`progid` itself). + + filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='a.png',sizingMethod='scale') + + ↓ + + ['filter', + ['property', + ['ident', 'filter']], + ['filterv', + ['progid', + ['raw', 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src='a.png',sizingMethod='scale')']]]] + +#### raw + +Unparsed parts of the style. Refers to a specific browser specific extensions, usually IE `filter`. + + progid:DXImageTransform.Microsoft.AlphaImageLoader(src='a.png',sizingMethod='scale') + + ↓ + + ['progid', + ['raw', 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src='a.png',sizingMethod='scale')']]]] + +#### funktion, functionBody + +Function. + +Consists of *ident* (function name) and *functionBody* (function body). + + color: rgb(255,0,0) + + ↓ + + ['declaration', + ['property', + ['ident', 'color']], + ['value', + ['s', ' '], + ['funktion', + ['ident', 'rgb'], + ['functionBody', + ['number', '255'], + ['operator', ','], + ['number', '0'], + ['operator', ','], + ['number', '0']]]]] + +#### functionExpression + +Node to store `expression`. + + left:expression(document.body.offsetWidth+1) + + ↓ + + ['declaration', + ['property', + ['ident', 'left']], + ['value', + ['functionExpression', 'document.body.offsetWidth+1']]] + +#### important + +`!important` keyword. + + a: b !important + + ↓ + + ['declaration', + ['property', + ['ident', 'a']], + ['value', + ['s', ' '], + ['ident', 'b'], + ['s', ' '], + ['important']]] + +#### ruleset + +A set of rules with selectors. + +Consists of *selector* (selector) and *block* (a set of rules). + + x, y {p:v} + + ↓ + + ['ruleset', + ['selector', + ['simpleselector', + ['ident', 'x']], + ['delim'], + ['simpleselector', + ['s', ' '], + ['ident', 'y'], + ['s', ' ']]], + ['block', + ['declaration', + ['property', + ['ident', 'p']], + ['value', + ['ident', 'v']]]]] + +#### atkeyword + +at-rule identifier. + + @font-face .. + + ↓ + + ['atkeyword', + ['ident', 'font-face']] + +#### atrules + +Singleline at-rule. + +Consists of *atkeyword* (at-rule identifier) and the rule. + + @import url('/css/styles.css') + + ↓ + + ['atrules', + ['atkeyword', + ['ident', 'import']], + ['s', ' '], + ['uri', + ['string', ''/css/styles.css'']]] + +#### atruleb + +Block at-rule. + +Consists of *atkeyword* (at-rule identifier), rule and block. + + @test x y {p:v} + + ↓ + + ['atruleb', + ['atkeyword', + ['ident', 'test']], + ['s', ' '], + ['ident', 'x'], + ['s', ' '], + ['ident', 'y'], + ['s', ' '], + ['block', + ['declaration', + ['property', + ['ident', 'p']], + ['value', + ['ident', 'v']]]]] + +#### atruler, atrulerq, atrulers + +At-rule with *ruleset*. + +Consists of *atkeyword* (at-rule identifier), *atrulerq* (rule) and *atrulers* (style). + + @media x y {s{p:v}} + + ↓ + + ['atruler', + ['atkeyword', + ['ident', 'media']], + ['atrulerq', + ['s', ' '], + ['ident', 'x'], + ['s', ' '], + ['ident', 'y'], + ['s', ' ']], + ['atrulers', + ['ruleset', + ['selector', + ['simpleselector', + ['ident', 's']]], + ['block', + ['declaration', + ['property', + ['ident', 'p']], + ['value', + ['ident', 'v']]]]]]] + +#### unknown + +Node to store invalid (or unknown) parts of the style, that parser can extract and continue on. + + // invalid + + ↓ + + ['stylesheet', + ['unknown', '// invalid']] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/doc/AST.CSSP.ru.md b/node_modules/csscomb/node_modules/gonzales/doc/AST.CSSP.ru.md new file mode 100644 index 0000000..d0cbb56 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/doc/AST.CSSP.ru.md @@ -0,0 +1,695 @@ +### 1. AST — Abstract Syntax Tree + +Если вы не знаете, что такое AST, сначала почитайте [Wikipedia/Abstract syntax tree] (http://en.wikipedia.org/wiki/Abstract_syntax_tree). + +#### 1.1. CSSP AST + +Данный формат AST обеспечивает совместимость с [CSSP] (https://github.com/css/cssp). + +В общем виде выглядит вот так: + + ['stylesheet', + ['atrules', ..], + ['s', ' '], + ['comment', 'sample'], + ['ruleset', + ['selector', ..]], + ['block', ..]] + +#### 1.2. Известные проблемы + +*operator* / *unary* — довольно искусственное разделение, вдобавок *unary* неверно назван. Утилитам, работающим с AST, может потребоваться обрабатывать узлы обоих типов вместо одного. + +*raw* — в данный момент *raw* содержит неразобранный `progid` IE. Вероятно, в будущем имеет смысл всё-таки разбирать эту часть в полноценный AST. + +### 2. Структура узла + +Узел являет собою JavaScript-массив по следующей схеме: + + ['тип узла', <- обязательно, есть у каждого узла + <содержимое>] <- опционально +Содержимым могут быть как другие узлы, так и текст CSS. + +В случае, когда AST разбирается в режиме `needInfo`, в узел включается info-object. Сейчас в нём только номер строки, с которой начинается текст данного узла в стиле, но в будущем информации будет больше: + + [{ ln: ln }, <- info-object + 'тип узла', <- обязательно, есть у каждого узла + <содержимое>] <- опционально +Если в ваш код приехал AST и вы не знаете, в каком режиме был разбор, проверьте тип первого элемента у первого узла. + +### 3. Узлы + +#### stylesheet + +Стиль. Корневой узел AST. + +Состоит из *ruleset* (набор правил с селекторами), *atrules* (однострочное at-правило), *atruleb* (блочное at-правило) и *atruler* (at-правило с *ruleset*). Эти узлы перемежаются *s* (пробельные символы) и *comment* (коментарии). + + @import "x.png"; /*sample*/ x{p:v} + + ↓ + + ['stylesheet', + ['atrules', + ['atkeyword', + ['ident', 'import']], + ['s', ' '], + ['string', '"x.png"']], + ['s', ' '], + ['comment', 'sample'], + ['s', ' '], + ['ruleset', + ['selector', + ['simpleselector', + ['ident', 'x']]], + ['block', + ['declaration', + ['property', + ['ident', 'p']], + ['value', + ['ident', 'v']]]]]] + +#### comment + +Коментарий. + + /* test */ + + ↓ + + ['comment', ' test '] + +#### s + +Пробельный символ: пробел, `\t`, `\n`, `\r`. + + /*a*/ /*b*/ + + ↓ + + ['comment', 'a'], + ['s', ' '], + ['comment', 'b'] + +#### string + +Строка. + + 'test' + "test" + + ↓ + + ['string', ''test''] + ['string', '"test"'] + +#### ident + +Идентификатор или имя. Идентификаторы в CSS встречаются на каждом шагу, потому примеры покажут лишь несколько вариантов. + +В *atkeyword*: + + @import ..; + + ↓ + + ['atkeyword', + ['ident', 'import']] +В *clazz*: + + .abc + + ↓ + + ['clazz', + ['ident', 'abc']] +В *dimension*: + + 10px + + ↓ + + ['dimension', + ['number', '10'], + ['ident', 'px']] + +#### number + +Число. + + 10 + 12.34 + + ↓ + + ['number', '10'] + ['number', '12.34'] + +#### percentage + +Число с процентом. + + 10% + + ↓ + + ['percentage', + ['number', '10']] + +#### dimension + +Число с единицей длины. + + 10px + + ↓ + + ['dimension', + ['number', '10'], + ['ident', 'px']] + +#### shash + +Шестнадцатиричное число в контексте *simpleselector*. + + .. #FFF .. { .. } + + ↓ + + ['shash', 'FFF'] + +#### vhash + +Шестнадцатиричное число в контексте *value*. + + .. { ..: #FFF } + + ↓ + + ['vhash', 'FFF'] + +#### clazz + +Класс. + + .abc + + ↓ + + ['clazz', + ['ident', 'abc']] + +#### namespace + +Символ пространства имён в *simpleselector*. + + *|E { .. } + + ↓ + + ['simpleselector', + ['ident', '*'], + ['namespace'], + ['ident', 'E']] + +#### combinator + +Комбинаторный оператор: `+`, `>`, `~`. + +Контекст `simpleselector`. + + x+y { .. } + + ↓ + + ['simpleselector', + ['ident', 'x'], + ['combinator', '+'], + ['ident', 'y']] + +#### operator + +Оператор: `/`, `,`, `:`, `=`. + +С некоторой натяжкой можно сказать, что этот узел отвечает за "разделяющую пунктуацию" вне *simpleselector*, обычно в функциях. + + test(x,y) + + ↓ + + ['funktion', + ['ident', 'test'], + ['functionBody', + ['ident', 'x'], + ['operator', ','], + ['ident', 'y']]] + +#### unary + +Унарный оператор: `+`, `-`. + +Везде (чаще в функциях), где по контексту подразумевается "арифметический" смысл операторов `+` и `-`. + + nth-last-child(3n+0) + + ↓ + + ['nthselector', + ['ident', 'nth-last-child'], + ['nth', '3n'], + ['unary', '+'], + ['nth', '0']] + +#### uri + +URI. + + @import url('/css/styles.css') + + ↓ + + ['atrules', + ['atkeyword', + ['ident', 'import']], + ['s', ' '], + ['uri', + ['string', ''/css/styles.css'']]] + +#### braces + +Скобки всех типов. + +Обратите внимание на то, что в узле сначала следуют скобки, а потом содержимое скобок. + + () + (1) + + ↓ + + ['braces', '(', ')'] + ['braces', '(', ')', + ['number', '1']] + +#### attrselector + +Оператор селектора атрибутов: `=`, `~=`, `^=`, `$=`, `*=`, `|=`. + + [a='b'] + + ↓ + + ['attrib', + ['ident', 'a'], + ['attrselector', '='], + ['string', ''b'']] + +#### attrib + +Селектор атрибутов. + + [a='b'] + + ↓ + + ['attrib', + ['ident', 'a'], + ['attrselector', '='], + ['string', ''b'']] + +#### nth + +Числа и идентификаторы в контексте *nthselector*. + + :nth-child(2n+1) + + ↓ + + ['nthselector', + ['ident', 'nth-child'], + ['nth', '2n'], + ['unary', '+'], + ['nth', '1']] + +#### nthselector + +Узел для `:nth-` псевдоклассов. + +Состоит из идентификатора псевдокласса и содержимого. + + :nth-last-child(+3n-2) + + ↓ + + ['nthselector', + ['ident', 'nth-last-child'], + ['unary', '+'], + ['nth', '3n'], + ['unary', '-'], + ['nth', '2']] + +#### pseudoc + +Псевдокласс. + + test:visited + + ↓ + + ['simpleselector', + ['ident', 'test'], + ['pseudoc', + ['ident', 'visited']]] + +#### pseudoe + +Псевдоэлемент. + + p::first-line + + ↓ + + ['simpleselector', + ['ident', 'p'], + ['pseudoe', + ['ident', 'first-line']]] + +#### delim + +Разделитель *simpleselector* в *selector*: `,`. + + x,y{ .. } + + ↓ + + ['selector', + ['simpleselector', + ['ident', 'x']], + ['delim'], + ['simpleselector', + ['ident', 'y']]] + +#### simpleselector + +Наборы селекторов между разделяющими запятыми. + + x, y+z { .. } + + ↓ + + ['selector', + ['simpleselector', + ['ident', 'x']], + ['delim'], + ['simpleselector', + ['s', ' '], + ['ident', 'y'], + ['combinator', '+'], + ['ident', 'z'], + ['s', ' ']]] + +#### selector + +Узел для хранения группы *simpleselector*. + + x, y, [a=b] { .. } + + ↓ + + ['selector', + ['simpleselector', + ['ident', 'x']], + ['delim'], + ['simpleselector', + ['s', ' '], + ['ident', 'y']], + ['delim'], + ['simpleselector', + ['s', ' '], + ['attrib', + ['ident', 'a'], + ['attrselector', '='], + ['ident', 'b']], + ['s', ' ']]] + +#### declaration, property, value + +Узел для хранения пары свойство / значение. + +Состоит из *property* (идентификатор свойства) и *value* (значение свойства). + + color: red + + ↓ + + ['declaration', + ['property', + ['ident', 'color']], + ['value', + ['s', ' '], + ['ident', 'red']]] + +#### block + +Часть стиля в фигурных скобках. + + { color: red } + + ↓ + + ['block', + ['s', ' '], + ['declaration', + ['property', + ['ident', 'color']], + ['value', + ['s', ' '], + ['ident', 'red'], + ['s', ' ']]]] + +#### decldelim + +Разделитель *declaration* в *block*: `;`. + + x {a: b; c: d} + + ↓ + + ['block', + ['declaration', + ['property', + ['ident', 'a']], + ['value', + ['s', ' '], + ['ident', 'b']]], + ['decldelim'], + ['s', ' '], + ['declaration', + ['property', + ['ident', 'c']], + ['value', + ['s', ' '], + ['ident', 'd']]]] + +#### filter, filterv, progid + +Узел для хранения IE `filter`. + +Состоит из *property* (идентификатор свойства), *filterv* (содержание) и *progid* (собственно, `progid`). + + filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='a.png',sizingMethod='scale') + + ↓ + + ['filter', + ['property', + ['ident', 'filter']], + ['filterv', + ['progid', + ['raw', 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src='a.png',sizingMethod='scale')']]]] + +#### raw + +Те части стиля, что не разбираются в AST. Относится к специфичным для браузеров вставкам, обычно IE `filter`. + + progid:DXImageTransform.Microsoft.AlphaImageLoader(src='a.png',sizingMethod='scale') + + ↓ + + ['progid', + ['raw', 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src='a.png',sizingMethod='scale')']]]] + +#### funktion, functionBody + +Функция. + +Состоит из *ident* (имя функции) и *functionBody* (тело функции). + + color: rgb(255,0,0) + + ↓ + + ['declaration', + ['property', + ['ident', 'color']], + ['value', + ['s', ' '], + ['funktion', + ['ident', 'rgb'], + ['functionBody', + ['number', '255'], + ['operator', ','], + ['number', '0'], + ['operator', ','], + ['number', '0']]]]] + +#### functionExpression + +Узел для хранения `expression`. + + left:expression(document.body.offsetWidth+1) + + ↓ + + ['declaration', + ['property', + ['ident', 'left']], + ['value', + ['functionExpression', 'document.body.offsetWidth+1']]] + +#### important + +Ключевое слово `!important`. + + a: b !important + + ↓ + + ['declaration', + ['property', + ['ident', 'a']], + ['value', + ['s', ' '], + ['ident', 'b'], + ['s', ' '], + ['important']]] + +#### ruleset + +Набор правил с селекторами. + +Состоит из *selector* (селекторы) и *block* (набор правил). + + x, y {p:v} + + ↓ + + ['ruleset', + ['selector', + ['simpleselector', + ['ident', 'x']], + ['delim'], + ['simpleselector', + ['s', ' '], + ['ident', 'y'], + ['s', ' ']]], + ['block', + ['declaration', + ['property', + ['ident', 'p']], + ['value', + ['ident', 'v']]]]] + +#### atkeyword + +Идентификатор at-правила. + + @font-face .. + + ↓ + + ['atkeyword', + ['ident', 'font-face']] + +#### atrules + +Однострочное at-правило. + +Состоит из *atkeyword* (идентификатор правила) и собственно правила. + + @import url('/css/styles.css') + + ↓ + + ['atrules', + ['atkeyword', + ['ident', 'import']], + ['s', ' '], + ['uri', + ['string', ''/css/styles.css'']]] + +#### atruleb + +Блочное at-правило. + +Состоит из *atkeyword* (идентификатор правила), правила и блока. + + @test x y {p:v} + + ↓ + + ['atruleb', + ['atkeyword', + ['ident', 'test']], + ['s', ' '], + ['ident', 'x'], + ['s', ' '], + ['ident', 'y'], + ['s', ' '], + ['block', + ['declaration', + ['property', + ['ident', 'p']], + ['value', + ['ident', 'v']]]]] + +#### atruler, atrulerq, atrulers + +At-правило с *ruleset*. + +Состоит из *atkeyword* (идентификатор правила), *atrulerq* (правила) и *atrulers* (стиля). + + @media x y {s{p:v}} + + ↓ + + ['atruler', + ['atkeyword', + ['ident', 'media']], + ['atrulerq', + ['s', ' '], + ['ident', 'x'], + ['s', ' '], + ['ident', 'y'], + ['s', ' ']], + ['atrulers', + ['ruleset', + ['selector', + ['simpleselector', + ['ident', 's']]], + ['block', + ['declaration', + ['property', + ['ident', 'p']], + ['value', + ['ident', 'v']]]]]]] + +#### unknown + +Узел для того, что парсер не считает CSS, но может выделить и продолжить работу дальше. + + // invalid + + ↓ + + ['stylesheet', + ['unknown', '// invalid']] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/doc/CSSP.USAGE.en.md b/node_modules/csscomb/node_modules/gonzales/doc/CSSP.USAGE.en.md new file mode 100644 index 0000000..6527489 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/doc/CSSP.USAGE.en.md @@ -0,0 +1,97 @@ +### Gonzales CSSP usage + +#### 1. Sample + +With the help of this sample, you can check if Gonzales is installed correctly and if its (three) functions are working properly. + +It is assumed that in the production code you will change AST in a more intelligent way. + +Sample code: + + var gonzales = require('gonzales'), + src = 'a { color: red }', + ast = gonzales.srcToCSSP(src); + + console.log('== SRC:'); + console.log(src); + + console.log('\n== SRC -> AST:'); + console.log(gonzales.csspToTree(ast)); + + ast[1][1][1][1][1] = 'b'; + + console.log('\n== AST\':'); + console.log(gonzales.csspToTree(ast)); + + console.log('\n== AST\' -> SRC:'); + console.log(gonzales.csspToSrc(ast)); +Result: + + == SRC: + a { color: red } + + == SRC -> AST: + ['stylesheet', + ['ruleset', + ['selector', + ['simpleselector', + ['ident', 'a'], + ['s', ' ']]], + ['block', + ['s', ' '], + ['declaration', + ['property', + ['ident', 'color']], + ['value', + ['s', ' '], + ['ident', 'red'], + ['s', ' ']]]]]] + + == AST': + ['stylesheet', + ['ruleset', + ['selector', + ['simpleselector', + ['ident', 'b'], + ['s', ' ']]], + ['block', + ['s', ' '], + ['declaration', + ['property', + ['ident', 'color']], + ['value', + ['s', ' '], + ['ident', 'red'], + ['s', ' ']]]]]] + + == AST' -> SRC: + b { color: red } + +#### 2. API + +In Node.js you can use Gonzales module this way: `gonzales = require('gonzales')`. + +You can use CSSP AST through the next functions. + +##### SRC -> AST + +It parses source style to AST: `gonzales.srcToCSSP(src, rule, needInfo)`, where: + +* `src` — a string with the CSS style; +* `rule` — a string with the token type (in case the style is not complete); for example, you want to parse only *declaration*, then you have to call `srcToCSSP('color: red', 'declaration')`; in case the style is complete and you don't need an info-object, the call is shortned to `srcToCSSP(src)`; +* `needInfo` — whether to include info-object into AST; in most cases you don't need it, but if it is included, you have to pass this `true` value in all functions with `needInfo` argument in signature. + +##### AST -> SRC + +Translates AST to style: `gonzales.csspToSrc(ast, hasInfo)`, where: + +* `ast` — AST to be translated; +* `needInfo` — whether an info-object is included into AST; in case it was when the style was parsed, you have to make it `true` here as well. + +##### AST -> TREE + +Translates AST to the string representation of the tree: `gonzales.csspToTree(ast)`, where: + +* `ast` — AST to be translated. + +This function is useful for debugging or learning purposes. diff --git a/node_modules/csscomb/node_modules/gonzales/doc/CSSP.USAGE.ru.md b/node_modules/csscomb/node_modules/gonzales/doc/CSSP.USAGE.ru.md new file mode 100644 index 0000000..7b7da19 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/doc/CSSP.USAGE.ru.md @@ -0,0 +1,97 @@ +### Использование Gonzales CSSP + +#### 1. Пример + +С помощью примера вы можете проверить правильность установки Gonzales и работоспособность всех его (трёх) функций. + +Предполагается, что в production коде вы будете изменять AST более интеллектуально. + +Код примера: + + var gonzales = require('gonzales'), + src = 'a { color: red }', + ast = gonzales.srcToCSSP(src); + + console.log('== SRC:'); + console.log(src); + + console.log('\n== SRC -> AST:'); + console.log(gonzales.csspToTree(ast)); + + ast[1][1][1][1][1] = 'b'; + + console.log('\n== AST\':'); + console.log(gonzales.csspToTree(ast)); + + console.log('\n== AST\' -> SRC:'); + console.log(gonzales.csspToSrc(ast)); +Результат выполнения: + + == SRC: + a { color: red } + + == SRC -> AST: + ['stylesheet', + ['ruleset', + ['selector', + ['simpleselector', + ['ident', 'a'], + ['s', ' ']]], + ['block', + ['s', ' '], + ['declaration', + ['property', + ['ident', 'color']], + ['value', + ['s', ' '], + ['ident', 'red'], + ['s', ' ']]]]]] + + == AST': + ['stylesheet', + ['ruleset', + ['selector', + ['simpleselector', + ['ident', 'b'], + ['s', ' ']]], + ['block', + ['s', ' '], + ['declaration', + ['property', + ['ident', 'color']], + ['value', + ['s', ' '], + ['ident', 'red'], + ['s', ' ']]]]]] + + == AST' -> SRC: + b { color: red } + +#### 2. API + +В Node.js подключить модуль можно так: `gonzales = require('gonzales')`. + +Работать с CSSP AST можно через следующие функции. + +##### SRC -> AST + +Разбирает исходный стиль в AST: `gonzales.srcToCSSP(src, rule, needInfo)`, где: + +* `src` — строка со стилем; +* `rule` — строка с типом токена, если стиль не является полным; например, вы хотите разобрать только *declaration*, в таком случае следует вызвать `srcToCSSP('color: red', 'declaration')`; если же стиль полный и info-object не нужен, вызов сокращается до `srcToCSSP(src)`; +* `needInfo` — включать ли info-object в AST; в большинстве случаев вам это не потребуется, но если включили, вы должны передавать то же значение `true` во все методы, где фигурирует аргумент `needInfo`. + +##### AST -> SRC + +Транслирует AST в стиль: `gonzales.csspToSrc(ast, hasInfo)`, где: + +* `ast` — AST, который требуется транслировать; +* `needInfo` — включен ли info-object в AST; если при разборе стиля в AST `needInfo` был включен, здесь его тоже надо включить. + +##### AST -> TREE + +Транслирует AST в строковое представление дерева: `gonzales.csspToTree(ast)`, где: + +* `ast` — AST, который требуется транслировать. + +Эта функция полезна на стадии отладки или обучения. diff --git a/node_modules/csscomb/node_modules/gonzales/lib/cssp.translator.node.js b/node_modules/csscomb/node_modules/gonzales/lib/cssp.translator.node.js new file mode 100644 index 0000000..9b24bf2 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/lib/cssp.translator.node.js @@ -0,0 +1,102 @@ +// version: 1.0.0 + +function csspToSrc(tree, hasInfo) { + + var _m_simple = { + 'unary': 1, 'nth': 1, 'combinator': 1, 'ident': 1, 'number': 1, 's': 1, + 'string': 1, 'attrselector': 1, 'operator': 1, 'raw': 1, 'unknown': 1 + }, + _m_composite = { + 'simpleselector': 1, 'dimension': 1, 'selector': 1, 'property': 1, 'value': 1, + 'filterv': 1, 'progid': 1, 'ruleset': 1, 'atruleb': 1, 'atrulerq': 1, 'atrulers': 1, + 'stylesheet': 1 + }, + _m_primitive = { + 'cdo': 'cdo', 'cdc': 'cdc', 'decldelim': ';', 'namespace': '|', 'delim': ',' + }; + + function _t(tree) { + var t = tree[hasInfo? 1 : 0]; + if (t in _m_primitive) return _m_primitive[t]; + else if (t in _m_simple) return _simple(tree); + else if (t in _m_composite) return _composite(tree); + return _unique[t](tree); + } + + function _composite(t, i) { + var s = ''; + i = i === undefined ? (hasInfo? 2 : 1) : i; + for (; i < t.length; i++) s += _t(t[i]); + return s; + } + + function _simple(t) { + return t[hasInfo? 2 : 1]; + } + + var _unique = { + percentage: function(t) { + return _t(t[hasInfo? 2 : 1]) + '%'; + }, + comment: function (t) { + return '/*' + t[hasInfo? 2 : 1] + '*/'; + }, + clazz: function(t) { + return '.' + _t(t[hasInfo? 2 : 1]); + }, + atkeyword: function(t) { + return '@' + _t(t[hasInfo? 2 : 1]); + }, + shash: function (t) { + return '#' + t[hasInfo? 2 : 1]; + }, + vhash: function(t) { + return '#' + t[hasInfo? 2 : 1]; + }, + attrib: function(t) { + return '[' + _composite(t) + ']'; + }, + important: function(t) { + return '!' + _composite(t) + 'important'; + }, + nthselector: function(t) { + return ':' + _simple(t[hasInfo? 2 : 1]) + '(' + _composite(t, hasInfo? 3 : 2) + ')'; + }, + funktion: function(t) { + return _simple(t[hasInfo? 2 : 1]) + '(' + _composite(t[hasInfo? 3: 2]) + ')'; + }, + declaration: function(t) { + return _t(t[hasInfo? 2 : 1]) + ':' + _t(t[hasInfo? 3 : 2]); + }, + filter: function(t) { + return _t(t[hasInfo? 2 : 1]) + ':' + _t(t[hasInfo? 3 : 2]); + }, + block: function(t) { + return '{' + _composite(t) + '}'; + }, + braces: function(t) { + return t[hasInfo? 2 : 1] + _composite(t, hasInfo? 4 : 3) + t[hasInfo? 3 : 2]; + }, + atrules: function(t) { + return _composite(t) + ';'; + }, + atruler: function(t) { + return _t(t[hasInfo? 2 : 1]) + _t(t[hasInfo? 3 : 2]) + '{' + _t(t[hasInfo? 4 : 3]) + '}'; + }, + pseudoe: function(t) { + return '::' + _t(t[hasInfo? 2 : 1]); + }, + pseudoc: function(t) { + return ':' + _t(t[hasInfo? 2 : 1]); + }, + uri: function(t) { + return 'url(' + _composite(t) + ')'; + }, + functionExpression: function(t) { + return 'expression(' + t[hasInfo? 2 : 1] + ')'; + } + }; + + return _t(tree); +} +exports.csspToSrc = csspToSrc; diff --git a/node_modules/csscomb/node_modules/gonzales/lib/gonzales.cssp.node.js b/node_modules/csscomb/node_modules/gonzales/lib/gonzales.cssp.node.js new file mode 100644 index 0000000..d0b6d2a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/lib/gonzales.cssp.node.js @@ -0,0 +1,2295 @@ +var srcToCSSP = (function() { +var TokenType = { + StringSQ: 'StringSQ', + StringDQ: 'StringDQ', + CommentML: 'CommentML', + CommentSL: 'CommentSL', + + Newline: 'Newline', + Space: 'Space', + Tab: 'Tab', + + ExclamationMark: 'ExclamationMark', // ! + QuotationMark: 'QuotationMark', // " + NumberSign: 'NumberSign', // # + DollarSign: 'DollarSign', // $ + PercentSign: 'PercentSign', // % + Ampersand: 'Ampersand', // & + Apostrophe: 'Apostrophe', // ' + LeftParenthesis: 'LeftParenthesis', // ( + RightParenthesis: 'RightParenthesis', // ) + Asterisk: 'Asterisk', // * + PlusSign: 'PlusSign', // + + Comma: 'Comma', // , + HyphenMinus: 'HyphenMinus', // - + FullStop: 'FullStop', // . + Solidus: 'Solidus', // / + Colon: 'Colon', // : + Semicolon: 'Semicolon', // ; + LessThanSign: 'LessThanSign', // < + EqualsSign: 'EqualsSign', // = + GreaterThanSign: 'GreaterThanSign', // > + QuestionMark: 'QuestionMark', // ? + CommercialAt: 'CommercialAt', // @ + LeftSquareBracket: 'LeftSquareBracket', // [ + ReverseSolidus: 'ReverseSolidus', // \ + RightSquareBracket: 'RightSquareBracket', // ] + CircumflexAccent: 'CircumflexAccent', // ^ + LowLine: 'LowLine', // _ + LeftCurlyBracket: 'LeftCurlyBracket', // { + VerticalLine: 'VerticalLine', // | + RightCurlyBracket: 'RightCurlyBracket', // } + Tilde: 'Tilde', // ~ + + Identifier: 'Identifier', + DecimalNumber: 'DecimalNumber' +}; + +var getTokens = (function() { + + var Punctuation, + urlMode = false, + blockMode = 0; + + Punctuation = { + ' ': TokenType.Space, + '\n': TokenType.Newline, + '\r': TokenType.Newline, + '\t': TokenType.Tab, + '!': TokenType.ExclamationMark, + '"': TokenType.QuotationMark, + '#': TokenType.NumberSign, + '$': TokenType.DollarSign, + '%': TokenType.PercentSign, + '&': TokenType.Ampersand, + '\'': TokenType.Apostrophe, + '(': TokenType.LeftParenthesis, + ')': TokenType.RightParenthesis, + '*': TokenType.Asterisk, + '+': TokenType.PlusSign, + ',': TokenType.Comma, + '-': TokenType.HyphenMinus, + '.': TokenType.FullStop, + '/': TokenType.Solidus, + ':': TokenType.Colon, + ';': TokenType.Semicolon, + '<': TokenType.LessThanSign, + '=': TokenType.EqualsSign, + '>': TokenType.GreaterThanSign, + '?': TokenType.QuestionMark, + '@': TokenType.CommercialAt, + '[': TokenType.LeftSquareBracket, + // '\\': TokenType.ReverseSolidus, + ']': TokenType.RightSquareBracket, + '^': TokenType.CircumflexAccent, + '_': TokenType.LowLine, + '{': TokenType.LeftCurlyBracket, + '|': TokenType.VerticalLine, + '}': TokenType.RightCurlyBracket, + '~': TokenType.Tilde + }; + + function isDecimalDigit(c) { + return '0123456789'.indexOf(c) >= 0; + } + + function throwError(message) { + throw message; + } + + var buffer = '', + tokens = [], + pos, + tn = 0, + ln = 1; + + function _getTokens(s) { + if (!s) return []; + + tokens = []; + + var c, cn; + + for (pos = 0; pos < s.length; pos++) { + c = s.charAt(pos); + cn = s.charAt(pos + 1); + + if (c === '/' && cn === '*') { + parseMLComment(s); + } else if (!urlMode && c === '/' && cn === '/') { + if (blockMode > 0) parseIdentifier(s); + else parseSLComment(s); + } else if (c === '"' || c === "'") { + parseString(s, c); + } else if (c === ' ') { + parseSpaces(s) + } else if (c in Punctuation) { + pushToken(Punctuation[c], c); + if (c === '\n' || c === '\r') ln++; + if (c === ')') urlMode = false; + if (c === '{') blockMode++; + if (c === '}') blockMode--; + } else if (isDecimalDigit(c)) { + parseDecimalNumber(s); + } else { + parseIdentifier(s); + } + } + + mark(); + + return tokens; + } + + function pushToken(type, value) { + tokens.push({ tn: tn++, ln: ln, type: type, value: value }); + } + + function parseSpaces(s) { + var start = pos; + + for (; pos < s.length; pos++) { + if (s.charAt(pos) !== ' ') break; + } + + pushToken(TokenType.Space, s.substring(start, pos)); + pos--; + } + + function parseMLComment(s) { + var start = pos; + + for (pos = pos + 2; pos < s.length; pos++) { + if (s.charAt(pos) === '*') { + if (s.charAt(pos + 1) === '/') { + pos++; + break; + } + } + } + + pushToken(TokenType.CommentML, s.substring(start, pos + 1)); + } + + function parseSLComment(s) { + var start = pos; + + for (pos = pos + 2; pos < s.length; pos++) { + if (s.charAt(pos) === '\n' || s.charAt(pos) === '\r') { + pos++; + break; + } + } + + pushToken(TokenType.CommentSL, s.substring(start, pos)); + pos--; + } + + function parseString(s, q) { + var start = pos; + + for (pos = pos + 1; pos < s.length; pos++) { + if (s.charAt(pos) === '\\') pos++; + else if (s.charAt(pos) === q) break; + } + + pushToken(q === '"' ? TokenType.StringDQ : TokenType.StringSQ, s.substring(start, pos + 1)); + } + + function parseDecimalNumber(s) { + var start = pos; + + for (; pos < s.length; pos++) { + if (!isDecimalDigit(s.charAt(pos))) break; + } + + pushToken(TokenType.DecimalNumber, s.substring(start, pos)); + pos--; + } + + function parseIdentifier(s) { + var start = pos; + + while (s.charAt(pos) === '/') pos++; + + for (; pos < s.length; pos++) { + if (s.charAt(pos) === '\\') pos++; + else if (s.charAt(pos) in Punctuation) break; + } + + var ident = s.substring(start, pos); + + urlMode = urlMode || ident === 'url'; + + pushToken(TokenType.Identifier, ident); + pos--; + } + + // ==================================== + // second run + // ==================================== + + function mark() { + var ps = [], // Parenthesis + sbs = [], // SquareBracket + cbs = [], // CurlyBracket + t; + + for (var i = 0; i < tokens.length; i++) { + t = tokens[i]; + switch(t.type) { + case TokenType.LeftParenthesis: + ps.push(i); + break; + case TokenType.RightParenthesis: + if (ps.length) { + t.left = ps.pop(); + tokens[t.left].right = i; + } + break; + case TokenType.LeftSquareBracket: + sbs.push(i); + break; + case TokenType.RightSquareBracket: + if (sbs.length) { + t.left = sbs.pop(); + tokens[t.left].right = i; + } + break; + case TokenType.LeftCurlyBracket: + cbs.push(i); + break; + case TokenType.RightCurlyBracket: + if (cbs.length) { + t.left = cbs.pop(); + tokens[t.left].right = i; + } + break; + } + } + } + + return function(s) { + return _getTokens(s); + }; + +}()); +// version: 1.0.0 + +var getCSSPAST = (function() { + + var tokens, + pos, + failLN = 0, + currentBlockLN = 0, + needInfo = false; + + var CSSPNodeType, + CSSLevel, + CSSPRules; + + CSSPNodeType = { + IdentType: 'ident', + AtkeywordType: 'atkeyword', + StringType: 'string', + ShashType: 'shash', + VhashType: 'vhash', + NumberType: 'number', + PercentageType: 'percentage', + DimensionType: 'dimension', + CdoType: 'cdo', + CdcType: 'cdc', + DecldelimType: 'decldelim', + SType: 's', + AttrselectorType: 'attrselector', + AttribType: 'attrib', + NthType: 'nth', + NthselectorType: 'nthselector', + NamespaceType: 'namespace', + ClazzType: 'clazz', + PseudoeType: 'pseudoe', + PseudocType: 'pseudoc', + DelimType: 'delim', + StylesheetType: 'stylesheet', + AtrulebType: 'atruleb', + AtrulesType: 'atrules', + AtrulerqType: 'atrulerq', + AtrulersType: 'atrulers', + AtrulerType: 'atruler', + BlockType: 'block', + RulesetType: 'ruleset', + CombinatorType: 'combinator', + SimpleselectorType: 'simpleselector', + SelectorType: 'selector', + DeclarationType: 'declaration', + PropertyType: 'property', + ImportantType: 'important', + UnaryType: 'unary', + OperatorType: 'operator', + BracesType: 'braces', + ValueType: 'value', + ProgidType: 'progid', + FiltervType: 'filterv', + FilterType: 'filter', + CommentType: 'comment', + UriType: 'uri', + RawType: 'raw', + FunctionBodyType: 'functionBody', + FunktionType: 'funktion', + FunctionExpressionType: 'functionExpression', + UnknownType: 'unknown' + }; + + CSSPRules = { + 'ident': function() { if (checkIdent(pos)) return getIdent() }, + 'atkeyword': function() { if (checkAtkeyword(pos)) return getAtkeyword() }, + 'string': function() { if (checkString(pos)) return getString() }, + 'shash': function() { if (checkShash(pos)) return getShash() }, + 'vhash': function() { if (checkVhash(pos)) return getVhash() }, + 'number': function() { if (checkNumber(pos)) return getNumber() }, + 'percentage': function() { if (checkPercentage(pos)) return getPercentage() }, + 'dimension': function() { if (checkDimension(pos)) return getDimension() }, +// 'cdo': function() { if (checkCDO()) return getCDO() }, +// 'cdc': function() { if (checkCDC()) return getCDC() }, + 'decldelim': function() { if (checkDecldelim(pos)) return getDecldelim() }, + 's': function() { if (checkS(pos)) return getS() }, + 'attrselector': function() { if (checkAttrselector(pos)) return getAttrselector() }, + 'attrib': function() { if (checkAttrib(pos)) return getAttrib() }, + 'nth': function() { if (checkNth(pos)) return getNth() }, + 'nthselector': function() { if (checkNthselector(pos)) return getNthselector() }, + 'namespace': function() { if (checkNamespace(pos)) return getNamespace() }, + 'clazz': function() { if (checkClazz(pos)) return getClazz() }, + 'pseudoe': function() { if (checkPseudoe(pos)) return getPseudoe() }, + 'pseudoc': function() { if (checkPseudoc(pos)) return getPseudoc() }, + 'delim': function() { if (checkDelim(pos)) return getDelim() }, + 'stylesheet': function() { if (checkStylesheet(pos)) return getStylesheet() }, + 'atruleb': function() { if (checkAtruleb(pos)) return getAtruleb() }, + 'atrules': function() { if (checkAtrules(pos)) return getAtrules() }, + 'atrulerq': function() { if (checkAtrulerq(pos)) return getAtrulerq() }, + 'atrulers': function() { if (checkAtrulers(pos)) return getAtrulers() }, + 'atruler': function() { if (checkAtruler(pos)) return getAtruler() }, + 'block': function() { if (checkBlock(pos)) return getBlock() }, + 'ruleset': function() { if (checkRuleset(pos)) return getRuleset() }, + 'combinator': function() { if (checkCombinator(pos)) return getCombinator() }, + 'simpleselector': function() { if (checkSimpleselector(pos)) return getSimpleSelector() }, + 'selector': function() { if (checkSelector(pos)) return getSelector() }, + 'declaration': function() { if (checkDeclaration(pos)) return getDeclaration() }, + 'property': function() { if (checkProperty(pos)) return getProperty() }, + 'important': function() { if (checkImportant(pos)) return getImportant() }, + 'unary': function() { if (checkUnary(pos)) return getUnary() }, + 'operator': function() { if (checkOperator(pos)) return getOperator() }, + 'braces': function() { if (checkBraces(pos)) return getBraces() }, + 'value': function() { if (checkValue(pos)) return getValue() }, + 'progid': function() { if (checkProgid(pos)) return getProgid() }, + 'filterv': function() { if (checkFilterv(pos)) return getFilterv() }, + 'filter': function() { if (checkFilter(pos)) return getFilter() }, + 'comment': function() { if (checkComment(pos)) return getComment() }, + 'uri': function() { if (checkUri(pos)) return getUri() }, + 'raw': function() { if (checkRaw(pos)) return getRaw() }, + 'funktion': function() { if (checkFunktion(pos)) return getFunktion() }, + 'functionExpression': function() { if (checkFunctionExpression(pos)) return getFunctionExpression() }, + 'unknown': function() { if (checkUnknown(pos)) return getUnknown() } + }; + + function fail(token) { + if (token && token.ln > failLN) failLN = token.ln; + } + + function throwError() { + throw new Error('Please check the validity of the CSS block starting from the line #' + currentBlockLN); + } + + function _getAST(_tokens, rule, _needInfo) { + tokens = _tokens; + needInfo = _needInfo; + pos = 0; + + markSC(); + + return rule ? CSSPRules[rule]() : CSSPRules['stylesheet'](); + } + +//any = braces | string | percentage | dimension | number | uri | functionExpression | funktion | ident | unary + function checkAny(_i) { + return checkBraces(_i) || + checkString(_i) || + checkPercentage(_i) || + checkDimension(_i) || + checkNumber(_i) || + checkUri(_i) || + checkFunctionExpression(_i) || + checkFunktion(_i) || + checkIdent(_i) || + checkUnary(_i); + } + + function getAny() { + if (checkBraces(pos)) return getBraces(); + else if (checkString(pos)) return getString(); + else if (checkPercentage(pos)) return getPercentage(); + else if (checkDimension(pos)) return getDimension(); + else if (checkNumber(pos)) return getNumber(); + else if (checkUri(pos)) return getUri(); + else if (checkFunctionExpression(pos)) return getFunctionExpression(); + else if (checkFunktion(pos)) return getFunktion(); + else if (checkIdent(pos)) return getIdent(); + else if (checkUnary(pos)) return getUnary(); + } + +//atkeyword = '@' ident:x -> [#atkeyword, x] + function checkAtkeyword(_i) { + var l; + + if (tokens[_i++].type !== TokenType.CommercialAt) return fail(tokens[_i - 1]); + + if (l = checkIdent(_i)) return l + 1; + + return fail(tokens[_i]); + } + + function getAtkeyword() { + var startPos = pos; + + pos++; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.AtkeywordType, getIdent()]: + [CSSPNodeType.AtkeywordType, getIdent()]; + } + +//attrib = '[' sc*:s0 ident:x sc*:s1 attrselector:a sc*:s2 (ident | string):y sc*:s3 ']' -> this.concat([#attrib], s0, [x], s1, [a], s2, [y], s3) +// | '[' sc*:s0 ident:x sc*:s1 ']' -> this.concat([#attrib], s0, [x], s1), + function checkAttrib(_i) { + if (tokens[_i].type !== TokenType.LeftSquareBracket) return fail(tokens[_i]); + + if (!tokens[_i].right) return fail(tokens[_i]); + + return tokens[_i].right - _i + 1; + } + + function checkAttrib1(_i) { + var start = _i; + + _i++; + + var l = checkSC(_i); // s0 + + if (l) _i += l; + + if (l = checkIdent(_i)) _i += l; // x + else return fail(tokens[_i]); + + if (l = checkSC(_i)) _i += l; // s1 + + if (l = checkAttrselector(_i)) _i += l; // a + else return fail(tokens[_i]); + + if (l = checkSC(_i)) _i += l; // s2 + + if ((l = checkIdent(_i)) || (l = checkString(_i))) _i += l; // y + else return fail(tokens[_i]); + + if (l = checkSC(_i)) _i += l; // s3 + + if (tokens[_i].type === TokenType.RightSquareBracket) return _i - start; + + return fail(tokens[_i]); + } + + function getAttrib1() { + var startPos = pos; + + pos++; + + var a = (needInfo? [{ ln: tokens[startPos].ln }, CSSPNodeType.AttribType] : [CSSPNodeType.AttribType]) + .concat(getSC()) + .concat([getIdent()]) + .concat(getSC()) + .concat([getAttrselector()]) + .concat(getSC()) + .concat([checkString(pos)? getString() : getIdent()]) + .concat(getSC()); + + pos++; + + return a; + } + + function checkAttrib2(_i) { + var start = _i; + + _i++; + + var l = checkSC(_i); + + if (l) _i += l; + + if (l = checkIdent(_i)) _i += l; + + if (l = checkSC(_i)) _i += l; + + if (tokens[_i].type === TokenType.RightSquareBracket) return _i - start; + + return fail(tokens[_i]); + } + + function getAttrib2() { + var startPos = pos; + + pos++; + + var a = (needInfo? [{ ln: tokens[startPos].ln }, CSSPNodeType.AttribType] : [CSSPNodeType.AttribType]) + .concat(getSC()) + .concat([getIdent()]) + .concat(getSC()); + + pos++; + + return a; + } + + function getAttrib() { + if (checkAttrib1(pos)) return getAttrib1(); + if (checkAttrib2(pos)) return getAttrib2(); + } + +//attrselector = (seq('=') | seq('~=') | seq('^=') | seq('$=') | seq('*=') | seq('|=')):x -> [#attrselector, x] + function checkAttrselector(_i) { + if (tokens[_i].type === TokenType.EqualsSign) return 1; + if (tokens[_i].type === TokenType.VerticalLine && (!tokens[_i + 1] || tokens[_i + 1].type !== TokenType.EqualsSign)) return 1; + + if (!tokens[_i + 1] || tokens[_i + 1].type !== TokenType.EqualsSign) return fail(tokens[_i]); + + switch(tokens[_i].type) { + case TokenType.Tilde: + case TokenType.CircumflexAccent: + case TokenType.DollarSign: + case TokenType.Asterisk: + case TokenType.VerticalLine: + return 2; + } + + return fail(tokens[_i]); + } + + function getAttrselector() { + var startPos = pos, + s = tokens[pos++].value; + + if (tokens[pos] && tokens[pos].type === TokenType.EqualsSign) s += tokens[pos++].value; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.AttrselectorType, s] : + [CSSPNodeType.AttrselectorType, s]; + } + +//atrule = atruler | atruleb | atrules + function checkAtrule(_i) { + var start = _i, + l; + + if (tokens[start].atrule_l !== undefined) return tokens[start].atrule_l; + + if (l = checkAtruler(_i)) tokens[_i].atrule_type = 1; + else if (l = checkAtruleb(_i)) tokens[_i].atrule_type = 2; + else if (l = checkAtrules(_i)) tokens[_i].atrule_type = 3; + else return fail(tokens[start]); + + tokens[start].atrule_l = l; + + return l; + } + + function getAtrule() { + switch (tokens[pos].atrule_type) { + case 1: return getAtruler(); + case 2: return getAtruleb(); + case 3: return getAtrules(); + } + } + +//atruleb = atkeyword:ak tset*:ap block:b -> this.concat([#atruleb, ak], ap, [b]) + function checkAtruleb(_i) { + var start = _i, + l; + + if (l = checkAtkeyword(_i)) _i += l; + else return fail(tokens[_i]); + + if (l = checkTsets(_i)) _i += l; + + if (l = checkBlock(_i)) _i += l; + else return fail(tokens[_i]); + + return _i - start; + } + + function getAtruleb() { + return (needInfo? + [{ ln: tokens[pos].ln }, CSSPNodeType.AtrulebType, getAtkeyword()] : + [CSSPNodeType.AtrulebType, getAtkeyword()]) + .concat(getTsets()) + .concat([getBlock()]); + } + +//atruler = atkeyword:ak atrulerq:x '{' atrulers:y '}' -> [#atruler, ak, x, y] + function checkAtruler(_i) { + var start = _i, + l; + + if (l = checkAtkeyword(_i)) _i += l; + else return fail(tokens[_i]); + + if (l = checkAtrulerq(_i)) _i += l; + + if (_i < tokens.length && tokens[_i].type === TokenType.LeftCurlyBracket) _i++; + else return fail(tokens[_i]); + + if (l = checkAtrulers(_i)) _i += l; + + if (_i < tokens.length && tokens[_i].type === TokenType.RightCurlyBracket) _i++; + else return fail(tokens[_i]); + + return _i - start; + } + + function getAtruler() { + var atruler = needInfo? + [{ ln: tokens[pos].ln }, CSSPNodeType.AtrulerType, getAtkeyword(), getAtrulerq()] : + [CSSPNodeType.AtrulerType, getAtkeyword(), getAtrulerq()]; + + pos++; + + atruler.push(getAtrulers()); + + pos++; + + return atruler; + } + +//atrulerq = tset*:ap -> [#atrulerq].concat(ap) + function checkAtrulerq(_i) { + return checkTsets(_i); + } + + function getAtrulerq() { + return (needInfo? [{ ln: tokens[pos].ln }, CSSPNodeType.AtrulerqType] : [CSSPNodeType.AtrulerqType]).concat(getTsets()); + } + +//atrulers = sc*:s0 ruleset*:r sc*:s1 -> this.concat([#atrulers], s0, r, s1) + function checkAtrulers(_i) { + var start = _i, + l; + + if (l = checkSC(_i)) _i += l; + + while ((l = checkRuleset(_i)) || (l = checkAtrule(_i)) || (l = checkSC(_i))) { + _i += l; + } + + tokens[_i].atrulers_end = 1; + + if (l = checkSC(_i)) _i += l; + + return _i - start; + } + + function getAtrulers() { + var atrulers = (needInfo? [{ ln: tokens[pos].ln }, CSSPNodeType.AtrulersType] : [CSSPNodeType.AtrulersType]).concat(getSC()), + x; + + while (!tokens[pos].atrulers_end) { + if (checkSC(pos)) { + atrulers = atrulers.concat(getSC()); + } else if (checkRuleset(pos)) { + atrulers.push(getRuleset()); + } else { + atrulers.push(getAtrule()); + } + } + + return atrulers.concat(getSC()); + } + +//atrules = atkeyword:ak tset*:ap ';' -> this.concat([#atrules, ak], ap) + function checkAtrules(_i) { + var start = _i, + l; + + if (l = checkAtkeyword(_i)) _i += l; + else return fail(tokens[_i]); + + if (l = checkTsets(_i)) _i += l; + + if (_i >= tokens.length) return _i - start; + + if (tokens[_i].type === TokenType.Semicolon) _i++; + else return fail(tokens[_i]); + + return _i - start; + } + + function getAtrules() { + var atrules = (needInfo? [{ ln: tokens[pos].ln }, CSSPNodeType.AtrulesType, getAtkeyword()] : [CSSPNodeType.AtrulesType, getAtkeyword()]).concat(getTsets()); + + pos++; + + return atrules; + } + +//block = '{' blockdecl*:x '}' -> this.concatContent([#block], x) + function checkBlock(_i) { + if (_i < tokens.length && tokens[_i].type === TokenType.LeftCurlyBracket) return tokens[_i].right - _i + 1; + + return fail(tokens[_i]); + } + + function getBlock() { + var block = needInfo? [{ ln: tokens[pos].ln }, CSSPNodeType.BlockType] : [CSSPNodeType.BlockType], + end = tokens[pos].right; + + pos++; + + while (pos < end) { + if (checkBlockdecl(pos)) block = block.concat(getBlockdecl()); + else throwError(); + } + + pos = end + 1; + + return block; + } + +//blockdecl = sc*:s0 (filter | declaration):x decldelim:y sc*:s1 -> this.concat(s0, [x], [y], s1) +// | sc*:s0 (filter | declaration):x sc*:s1 -> this.concat(s0, [x], s1) +// | sc*:s0 decldelim:x sc*:s1 -> this.concat(s0, [x], s1) +// | sc+:s0 -> s0 + + function checkBlockdecl(_i) { + var l; + + if (l = _checkBlockdecl0(_i)) tokens[_i].bd_type = 1; + else if (l = _checkBlockdecl1(_i)) tokens[_i].bd_type = 2; + else if (l = _checkBlockdecl2(_i)) tokens[_i].bd_type = 3; + else if (l = _checkBlockdecl3(_i)) tokens[_i].bd_type = 4; + else return fail(tokens[_i]); + + return l; + } + + function getBlockdecl() { + switch (tokens[pos].bd_type) { + case 1: return _getBlockdecl0(); + case 2: return _getBlockdecl1(); + case 3: return _getBlockdecl2(); + case 4: return _getBlockdecl3(); + } + } + + //sc*:s0 (filter | declaration):x decldelim:y sc*:s1 -> this.concat(s0, [x], [y], s1) + function _checkBlockdecl0(_i) { + var start = _i, + l; + + if (l = checkSC(_i)) _i += l; + + if (l = checkFilter(_i)) { + tokens[_i].bd_filter = 1; + _i += l; + } else if (l = checkDeclaration(_i)) { + tokens[_i].bd_decl = 1; + _i += l; + } else return fail(tokens[_i]); + + if (_i < tokens.length && (l = checkDecldelim(_i))) _i += l; + else return fail(tokens[_i]); + + if (l = checkSC(_i)) _i += l; + + return _i - start; + } + + function _getBlockdecl0() { + return getSC() + .concat([tokens[pos].bd_filter? getFilter() : getDeclaration()]) + .concat([getDecldelim()]) + .concat(getSC()); + } + + //sc*:s0 (filter | declaration):x sc*:s1 -> this.concat(s0, [x], s1) + function _checkBlockdecl1(_i) { + var start = _i, + l; + + if (l = checkSC(_i)) _i += l; + + if (l = checkFilter(_i)) { + tokens[_i].bd_filter = 1; + _i += l; + } else if (l = checkDeclaration(_i)) { + tokens[_i].bd_decl = 1; + _i += l; + } else return fail(tokens[_i]); + + if (l = checkSC(_i)) _i += l; + + return _i - start; + } + + function _getBlockdecl1() { + return getSC() + .concat([tokens[pos].bd_filter? getFilter() : getDeclaration()]) + .concat(getSC()); + } + + //sc*:s0 decldelim:x sc*:s1 -> this.concat(s0, [x], s1) + function _checkBlockdecl2(_i) { + var start = _i, + l; + + if (l = checkSC(_i)) _i += l; + + if (l = checkDecldelim(_i)) _i += l; + else return fail(tokens[_i]); + + if (l = checkSC(_i)) _i += l; + + return _i - start; + } + + function _getBlockdecl2() { + return getSC() + .concat([getDecldelim()]) + .concat(getSC()); + } + + //sc+:s0 -> s0 + function _checkBlockdecl3(_i) { + return checkSC(_i); + } + + function _getBlockdecl3() { + return getSC(); + } + +//braces = '(' tset*:x ')' -> this.concat([#braces, '(', ')'], x) +// | '[' tset*:x ']' -> this.concat([#braces, '[', ']'], x) + function checkBraces(_i) { + if (_i >= tokens.length || + (tokens[_i].type !== TokenType.LeftParenthesis && + tokens[_i].type !== TokenType.LeftSquareBracket) + ) return fail(tokens[_i]); + + return tokens[_i].right - _i + 1; + } + + function getBraces() { + var startPos = pos, + left = pos, + right = tokens[pos].right; + + pos++; + + var tsets = getTsets(); + + pos++; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.BracesType, tokens[left].value, tokens[right].value].concat(tsets) : + [CSSPNodeType.BracesType, tokens[left].value, tokens[right].value].concat(tsets); + } + + function checkCDC(_i) {} + + function checkCDO(_i) {} + + // node: Clazz + function checkClazz(_i) { + var l; + + if (tokens[_i].clazz_l) return tokens[_i].clazz_l; + + if (tokens[_i].type === TokenType.FullStop) { + if (l = checkIdent(_i + 1)) { + tokens[_i].clazz_l = l + 1; + return l + 1; + } + } + + return fail(tokens[_i]); + } + + function getClazz() { + var startPos = pos; + + pos++; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.ClazzType, getIdent()] : + [CSSPNodeType.ClazzType, getIdent()]; + } + + // node: Combinator + function checkCombinator(_i) { + if (tokens[_i].type === TokenType.PlusSign || + tokens[_i].type === TokenType.GreaterThanSign || + tokens[_i].type === TokenType.Tilde) return 1; + + return fail(tokens[_i]); + } + + function getCombinator() { + return needInfo? + [{ ln: tokens[pos].ln }, CSSPNodeType.CombinatorType, tokens[pos++].value] : + [CSSPNodeType.CombinatorType, tokens[pos++].value]; + } + + // node: Comment + function checkComment(_i) { + if (tokens[_i].type === TokenType.CommentML) return 1; + + return fail(tokens[_i]); + } + + function getComment() { + var startPos = pos, + s = tokens[pos].value.substring(2), + l = s.length; + + if (s.charAt(l - 2) === '*' && s.charAt(l - 1) === '/') s = s.substring(0, l - 2); + + pos++; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.CommentType, s] : + [CSSPNodeType.CommentType, s]; + } + + // declaration = property:x ':' value:y -> [#declaration, x, y] + function checkDeclaration(_i) { + var start = _i, + l; + + if (l = checkProperty(_i)) _i += l; + else return fail(tokens[_i]); + + if (_i < tokens.length && tokens[_i].type === TokenType.Colon) _i++; + else return fail(tokens[_i]); + + if (l = checkValue(_i)) _i += l; + else return fail(tokens[_i]); + + return _i - start; + } + + function getDeclaration() { + var declaration = needInfo? + [{ ln: tokens[pos].ln }, CSSPNodeType.DeclarationType, getProperty()] : + [CSSPNodeType.DeclarationType, getProperty()]; + + pos++; + + declaration.push(getValue()); + + return declaration; + } + + // node: Decldelim + function checkDecldelim(_i) { + if (_i < tokens.length && tokens[_i].type === TokenType.Semicolon) return 1; + + return fail(tokens[_i]); + } + + function getDecldelim() { + var startPos = pos; + + pos++; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.DecldelimType] : + [CSSPNodeType.DecldelimType]; + } + + // node: Delim + function checkDelim(_i) { + if (_i < tokens.length && tokens[_i].type === TokenType.Comma) return 1; + + if (_i >= tokens.length) return fail(tokens[tokens.length - 1]); + + return fail(tokens[_i]); + } + + function getDelim() { + var startPos = pos; + + pos++; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.DelimType] : + [CSSPNodeType.DelimType]; + } + + // node: Dimension + function checkDimension(_i) { + var ln = checkNumber(_i), + li; + + if (!ln || (ln && _i + ln >= tokens.length)) return fail(tokens[_i]); + + if (li = checkNmName2(_i + ln)) return ln + li; + + return fail(tokens[_i]); + } + + function getDimension() { + var startPos = pos, + n = getNumber(), + dimension = needInfo ? + [{ ln: tokens[pos].ln }, CSSPNodeType.IdentType, getNmName2()] : + [CSSPNodeType.IdentType, getNmName2()]; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.DimensionType, n, dimension] : + [CSSPNodeType.DimensionType, n, dimension]; + } + +//filter = filterp:x ':' filterv:y -> [#filter, x, y] + function checkFilter(_i) { + var start = _i, + l; + + if (l = checkFilterp(_i)) _i += l; + else return fail(tokens[_i]); + + if (tokens[_i].type === TokenType.Colon) _i++; + else return fail(tokens[_i]); + + if (l = checkFilterv(_i)) _i += l; + else return fail(tokens[_i]); + + return _i - start; + } + + function getFilter() { + var filter = needInfo? + [{ ln: tokens[pos].ln }, CSSPNodeType.FilterType, getFilterp()] : + [CSSPNodeType.FilterType, getFilterp()]; + + pos++; + + filter.push(getFilterv()); + + return filter; + } + +//filterp = (seq('-filter') | seq('_filter') | seq('*filter') | seq('-ms-filter') | seq('filter')):t sc*:s0 -> this.concat([#property, [#ident, t]], s0) + function checkFilterp(_i) { + var start = _i, + l, + x; + + if (_i < tokens.length) { + if (tokens[_i].value === 'filter') l = 1; + else { + x = joinValues2(_i, 2); + + if (x === '-filter' || x === '_filter' || x === '*filter') l = 2; + else { + x = joinValues2(_i, 4); + + if (x === '-ms-filter') l = 4; + else return fail(tokens[_i]); + } + } + + tokens[start].filterp_l = l; + + _i += l; + + if (checkSC(_i)) _i += l; + + return _i - start; + } + + return fail(tokens[_i]); + } + + function getFilterp() { + var startPos = pos, + x = joinValues2(pos, tokens[pos].filterp_l), + ident = needInfo? [{ ln: tokens[startPos].ln }, CSSPNodeType.IdentType, x] : [CSSPNodeType.IdentType, x]; + + pos += tokens[pos].filterp_l; + + return (needInfo? [{ ln: tokens[startPos].ln }, CSSPNodeType.PropertyType, ident] : [CSSPNodeType.PropertyType, ident]) + .concat(getSC()); + + } + +//filterv = progid+:x -> [#filterv].concat(x) + function checkFilterv(_i) { + var start = _i, + l; + + if (l = checkProgid(_i)) _i += l; + else return fail(tokens[_i]); + + while (l = checkProgid(_i)) { + _i += l; + } + + tokens[start].last_progid = _i; + + if (_i < tokens.length && (l = checkSC(_i))) _i += l; + + if (_i < tokens.length && (l = checkImportant(_i))) _i += l; + + return _i - start; + } + + function getFilterv() { + var filterv = needInfo? [{ ln: tokens[pos].ln }, CSSPNodeType.FiltervType] : [CSSPNodeType.FiltervType], + last_progid = tokens[pos].last_progid; + + while (pos < last_progid) { + filterv.push(getProgid()); + } + + filterv = filterv.concat(checkSC(pos) ? getSC() : []); + + if (pos < tokens.length && checkImportant(pos)) filterv.push(getImportant()); + + return filterv; + } + +//functionExpression = ``expression('' functionExpressionBody*:x ')' -> [#functionExpression, x.join('')], + function checkFunctionExpression(_i) { + var start = _i; + + if (!tokens[_i] || tokens[_i++].value !== 'expression') return fail(tokens[_i - 1]); + + if (!tokens[_i] || tokens[_i].type !== TokenType.LeftParenthesis) return fail(tokens[_i]); + + return tokens[_i].right - start + 1; + } + + function getFunctionExpression() { + var startPos = pos; + + pos++; + + var e = joinValues(pos + 1, tokens[pos].right - 1); + + pos = tokens[pos].right + 1; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.FunctionExpressionType, e] : + [CSSPNodeType.FunctionExpressionType, e]; + } + +//funktion = ident:x '(' functionBody:y ')' -> [#funktion, x, y] + function checkFunktion(_i) { + var start = _i, + l = checkIdent(_i); + + if (!l) return fail(tokens[_i]); + + _i += l; + + if (_i >= tokens.length || tokens[_i].type !== TokenType.LeftParenthesis) return fail(tokens[_i - 1]); + + return tokens[_i].right - start + 1; + } + + function getFunktion() { + var startPos = pos, + ident = getIdent(); + + pos++; + + var body = ident[needInfo? 2 : 1] !== 'not'? + getFunctionBody() : + getNotFunctionBody(); // ok, here we have CSS3 initial draft: http://dev.w3.org/csswg/selectors3/#negation + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.FunktionType, ident, body] : + [CSSPNodeType.FunktionType, ident, body]; + } + + function getFunctionBody() { + var startPos = pos, + body = [], + x; + + while (tokens[pos].type !== TokenType.RightParenthesis) { + if (checkTset(pos)) { + x = getTset(); + if ((needInfo && typeof x[1] === 'string') || typeof x[0] === 'string') body.push(x); + else body = body.concat(x); + } else if (checkClazz(pos)) { + body.push(getClazz()); + } else { + throwError(); + } + } + + pos++; + + return (needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.FunctionBodyType] : + [CSSPNodeType.FunctionBodyType] + ).concat(body); + } + + function getNotFunctionBody() { + var startPos = pos, + body = [], + x; + + while (tokens[pos].type !== TokenType.RightParenthesis) { + if (checkSimpleselector(pos)) { + body.push(getSimpleSelector()); + } else { + throwError(); + } + } + + pos++; + + return (needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.FunctionBodyType] : + [CSSPNodeType.FunctionBodyType] + ).concat(body); + } + + // node: Ident + function checkIdent(_i) { + if (_i >= tokens.length) return fail(tokens[_i]); + + var start = _i, + wasIdent = false; + + if (tokens[_i].type === TokenType.LowLine) return checkIdentLowLine(_i); + + // start char / word + if (tokens[_i].type === TokenType.HyphenMinus || + tokens[_i].type === TokenType.Identifier || + tokens[_i].type === TokenType.DollarSign || + tokens[_i].type === TokenType.Asterisk) _i++; + else return fail(tokens[_i]); + + wasIdent = tokens[_i - 1].type === TokenType.Identifier; + + for (; _i < tokens.length; _i++) { + if (tokens[_i].type !== TokenType.HyphenMinus && + tokens[_i].type !== TokenType.LowLine) { + if (tokens[_i].type !== TokenType.Identifier && + (tokens[_i].type !== TokenType.DecimalNumber || !wasIdent) + ) break; + else wasIdent = true; + } + } + + if (!wasIdent && tokens[start].type !== TokenType.Asterisk) return fail(tokens[_i]); + + tokens[start].ident_last = _i - 1; + + return _i - start; + } + + function checkIdentLowLine(_i) { + var start = _i; + + _i++; + + for (; _i < tokens.length; _i++) { + if (tokens[_i].type !== TokenType.HyphenMinus && + tokens[_i].type !== TokenType.DecimalNumber && + tokens[_i].type !== TokenType.LowLine && + tokens[_i].type !== TokenType.Identifier) break; + } + + tokens[start].ident_last = _i - 1; + + return _i - start; + } + + function getIdent() { + var startPos = pos, + s = joinValues(pos, tokens[pos].ident_last); + + pos = tokens[pos].ident_last + 1; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.IdentType, s] : + [CSSPNodeType.IdentType, s]; + } + +//important = '!' sc*:s0 seq('important') -> [#important].concat(s0) + function checkImportant(_i) { + var start = _i, + l; + + if (tokens[_i++].type !== TokenType.ExclamationMark) return fail(tokens[_i - 1]); + + if (l = checkSC(_i)) _i += l; + + if (tokens[_i].value !== 'important') return fail(tokens[_i]); + + return _i - start + 1; + } + + function getImportant() { + var startPos = pos; + + pos++; + + var sc = getSC(); + + pos++; + + return (needInfo? [{ ln: tokens[startPos].ln }, CSSPNodeType.ImportantType] : [CSSPNodeType.ImportantType]).concat(sc); + } + + // node: Namespace + function checkNamespace(_i) { + if (tokens[_i].type === TokenType.VerticalLine) return 1; + + return fail(tokens[_i]); + } + + function getNamespace() { + var startPos = pos; + + pos++; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.NamespaceType] : + [CSSPNodeType.NamespaceType]; + } + +//nth = (digit | 'n')+:x -> [#nth, x.join('')] +// | (seq('even') | seq('odd')):x -> [#nth, x] + function checkNth(_i) { + return checkNth1(_i) || checkNth2(_i); + } + + function checkNth1(_i) { + var start = _i; + + for (; _i < tokens.length; _i++) { + if (tokens[_i].type !== TokenType.DecimalNumber && tokens[_i].value !== 'n') break; + } + + if (_i !== start) { + tokens[start].nth_last = _i - 1; + return _i - start; + } + + return fail(tokens[_i]); + } + + function getNth() { + var startPos = pos; + + if (tokens[pos].nth_last) { + var n = needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.NthType, joinValues(pos, tokens[pos].nth_last)] : + [CSSPNodeType.NthType, joinValues(pos, tokens[pos].nth_last)]; + + pos = tokens[pos].nth_last + 1; + + return n; + } + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.NthType, tokens[pos++].value] : + [CSSPNodeType.NthType, tokens[pos++].value]; + } + + function checkNth2(_i) { + if (tokens[_i].value === 'even' || tokens[_i].value === 'odd') return 1; + + return fail(tokens[_i]); + } + +//nthf = ':' seq('nth-'):x (seq('child') | seq('last-child') | seq('of-type') | seq('last-of-type')):y -> (x + y) + function checkNthf(_i) { + var start = _i, + l = 0; + + if (tokens[_i++].type !== TokenType.Colon) return fail(tokens[_i - 1]); l++; + + if (tokens[_i++].value !== 'nth' || tokens[_i++].value !== '-') return fail(tokens[_i - 1]); l += 2; + + if ('child' === tokens[_i].value) { + l += 1; + } else if ('last-child' === tokens[_i].value + + tokens[_i + 1].value + + tokens[_i + 2].value) { + l += 3; + } else if ('of-type' === tokens[_i].value + + tokens[_i + 1].value + + tokens[_i + 2].value) { + l += 3; + } else if ('last-of-type' === tokens[_i].value + + tokens[_i + 1].value + + tokens[_i + 2].value + + tokens[_i + 3].value + + tokens[_i + 4].value) { + l += 5; + } else return fail(tokens[_i]); + + tokens[start + 1].nthf_last = start + l - 1; + + return l; + } + + function getNthf() { + pos++; + + var s = joinValues(pos, tokens[pos].nthf_last); + + pos = tokens[pos].nthf_last + 1; + + return s; + } + +//nthselector = nthf:x '(' (sc | unary | nth)*:y ')' -> [#nthselector, [#ident, x]].concat(y) + function checkNthselector(_i) { + var start = _i, + l; + + if (l = checkNthf(_i)) _i += l; + else return fail(tokens[_i]); + + if (tokens[_i].type !== TokenType.LeftParenthesis || !tokens[_i].right) return fail(tokens[_i]); + + l++; + + var rp = tokens[_i++].right; + + while (_i < rp) { + if (l = checkSC(_i)) _i += l; + else if (l = checkUnary(_i)) _i += l; + else if (l = checkNth(_i)) _i += l; + else return fail(tokens[_i]); + } + + return rp - start + 1; + } + + function getNthselector() { + var startPos = pos, + nthf = needInfo? + [{ ln: tokens[pos].ln }, CSSPNodeType.IdentType, getNthf()] : + [CSSPNodeType.IdentType, getNthf()], + ns = needInfo? + [{ ln: tokens[pos].ln }, CSSPNodeType.NthselectorType, nthf] : + [CSSPNodeType.NthselectorType, nthf]; + + pos++; + + while (tokens[pos].type !== TokenType.RightParenthesis) { + if (checkSC(pos)) ns = ns.concat(getSC()); + else if (checkUnary(pos)) ns.push(getUnary()); + else if (checkNth(pos)) ns.push(getNth()); + } + + pos++; + + return ns; + } + + // node: Number + function checkNumber(_i) { + if (_i < tokens.length && tokens[_i].number_l) return tokens[_i].number_l; + + if (_i < tokens.length && tokens[_i].type === TokenType.DecimalNumber && + (!tokens[_i + 1] || + (tokens[_i + 1] && tokens[_i + 1].type !== TokenType.FullStop)) + ) return (tokens[_i].number_l = 1, tokens[_i].number_l); // 10 + + if (_i < tokens.length && + tokens[_i].type === TokenType.DecimalNumber && + tokens[_i + 1] && tokens[_i + 1].type === TokenType.FullStop && + (!tokens[_i + 2] || (tokens[_i + 2].type !== TokenType.DecimalNumber)) + ) return (tokens[_i].number_l = 2, tokens[_i].number_l); // 10. + + if (_i < tokens.length && + tokens[_i].type === TokenType.FullStop && + tokens[_i + 1].type === TokenType.DecimalNumber + ) return (tokens[_i].number_l = 2, tokens[_i].number_l); // .10 + + if (_i < tokens.length && + tokens[_i].type === TokenType.DecimalNumber && + tokens[_i + 1] && tokens[_i + 1].type === TokenType.FullStop && + tokens[_i + 2] && tokens[_i + 2].type === TokenType.DecimalNumber + ) return (tokens[_i].number_l = 3, tokens[_i].number_l); // 10.10 + + return fail(tokens[_i]); + } + + function getNumber() { + var s = '', + startPos = pos, + l = tokens[pos].number_l; + + for (var i = 0; i < l; i++) { + s += tokens[pos + i].value; + } + + pos += l; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.NumberType, s] : + [CSSPNodeType.NumberType, s]; + } + + // node: Operator + function checkOperator(_i) { + if (_i < tokens.length && + (tokens[_i].type === TokenType.Solidus || + tokens[_i].type === TokenType.Comma || + tokens[_i].type === TokenType.Colon || + tokens[_i].type === TokenType.EqualsSign)) return 1; + + return fail(tokens[_i]); + } + + function getOperator() { + return needInfo? + [{ ln: tokens[pos].ln }, CSSPNodeType.OperatorType, tokens[pos++].value] : + [CSSPNodeType.OperatorType, tokens[pos++].value]; + } + + // node: Percentage + function checkPercentage(_i) { + var x = checkNumber(_i); + + if (!x || (x && _i + x >= tokens.length)) return fail(tokens[_i]); + + if (tokens[_i + x].type === TokenType.PercentSign) return x + 1; + + return fail(tokens[_i]); + } + + function getPercentage() { + var startPos = pos, + n = getNumber(); + + pos++; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.PercentageType, n] : + [CSSPNodeType.PercentageType, n]; + } + +//progid = sc*:s0 seq('progid:DXImageTransform.Microsoft.'):x letter+:y '(' (m_string | m_comment | ~')' char)+:z ')' sc*:s1 +// -> this.concat([#progid], s0, [[#raw, x + y.join('') + '(' + z.join('') + ')']], s1), + function checkProgid(_i) { + var start = _i, + l, + x; + + if (l = checkSC(_i)) _i += l; + + if ((x = joinValues2(_i, 6)) === 'progid:DXImageTransform.Microsoft.') { + _start = _i; + _i += 6; + } else return fail(tokens[_i - 1]); + + if (l = checkIdent(_i)) _i += l; + else return fail(tokens[_i]); + + if (l = checkSC(_i)) _i += l; + + if (tokens[_i].type === TokenType.LeftParenthesis) { + tokens[start].progid_end = tokens[_i].right; + _i = tokens[_i].right + 1; + } else return fail(tokens[_i]); + + if (l = checkSC(_i)) _i += l; + + return _i - start; + } + + function getProgid() { + var startPos = pos, + progid_end = tokens[pos].progid_end; + + return (needInfo? [{ ln: tokens[startPos].ln }, CSSPNodeType.ProgidType] : [CSSPNodeType.ProgidType]) + .concat(getSC()) + .concat([_getProgid(progid_end)]) + .concat(getSC()); + } + + function _getProgid(progid_end) { + var startPos = pos, + x = joinValues(pos, progid_end); + + pos = progid_end + 1; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.RawType, x] : + [CSSPNodeType.RawType, x]; + } + +//property = ident:x sc*:s0 -> this.concat([#property, x], s0) + function checkProperty(_i) { + var start = _i, + l; + + if (l = checkIdent(_i)) _i += l; + else return fail(tokens[_i]); + + if (l = checkSC(_i)) _i += l; + return _i - start; + } + + function getProperty() { + var startPos = pos; + + return (needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.PropertyType, getIdent()] : + [CSSPNodeType.PropertyType, getIdent()]) + .concat(getSC()); + } + + function checkPseudo(_i) { + return checkPseudoe(_i) || + checkPseudoc(_i); + } + + function getPseudo() { + if (checkPseudoe(pos)) return getPseudoe(); + if (checkPseudoc(pos)) return getPseudoc(); + } + + function checkPseudoe(_i) { + var l; + + if (tokens[_i++].type !== TokenType.Colon) return fail(tokens[_i - 1]); + + if (tokens[_i++].type !== TokenType.Colon) return fail(tokens[_i - 1]); + + if (l = checkIdent(_i)) return l + 2; + + return fail(tokens[_i]); + } + + function getPseudoe() { + var startPos = pos; + + pos += 2; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.PseudoeType, getIdent()] : + [CSSPNodeType.PseudoeType, getIdent()]; + } + +//pseudoc = ':' (funktion | ident):x -> [#pseudoc, x] + function checkPseudoc(_i) { + var l; + + if (tokens[_i++].type !== TokenType.Colon) return fail(tokens[_i - 1]); + + if ((l = checkFunktion(_i)) || (l = checkIdent(_i))) return l + 1; + + return fail(tokens[_i]); + } + + function getPseudoc() { + var startPos = pos; + + pos++; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.PseudocType, checkFunktion(pos)? getFunktion() : getIdent()] : + [CSSPNodeType.PseudocType, checkFunktion(pos)? getFunktion() : getIdent()]; + } + + //ruleset = selector*:x block:y -> this.concat([#ruleset], x, [y]) + function checkRuleset(_i) { + var start = _i, + l; + + if (tokens[start].ruleset_l !== undefined) return tokens[start].ruleset_l; + + while (l = checkSelector(_i)) { + _i += l; + } + + if (l = checkBlock(_i)) _i += l; + else return fail(tokens[_i]); + + tokens[start].ruleset_l = _i - start; + + return _i - start; + } + + function getRuleset() { + var ruleset = needInfo? [{ ln: tokens[pos].ln }, CSSPNodeType.RulesetType] : [CSSPNodeType.RulesetType]; + + while (!checkBlock(pos)) { + ruleset.push(getSelector()); + } + + ruleset.push(getBlock()); + + return ruleset; + } + + // node: S + function checkS(_i) { + if (tokens[_i].ws) return tokens[_i].ws_last - _i + 1; + + return fail(tokens[_i]); + } + + function getS() { + var startPos = pos, + s = joinValues(pos, tokens[pos].ws_last); + + pos = tokens[pos].ws_last + 1; + + return needInfo? [{ ln: tokens[startPos].ln }, CSSPNodeType.SType, s] : [CSSPNodeType.SType, s]; + } + + function checkSC(_i) { + var l, + lsc = 0; + + while (_i < tokens.length) { + if (!(l = checkS(_i)) && !(l = checkComment(_i))) break; + _i += l; + lsc += l; + } + + if (lsc) return lsc; + + if (_i >= tokens.length) return fail(tokens[tokens.length - 1]); + + return fail(tokens[_i]); + } + + function getSC() { + var sc = []; + + while (pos < tokens.length) { + if (checkS(pos)) sc.push(getS()); + else if (checkComment(pos)) sc.push(getComment()); + else break; + } + + return sc; + } + + //selector = (simpleselector | delim)+:x -> this.concat([#selector], x) + function checkSelector(_i) { + var start = _i, + l; + + if (_i < tokens.length) { + while (l = checkSimpleselector(_i) || checkDelim(_i)) { + _i += l; + } + + tokens[start].selector_end = _i - 1; + + return _i - start; + } + } + + function getSelector() { + var selector = needInfo? [{ ln: tokens[pos].ln }, CSSPNodeType.SelectorType] : [CSSPNodeType.SelectorType], + selector_end = tokens[pos].selector_end; + + while (pos <= selector_end) { + selector.push(checkDelim(pos) ? getDelim() : getSimpleSelector()); + } + + return selector; + } + + // node: Shash + function checkShash(_i) { + if (tokens[_i].type !== TokenType.NumberSign) return fail(tokens[_i]); + + var l = checkNmName(_i + 1); + + if (l) return l + 1; + + return fail(tokens[_i]); + } + + function getShash() { + var startPos = pos; + + pos++; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.ShashType, getNmName()] : + [CSSPNodeType.ShashType, getNmName()]; + } + +//simpleselector = (nthselector | combinator | attrib | pseudo | clazz | shash | any | sc | namespace)+:x -> this.concatContent([#simpleselector], [x]) + function checkSimpleselector(_i) { + var start = _i, + l; + + while (_i < tokens.length) { + if (l = _checkSimpleSelector(_i)) _i += l; + else break; + } + + if (_i - start) return _i - start; + + if (_i >= tokens.length) return fail(tokens[tokens.length - 1]); + + return fail(tokens[_i]); + } + + function _checkSimpleSelector(_i) { + return checkNthselector(_i) || + checkCombinator(_i) || + checkAttrib(_i) || + checkPseudo(_i) || + checkClazz(_i) || + checkShash(_i) || + checkAny(_i) || + checkSC(_i) || + checkNamespace(_i); + } + + function getSimpleSelector() { + var ss = needInfo? [{ ln: tokens[pos].ln }, CSSPNodeType.SimpleselectorType] : [CSSPNodeType.SimpleselectorType], + t; + + while (pos < tokens.length && _checkSimpleSelector(pos)) { + t = _getSimpleSelector(); + + if ((needInfo && typeof t[1] === 'string') || typeof t[0] === 'string') ss.push(t); + else ss = ss.concat(t); + } + + return ss; + } + + function _getSimpleSelector() { + if (checkNthselector(pos)) return getNthselector(); + else if (checkCombinator(pos)) return getCombinator(); + else if (checkAttrib(pos)) return getAttrib(); + else if (checkPseudo(pos)) return getPseudo(); + else if (checkClazz(pos)) return getClazz(); + else if (checkShash(pos)) return getShash(); + else if (checkAny(pos)) return getAny(); + else if (checkSC(pos)) return getSC(); + else if (checkNamespace(pos)) return getNamespace(); + } + + // node: String + function checkString(_i) { + if (_i < tokens.length && + (tokens[_i].type === TokenType.StringSQ || tokens[_i].type === TokenType.StringDQ) + ) return 1; + + return fail(tokens[_i]); + } + + function getString() { + var startPos = pos; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.StringType, tokens[pos++].value] : + [CSSPNodeType.StringType, tokens[pos++].value]; + } + + //stylesheet = (cdo | cdc | sc | statement)*:x -> this.concat([#stylesheet], x) + function checkStylesheet(_i) { + var start = _i, + l; + + while (_i < tokens.length) { + if (l = checkSC(_i)) _i += l; + else { + currentBlockLN = tokens[_i].ln; + if (l = checkAtrule(_i)) _i += l; + else if (l = checkRuleset(_i)) _i += l; + else if (l = checkUnknown(_i)) _i += l; + else throwError(); + } + } + + return _i - start; + } + + function getStylesheet(_i) { + var t, + stylesheet = needInfo? [{ ln: tokens[pos].ln }, CSSPNodeType.StylesheetType] : [CSSPNodeType.StylesheetType]; + + while (pos < tokens.length) { + if (checkSC(pos)) stylesheet = stylesheet.concat(getSC()); + else { + currentBlockLN = tokens[pos].ln; + if (checkRuleset(pos)) stylesheet.push(getRuleset()); + else if (checkAtrule(pos)) stylesheet.push(getAtrule()); + else if (checkUnknown(pos)) stylesheet.push(getUnknown()); + else throwError(); + } + } + + return stylesheet; + } + +//tset = vhash | any | sc | operator + function checkTset(_i) { + return checkVhash(_i) || + checkAny(_i) || + checkSC(_i) || + checkOperator(_i); + } + + function getTset() { + if (checkVhash(pos)) return getVhash(); + else if (checkAny(pos)) return getAny(); + else if (checkSC(pos)) return getSC(); + else if (checkOperator(pos)) return getOperator(); + } + + function checkTsets(_i) { + var start = _i, + l; + + while (l = checkTset(_i)) { + _i += l; + } + + return _i - start; + } + + function getTsets() { + var tsets = [], + x; + + while (x = getTset()) { + if ((needInfo && typeof x[1] === 'string') || typeof x[0] === 'string') tsets.push(x); + else tsets = tsets.concat(x); + } + + return tsets; + } + + // node: Unary + function checkUnary(_i) { + if (_i < tokens.length && + (tokens[_i].type === TokenType.HyphenMinus || + tokens[_i].type === TokenType.PlusSign) + ) return 1; + + return fail(tokens[_i]); + } + + function getUnary() { + var startPos = pos; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.UnaryType, tokens[pos++].value] : + [CSSPNodeType.UnaryType, tokens[pos++].value]; + } + + // node: Unknown + function checkUnknown(_i) { + if (_i < tokens.length && tokens[_i].type === TokenType.CommentSL) return 1; + + return fail(tokens[_i]); + } + + function getUnknown() { + var startPos = pos; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.UnknownType, tokens[pos++].value] : + [CSSPNodeType.UnknownType, tokens[pos++].value]; + } + +// uri = seq('url(') sc*:s0 string:x sc*:s1 ')' -> this.concat([#uri], s0, [x], s1) +// | seq('url(') sc*:s0 (~')' ~m_w char)*:x sc*:s1 ')' -> this.concat([#uri], s0, [[#raw, x.join('')]], s1), + function checkUri(_i) { + var start = _i, + l; + + if (_i < tokens.length && tokens[_i++].value !== 'url') return fail(tokens[_i - 1]); + + if (!tokens[_i] || tokens[_i].type !== TokenType.LeftParenthesis) return fail(tokens[_i]); + + return tokens[_i].right - start + 1; + } + + function getUri() { + var startPos = pos, + uriExcluding = {}; + + pos += 2; + + uriExcluding[TokenType.Space] = 1; + uriExcluding[TokenType.Tab] = 1; + uriExcluding[TokenType.Newline] = 1; + uriExcluding[TokenType.LeftParenthesis] = 1; + uriExcluding[TokenType.RightParenthesis] = 1; + + if (checkUri1(pos)) { + var uri = (needInfo? [{ ln: tokens[startPos].ln }, CSSPNodeType.UriType] : [CSSPNodeType.UriType]) + .concat(getSC()) + .concat([getString()]) + .concat(getSC()); + + pos++; + + return uri; + } else { + var uri = (needInfo? [{ ln: tokens[startPos].ln }, CSSPNodeType.UriType] : [CSSPNodeType.UriType]) + .concat(getSC()), + l = checkExcluding(uriExcluding, pos), + raw = needInfo? + [{ ln: tokens[pos].ln }, CSSPNodeType.RawType, joinValues(pos, pos + l)] : + [CSSPNodeType.RawType, joinValues(pos, pos + l)]; + + uri.push(raw); + + pos += l + 1; + + uri = uri.concat(getSC()); + + pos++; + + return uri; + } + } + + function checkUri1(_i) { + var start = _i, + l = checkSC(_i); + + if (l) _i += l; + + if (tokens[_i].type !== TokenType.StringDQ && tokens[_i].type !== TokenType.StringSQ) return fail(tokens[_i]); + + _i++; + + if (l = checkSC(_i)) _i += l; + + return _i - start; + } + + // value = (sc | vhash | any | block | atkeyword | operator | important)+:x -> this.concat([#value], x) + function checkValue(_i) { + var start = _i, + l; + + while (_i < tokens.length) { + if (l = _checkValue(_i)) _i += l; + else break; + } + + if (_i - start) return _i - start; + + return fail(tokens[_i]); + } + + function _checkValue(_i) { + return checkSC(_i) || + checkVhash(_i) || + checkAny(_i) || + checkBlock(_i) || + checkAtkeyword(_i) || + checkOperator(_i) || + checkImportant(_i); + } + + function getValue() { + var ss = needInfo? [{ ln: tokens[pos].ln }, CSSPNodeType.ValueType] : [CSSPNodeType.ValueType], + t; + + while (pos < tokens.length && _checkValue(pos)) { + t = _getValue(); + + if ((needInfo && typeof t[1] === 'string') || typeof t[0] === 'string') ss.push(t); + else ss = ss.concat(t); + } + + return ss; + } + + function _getValue() { + if (checkSC(pos)) return getSC(); + else if (checkVhash(pos)) return getVhash(); + else if (checkAny(pos)) return getAny(); + else if (checkBlock(pos)) return getBlock(); + else if (checkAtkeyword(pos)) return getAtkeyword(); + else if (checkOperator(pos)) return getOperator(); + else if (checkImportant(pos)) return getImportant(); + } + + // node: Vhash + function checkVhash(_i) { + if (_i >= tokens.length || tokens[_i].type !== TokenType.NumberSign) return fail(tokens[_i]); + + var l = checkNmName2(_i + 1); + + if (l) return l + 1; + + return fail(tokens[_i]); + } + + function getVhash() { + var startPos = pos; + + pos++; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.VhashType, getNmName2()] : + [CSSPNodeType.VhashType, getNmName2()]; + } + + function checkNmName(_i) { + var start = _i; + + // start char / word + if (tokens[_i].type === TokenType.HyphenMinus || + tokens[_i].type === TokenType.LowLine || + tokens[_i].type === TokenType.Identifier || + tokens[_i].type === TokenType.DecimalNumber) _i++; + else return fail(tokens[_i]); + + for (; _i < tokens.length; _i++) { + if (tokens[_i].type !== TokenType.HyphenMinus && + tokens[_i].type !== TokenType.LowLine && + tokens[_i].type !== TokenType.Identifier && + tokens[_i].type !== TokenType.DecimalNumber) break; + } + + tokens[start].nm_name_last = _i - 1; + + return _i - start; + } + + function getNmName() { + var s = joinValues(pos, tokens[pos].nm_name_last); + + pos = tokens[pos].nm_name_last + 1; + + return s; + } + + function checkNmName2(_i) { + var start = _i; + + if (tokens[_i].type === TokenType.Identifier) return 1; + else if (tokens[_i].type !== TokenType.DecimalNumber) return fail(tokens[_i]); + + _i++; + + if (!tokens[_i] || tokens[_i].type !== TokenType.Identifier) return 1; + + return 2; + } + + function getNmName2() { + var s = tokens[pos].value; + + if (tokens[pos++].type === TokenType.DecimalNumber && + pos < tokens.length && + tokens[pos].type === TokenType.Identifier + ) s += tokens[pos++].value; + + return s; + } + + function checkExcluding(exclude, _i) { + var start = _i; + + while(_i < tokens.length) { + if (exclude[tokens[_i++].type]) break; + } + + return _i - start - 2; + } + + function joinValues(start, finish) { + var s = ''; + + for (var i = start; i < finish + 1; i++) { + s += tokens[i].value; + } + + return s; + } + + function joinValues2(start, num) { + if (start + num - 1 >= tokens.length) return; + + var s = ''; + + for (var i = 0; i < num; i++) { + s += tokens[start + i].value; + } + + return s; + } + + function markSC() { + var ws = -1, // whitespaces + sc = -1, // ws and comments + t; + + for (var i = 0; i < tokens.length; i++) { + t = tokens[i]; + switch (t.type) { + case TokenType.Space: + case TokenType.Tab: + case TokenType.Newline: + t.ws = true; + t.sc = true; + + if (ws === -1) ws = i; + if (sc === -1) sc = i; + + break; + case TokenType.CommentML: + if (ws !== -1) { + tokens[ws].ws_last = i - 1; + ws = -1; + } + + t.sc = true; + + break; + default: + if (ws !== -1) { + tokens[ws].ws_last = i - 1; + ws = -1; + } + + if (sc !== -1) { + tokens[sc].sc_last = i - 1; + sc = -1; + } + } + } + + if (ws !== -1) tokens[ws].ws_last = i - 1; + if (sc !== -1) tokens[sc].sc_last = i - 1; + } + + return function(_tokens, rule, _needInfo) { + return _getAST(_tokens, rule, _needInfo); + } + +}()); + return function(s, rule, _needInfo) { + return getCSSPAST(getTokens(s), rule, _needInfo); + } +}()); +exports.srcToCSSP = srcToCSSP; diff --git a/node_modules/csscomb/node_modules/gonzales/lib/gonzales.js b/node_modules/csscomb/node_modules/gonzales/lib/gonzales.js new file mode 100644 index 0000000..5f64b51 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/lib/gonzales.js @@ -0,0 +1,23 @@ +// CSSP + +exports.srcToCSSP = require('./gonzales.cssp.node.js').srcToCSSP; + +exports.csspToSrc = require('./cssp.translator.node.js').csspToSrc; + +exports.csspToTree = function(tree, level) { + var spaces = dummySpaces(level), + level = level ? level : 0, + s = (level ? '\n' + spaces : '') + '['; + + tree.forEach(function(e) { + if (e.ln === undefined) { + s += (Array.isArray(e) ? exports.csspToTree(e, level + 1) : ('\'' + e.toString() + '\'')) + ', '; + } + }); + + return s.substr(0, s.length - 2) + ']'; +} + +function dummySpaces(num) { + return ' '.substr(0, num * 2); +} diff --git a/node_modules/csscomb/node_modules/gonzales/package.json b/node_modules/csscomb/node_modules/gonzales/package.json new file mode 100644 index 0000000..ce073ab --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/package.json @@ -0,0 +1,39 @@ +{ + "name": "gonzales", + "description": "Gonzales — fast CSS parser", + "version": "1.0.7", + "homepage": "http://github.com/css/gonzales", + "author": { + "name": "Sergey Kryzhanovsky", + "email": "skryzhanovsky@ya.ru", + "url": "http://github.com/afelix" + }, + "repository": { + "type": "git", + "url": "http://github.com/css/gonzales.git" + }, + "main": "./lib/gonzales", + "engines": { + "node": ">=0.6.0" + }, + "licenses": [ + { + "type": "MIT" + } + ], + "devDependencies": { + "benchmark": "~1.0.0", + "microtime": "~0.3.3" + }, + "readme": "# 1. Description\n\nGonzales — fast CSS parser.\n\nThis document is an installation guide.\n\nUsage: [CSSP.USAGE.en] (https://github.com/css/gonzales/blob/master/doc/CSSP.USAGE.en.md).\n\nCSSP AST description: [AST.CSSP.en] (https://github.com/css/gonzales/blob/master/doc/AST.CSSP.en.md).\n\nPlease report issues on [Issues](https://github.com/css/gonzales/issues).\n\n# 2. Install using npm\n\nPrerequisites:\n\n* nodejs 0.6.x — [http://nodejs.org](http://nodejs.org)\n* npm — [http://github.com/isaacs/npm/](http://github.com/isaacs/npm/)\n\nTo install (global):\n\n* run `npm install gonzales -g`\n\nTo update:\n\n* run `npm update gonzales`\n\nTo uninstall:\n\n* run `npm uninstall gonzales -g`\n\n# 3. Authors\n\n* idea, implementation — Sergey Kryzhanovsky ()\n* english translation — Vera Gavryushina ()\n\n# 4. And finally\n\n* Gonzales is licensed under [MIT](https://github.com/css/gonzales/blob/master/MIT-LICENSE.txt)\n", + "readmeFilename": "README.md", + "bugs": { + "url": "https://github.com/css/gonzales/issues" + }, + "_id": "gonzales@1.0.7", + "dist": { + "shasum": "3b5043396b20551abe9c263f30d8d568c8ab188e" + }, + "_from": "gonzales@1.0.7", + "_resolved": "https://registry.npmjs.org/gonzales/-/gonzales-1.0.7.tgz" +} diff --git a/node_modules/csscomb/node_modules/gonzales/src/cssp.ast.shared.js b/node_modules/csscomb/node_modules/gonzales/src/cssp.ast.shared.js new file mode 100644 index 0000000..aac3cef --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/src/cssp.ast.shared.js @@ -0,0 +1,2014 @@ +// version: 1.0.0 + +var getCSSPAST = (function() { + + var tokens, + pos, + failLN = 0, + currentBlockLN = 0, + needInfo = false; + + var CSSPNodeType, + CSSLevel, + CSSPRules; + + CSSPNodeType = { + IdentType: 'ident', + AtkeywordType: 'atkeyword', + StringType: 'string', + ShashType: 'shash', + VhashType: 'vhash', + NumberType: 'number', + PercentageType: 'percentage', + DimensionType: 'dimension', + CdoType: 'cdo', + CdcType: 'cdc', + DecldelimType: 'decldelim', + SType: 's', + AttrselectorType: 'attrselector', + AttribType: 'attrib', + NthType: 'nth', + NthselectorType: 'nthselector', + NamespaceType: 'namespace', + ClazzType: 'clazz', + PseudoeType: 'pseudoe', + PseudocType: 'pseudoc', + DelimType: 'delim', + StylesheetType: 'stylesheet', + AtrulebType: 'atruleb', + AtrulesType: 'atrules', + AtrulerqType: 'atrulerq', + AtrulersType: 'atrulers', + AtrulerType: 'atruler', + BlockType: 'block', + RulesetType: 'ruleset', + CombinatorType: 'combinator', + SimpleselectorType: 'simpleselector', + SelectorType: 'selector', + DeclarationType: 'declaration', + PropertyType: 'property', + ImportantType: 'important', + UnaryType: 'unary', + OperatorType: 'operator', + BracesType: 'braces', + ValueType: 'value', + ProgidType: 'progid', + FiltervType: 'filterv', + FilterType: 'filter', + CommentType: 'comment', + UriType: 'uri', + RawType: 'raw', + FunctionBodyType: 'functionBody', + FunktionType: 'funktion', + FunctionExpressionType: 'functionExpression', + UnknownType: 'unknown' + }; + + CSSPRules = { + 'ident': function() { if (checkIdent(pos)) return getIdent() }, + 'atkeyword': function() { if (checkAtkeyword(pos)) return getAtkeyword() }, + 'string': function() { if (checkString(pos)) return getString() }, + 'shash': function() { if (checkShash(pos)) return getShash() }, + 'vhash': function() { if (checkVhash(pos)) return getVhash() }, + 'number': function() { if (checkNumber(pos)) return getNumber() }, + 'percentage': function() { if (checkPercentage(pos)) return getPercentage() }, + 'dimension': function() { if (checkDimension(pos)) return getDimension() }, +// 'cdo': function() { if (checkCDO()) return getCDO() }, +// 'cdc': function() { if (checkCDC()) return getCDC() }, + 'decldelim': function() { if (checkDecldelim(pos)) return getDecldelim() }, + 's': function() { if (checkS(pos)) return getS() }, + 'attrselector': function() { if (checkAttrselector(pos)) return getAttrselector() }, + 'attrib': function() { if (checkAttrib(pos)) return getAttrib() }, + 'nth': function() { if (checkNth(pos)) return getNth() }, + 'nthselector': function() { if (checkNthselector(pos)) return getNthselector() }, + 'namespace': function() { if (checkNamespace(pos)) return getNamespace() }, + 'clazz': function() { if (checkClazz(pos)) return getClazz() }, + 'pseudoe': function() { if (checkPseudoe(pos)) return getPseudoe() }, + 'pseudoc': function() { if (checkPseudoc(pos)) return getPseudoc() }, + 'delim': function() { if (checkDelim(pos)) return getDelim() }, + 'stylesheet': function() { if (checkStylesheet(pos)) return getStylesheet() }, + 'atruleb': function() { if (checkAtruleb(pos)) return getAtruleb() }, + 'atrules': function() { if (checkAtrules(pos)) return getAtrules() }, + 'atrulerq': function() { if (checkAtrulerq(pos)) return getAtrulerq() }, + 'atrulers': function() { if (checkAtrulers(pos)) return getAtrulers() }, + 'atruler': function() { if (checkAtruler(pos)) return getAtruler() }, + 'block': function() { if (checkBlock(pos)) return getBlock() }, + 'ruleset': function() { if (checkRuleset(pos)) return getRuleset() }, + 'combinator': function() { if (checkCombinator(pos)) return getCombinator() }, + 'simpleselector': function() { if (checkSimpleselector(pos)) return getSimpleSelector() }, + 'selector': function() { if (checkSelector(pos)) return getSelector() }, + 'declaration': function() { if (checkDeclaration(pos)) return getDeclaration() }, + 'property': function() { if (checkProperty(pos)) return getProperty() }, + 'important': function() { if (checkImportant(pos)) return getImportant() }, + 'unary': function() { if (checkUnary(pos)) return getUnary() }, + 'operator': function() { if (checkOperator(pos)) return getOperator() }, + 'braces': function() { if (checkBraces(pos)) return getBraces() }, + 'value': function() { if (checkValue(pos)) return getValue() }, + 'progid': function() { if (checkProgid(pos)) return getProgid() }, + 'filterv': function() { if (checkFilterv(pos)) return getFilterv() }, + 'filter': function() { if (checkFilter(pos)) return getFilter() }, + 'comment': function() { if (checkComment(pos)) return getComment() }, + 'uri': function() { if (checkUri(pos)) return getUri() }, + 'raw': function() { if (checkRaw(pos)) return getRaw() }, + 'funktion': function() { if (checkFunktion(pos)) return getFunktion() }, + 'functionExpression': function() { if (checkFunctionExpression(pos)) return getFunctionExpression() }, + 'unknown': function() { if (checkUnknown(pos)) return getUnknown() } + }; + + function fail(token) { + if (token && token.ln > failLN) failLN = token.ln; + } + + function throwError() { + throw new Error('Please check the validity of the CSS block starting from the line #' + currentBlockLN); + } + + function _getAST(_tokens, rule, _needInfo) { + tokens = _tokens; + needInfo = _needInfo; + pos = 0; + + markSC(); + + return rule ? CSSPRules[rule]() : CSSPRules['stylesheet'](); + } + +//any = braces | string | percentage | dimension | number | uri | functionExpression | funktion | ident | unary + function checkAny(_i) { + return checkBraces(_i) || + checkString(_i) || + checkPercentage(_i) || + checkDimension(_i) || + checkNumber(_i) || + checkUri(_i) || + checkFunctionExpression(_i) || + checkFunktion(_i) || + checkIdent(_i) || + checkUnary(_i); + } + + function getAny() { + if (checkBraces(pos)) return getBraces(); + else if (checkString(pos)) return getString(); + else if (checkPercentage(pos)) return getPercentage(); + else if (checkDimension(pos)) return getDimension(); + else if (checkNumber(pos)) return getNumber(); + else if (checkUri(pos)) return getUri(); + else if (checkFunctionExpression(pos)) return getFunctionExpression(); + else if (checkFunktion(pos)) return getFunktion(); + else if (checkIdent(pos)) return getIdent(); + else if (checkUnary(pos)) return getUnary(); + } + +//atkeyword = '@' ident:x -> [#atkeyword, x] + function checkAtkeyword(_i) { + var l; + + if (tokens[_i++].type !== TokenType.CommercialAt) return fail(tokens[_i - 1]); + + if (l = checkIdent(_i)) return l + 1; + + return fail(tokens[_i]); + } + + function getAtkeyword() { + var startPos = pos; + + pos++; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.AtkeywordType, getIdent()]: + [CSSPNodeType.AtkeywordType, getIdent()]; + } + +//attrib = '[' sc*:s0 ident:x sc*:s1 attrselector:a sc*:s2 (ident | string):y sc*:s3 ']' -> this.concat([#attrib], s0, [x], s1, [a], s2, [y], s3) +// | '[' sc*:s0 ident:x sc*:s1 ']' -> this.concat([#attrib], s0, [x], s1), + function checkAttrib(_i) { + if (tokens[_i].type !== TokenType.LeftSquareBracket) return fail(tokens[_i]); + + if (!tokens[_i].right) return fail(tokens[_i]); + + return tokens[_i].right - _i + 1; + } + + function checkAttrib1(_i) { + var start = _i; + + _i++; + + var l = checkSC(_i); // s0 + + if (l) _i += l; + + if (l = checkIdent(_i)) _i += l; // x + else return fail(tokens[_i]); + + if (l = checkSC(_i)) _i += l; // s1 + + if (l = checkAttrselector(_i)) _i += l; // a + else return fail(tokens[_i]); + + if (l = checkSC(_i)) _i += l; // s2 + + if ((l = checkIdent(_i)) || (l = checkString(_i))) _i += l; // y + else return fail(tokens[_i]); + + if (l = checkSC(_i)) _i += l; // s3 + + if (tokens[_i].type === TokenType.RightSquareBracket) return _i - start; + + return fail(tokens[_i]); + } + + function getAttrib1() { + var startPos = pos; + + pos++; + + var a = (needInfo? [{ ln: tokens[startPos].ln }, CSSPNodeType.AttribType] : [CSSPNodeType.AttribType]) + .concat(getSC()) + .concat([getIdent()]) + .concat(getSC()) + .concat([getAttrselector()]) + .concat(getSC()) + .concat([checkString(pos)? getString() : getIdent()]) + .concat(getSC()); + + pos++; + + return a; + } + + function checkAttrib2(_i) { + var start = _i; + + _i++; + + var l = checkSC(_i); + + if (l) _i += l; + + if (l = checkIdent(_i)) _i += l; + + if (l = checkSC(_i)) _i += l; + + if (tokens[_i].type === TokenType.RightSquareBracket) return _i - start; + + return fail(tokens[_i]); + } + + function getAttrib2() { + var startPos = pos; + + pos++; + + var a = (needInfo? [{ ln: tokens[startPos].ln }, CSSPNodeType.AttribType] : [CSSPNodeType.AttribType]) + .concat(getSC()) + .concat([getIdent()]) + .concat(getSC()); + + pos++; + + return a; + } + + function getAttrib() { + if (checkAttrib1(pos)) return getAttrib1(); + if (checkAttrib2(pos)) return getAttrib2(); + } + +//attrselector = (seq('=') | seq('~=') | seq('^=') | seq('$=') | seq('*=') | seq('|=')):x -> [#attrselector, x] + function checkAttrselector(_i) { + if (tokens[_i].type === TokenType.EqualsSign) return 1; + if (tokens[_i].type === TokenType.VerticalLine && (!tokens[_i + 1] || tokens[_i + 1].type !== TokenType.EqualsSign)) return 1; + + if (!tokens[_i + 1] || tokens[_i + 1].type !== TokenType.EqualsSign) return fail(tokens[_i]); + + switch(tokens[_i].type) { + case TokenType.Tilde: + case TokenType.CircumflexAccent: + case TokenType.DollarSign: + case TokenType.Asterisk: + case TokenType.VerticalLine: + return 2; + } + + return fail(tokens[_i]); + } + + function getAttrselector() { + var startPos = pos, + s = tokens[pos++].value; + + if (tokens[pos] && tokens[pos].type === TokenType.EqualsSign) s += tokens[pos++].value; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.AttrselectorType, s] : + [CSSPNodeType.AttrselectorType, s]; + } + +//atrule = atruler | atruleb | atrules + function checkAtrule(_i) { + var start = _i, + l; + + if (tokens[start].atrule_l !== undefined) return tokens[start].atrule_l; + + if (l = checkAtruler(_i)) tokens[_i].atrule_type = 1; + else if (l = checkAtruleb(_i)) tokens[_i].atrule_type = 2; + else if (l = checkAtrules(_i)) tokens[_i].atrule_type = 3; + else return fail(tokens[start]); + + tokens[start].atrule_l = l; + + return l; + } + + function getAtrule() { + switch (tokens[pos].atrule_type) { + case 1: return getAtruler(); + case 2: return getAtruleb(); + case 3: return getAtrules(); + } + } + +//atruleb = atkeyword:ak tset*:ap block:b -> this.concat([#atruleb, ak], ap, [b]) + function checkAtruleb(_i) { + var start = _i, + l; + + if (l = checkAtkeyword(_i)) _i += l; + else return fail(tokens[_i]); + + if (l = checkTsets(_i)) _i += l; + + if (l = checkBlock(_i)) _i += l; + else return fail(tokens[_i]); + + return _i - start; + } + + function getAtruleb() { + return (needInfo? + [{ ln: tokens[pos].ln }, CSSPNodeType.AtrulebType, getAtkeyword()] : + [CSSPNodeType.AtrulebType, getAtkeyword()]) + .concat(getTsets()) + .concat([getBlock()]); + } + +//atruler = atkeyword:ak atrulerq:x '{' atrulers:y '}' -> [#atruler, ak, x, y] + function checkAtruler(_i) { + var start = _i, + l; + + if (l = checkAtkeyword(_i)) _i += l; + else return fail(tokens[_i]); + + if (l = checkAtrulerq(_i)) _i += l; + + if (_i < tokens.length && tokens[_i].type === TokenType.LeftCurlyBracket) _i++; + else return fail(tokens[_i]); + + if (l = checkAtrulers(_i)) _i += l; + + if (_i < tokens.length && tokens[_i].type === TokenType.RightCurlyBracket) _i++; + else return fail(tokens[_i]); + + return _i - start; + } + + function getAtruler() { + var atruler = needInfo? + [{ ln: tokens[pos].ln }, CSSPNodeType.AtrulerType, getAtkeyword(), getAtrulerq()] : + [CSSPNodeType.AtrulerType, getAtkeyword(), getAtrulerq()]; + + pos++; + + atruler.push(getAtrulers()); + + pos++; + + return atruler; + } + +//atrulerq = tset*:ap -> [#atrulerq].concat(ap) + function checkAtrulerq(_i) { + return checkTsets(_i); + } + + function getAtrulerq() { + return (needInfo? [{ ln: tokens[pos].ln }, CSSPNodeType.AtrulerqType] : [CSSPNodeType.AtrulerqType]).concat(getTsets()); + } + +//atrulers = sc*:s0 ruleset*:r sc*:s1 -> this.concat([#atrulers], s0, r, s1) + function checkAtrulers(_i) { + var start = _i, + l; + + if (l = checkSC(_i)) _i += l; + + while ((l = checkRuleset(_i)) || (l = checkAtrule(_i)) || (l = checkSC(_i))) { + _i += l; + } + + tokens[_i].atrulers_end = 1; + + if (l = checkSC(_i)) _i += l; + + return _i - start; + } + + function getAtrulers() { + var atrulers = (needInfo? [{ ln: tokens[pos].ln }, CSSPNodeType.AtrulersType] : [CSSPNodeType.AtrulersType]).concat(getSC()), + x; + + while (!tokens[pos].atrulers_end) { + if (checkSC(pos)) { + atrulers = atrulers.concat(getSC()); + } else if (checkRuleset(pos)) { + atrulers.push(getRuleset()); + } else { + atrulers.push(getAtrule()); + } + } + + return atrulers.concat(getSC()); + } + +//atrules = atkeyword:ak tset*:ap ';' -> this.concat([#atrules, ak], ap) + function checkAtrules(_i) { + var start = _i, + l; + + if (l = checkAtkeyword(_i)) _i += l; + else return fail(tokens[_i]); + + if (l = checkTsets(_i)) _i += l; + + if (_i >= tokens.length) return _i - start; + + if (tokens[_i].type === TokenType.Semicolon) _i++; + else return fail(tokens[_i]); + + return _i - start; + } + + function getAtrules() { + var atrules = (needInfo? [{ ln: tokens[pos].ln }, CSSPNodeType.AtrulesType, getAtkeyword()] : [CSSPNodeType.AtrulesType, getAtkeyword()]).concat(getTsets()); + + pos++; + + return atrules; + } + +//block = '{' blockdecl*:x '}' -> this.concatContent([#block], x) + function checkBlock(_i) { + if (_i < tokens.length && tokens[_i].type === TokenType.LeftCurlyBracket) return tokens[_i].right - _i + 1; + + return fail(tokens[_i]); + } + + function getBlock() { + var block = needInfo? [{ ln: tokens[pos].ln }, CSSPNodeType.BlockType] : [CSSPNodeType.BlockType], + end = tokens[pos].right; + + pos++; + + while (pos < end) { + if (checkBlockdecl(pos)) block = block.concat(getBlockdecl()); + else throwError(); + } + + pos = end + 1; + + return block; + } + +//blockdecl = sc*:s0 (filter | declaration):x decldelim:y sc*:s1 -> this.concat(s0, [x], [y], s1) +// | sc*:s0 (filter | declaration):x sc*:s1 -> this.concat(s0, [x], s1) +// | sc*:s0 decldelim:x sc*:s1 -> this.concat(s0, [x], s1) +// | sc+:s0 -> s0 + + function checkBlockdecl(_i) { + var l; + + if (l = _checkBlockdecl0(_i)) tokens[_i].bd_type = 1; + else if (l = _checkBlockdecl1(_i)) tokens[_i].bd_type = 2; + else if (l = _checkBlockdecl2(_i)) tokens[_i].bd_type = 3; + else if (l = _checkBlockdecl3(_i)) tokens[_i].bd_type = 4; + else return fail(tokens[_i]); + + return l; + } + + function getBlockdecl() { + switch (tokens[pos].bd_type) { + case 1: return _getBlockdecl0(); + case 2: return _getBlockdecl1(); + case 3: return _getBlockdecl2(); + case 4: return _getBlockdecl3(); + } + } + + //sc*:s0 (filter | declaration):x decldelim:y sc*:s1 -> this.concat(s0, [x], [y], s1) + function _checkBlockdecl0(_i) { + var start = _i, + l; + + if (l = checkSC(_i)) _i += l; + + if (l = checkFilter(_i)) { + tokens[_i].bd_filter = 1; + _i += l; + } else if (l = checkDeclaration(_i)) { + tokens[_i].bd_decl = 1; + _i += l; + } else return fail(tokens[_i]); + + if (_i < tokens.length && (l = checkDecldelim(_i))) _i += l; + else return fail(tokens[_i]); + + if (l = checkSC(_i)) _i += l; + + return _i - start; + } + + function _getBlockdecl0() { + return getSC() + .concat([tokens[pos].bd_filter? getFilter() : getDeclaration()]) + .concat([getDecldelim()]) + .concat(getSC()); + } + + //sc*:s0 (filter | declaration):x sc*:s1 -> this.concat(s0, [x], s1) + function _checkBlockdecl1(_i) { + var start = _i, + l; + + if (l = checkSC(_i)) _i += l; + + if (l = checkFilter(_i)) { + tokens[_i].bd_filter = 1; + _i += l; + } else if (l = checkDeclaration(_i)) { + tokens[_i].bd_decl = 1; + _i += l; + } else return fail(tokens[_i]); + + if (l = checkSC(_i)) _i += l; + + return _i - start; + } + + function _getBlockdecl1() { + return getSC() + .concat([tokens[pos].bd_filter? getFilter() : getDeclaration()]) + .concat(getSC()); + } + + //sc*:s0 decldelim:x sc*:s1 -> this.concat(s0, [x], s1) + function _checkBlockdecl2(_i) { + var start = _i, + l; + + if (l = checkSC(_i)) _i += l; + + if (l = checkDecldelim(_i)) _i += l; + else return fail(tokens[_i]); + + if (l = checkSC(_i)) _i += l; + + return _i - start; + } + + function _getBlockdecl2() { + return getSC() + .concat([getDecldelim()]) + .concat(getSC()); + } + + //sc+:s0 -> s0 + function _checkBlockdecl3(_i) { + return checkSC(_i); + } + + function _getBlockdecl3() { + return getSC(); + } + +//braces = '(' tset*:x ')' -> this.concat([#braces, '(', ')'], x) +// | '[' tset*:x ']' -> this.concat([#braces, '[', ']'], x) + function checkBraces(_i) { + if (_i >= tokens.length || + (tokens[_i].type !== TokenType.LeftParenthesis && + tokens[_i].type !== TokenType.LeftSquareBracket) + ) return fail(tokens[_i]); + + return tokens[_i].right - _i + 1; + } + + function getBraces() { + var startPos = pos, + left = pos, + right = tokens[pos].right; + + pos++; + + var tsets = getTsets(); + + pos++; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.BracesType, tokens[left].value, tokens[right].value].concat(tsets) : + [CSSPNodeType.BracesType, tokens[left].value, tokens[right].value].concat(tsets); + } + + function checkCDC(_i) {} + + function checkCDO(_i) {} + + // node: Clazz + function checkClazz(_i) { + var l; + + if (tokens[_i].clazz_l) return tokens[_i].clazz_l; + + if (tokens[_i].type === TokenType.FullStop) { + if (l = checkIdent(_i + 1)) { + tokens[_i].clazz_l = l + 1; + return l + 1; + } + } + + return fail(tokens[_i]); + } + + function getClazz() { + var startPos = pos; + + pos++; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.ClazzType, getIdent()] : + [CSSPNodeType.ClazzType, getIdent()]; + } + + // node: Combinator + function checkCombinator(_i) { + if (tokens[_i].type === TokenType.PlusSign || + tokens[_i].type === TokenType.GreaterThanSign || + tokens[_i].type === TokenType.Tilde) return 1; + + return fail(tokens[_i]); + } + + function getCombinator() { + return needInfo? + [{ ln: tokens[pos].ln }, CSSPNodeType.CombinatorType, tokens[pos++].value] : + [CSSPNodeType.CombinatorType, tokens[pos++].value]; + } + + // node: Comment + function checkComment(_i) { + if (tokens[_i].type === TokenType.CommentML) return 1; + + return fail(tokens[_i]); + } + + function getComment() { + var startPos = pos, + s = tokens[pos].value.substring(2), + l = s.length; + + if (s.charAt(l - 2) === '*' && s.charAt(l - 1) === '/') s = s.substring(0, l - 2); + + pos++; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.CommentType, s] : + [CSSPNodeType.CommentType, s]; + } + + // declaration = property:x ':' value:y -> [#declaration, x, y] + function checkDeclaration(_i) { + var start = _i, + l; + + if (l = checkProperty(_i)) _i += l; + else return fail(tokens[_i]); + + if (_i < tokens.length && tokens[_i].type === TokenType.Colon) _i++; + else return fail(tokens[_i]); + + if (l = checkValue(_i)) _i += l; + else return fail(tokens[_i]); + + return _i - start; + } + + function getDeclaration() { + var declaration = needInfo? + [{ ln: tokens[pos].ln }, CSSPNodeType.DeclarationType, getProperty()] : + [CSSPNodeType.DeclarationType, getProperty()]; + + pos++; + + declaration.push(getValue()); + + return declaration; + } + + // node: Decldelim + function checkDecldelim(_i) { + if (_i < tokens.length && tokens[_i].type === TokenType.Semicolon) return 1; + + return fail(tokens[_i]); + } + + function getDecldelim() { + var startPos = pos; + + pos++; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.DecldelimType] : + [CSSPNodeType.DecldelimType]; + } + + // node: Delim + function checkDelim(_i) { + if (_i < tokens.length && tokens[_i].type === TokenType.Comma) return 1; + + if (_i >= tokens.length) return fail(tokens[tokens.length - 1]); + + return fail(tokens[_i]); + } + + function getDelim() { + var startPos = pos; + + pos++; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.DelimType] : + [CSSPNodeType.DelimType]; + } + + // node: Dimension + function checkDimension(_i) { + var ln = checkNumber(_i), + li; + + if (!ln || (ln && _i + ln >= tokens.length)) return fail(tokens[_i]); + + if (li = checkNmName2(_i + ln)) return ln + li; + + return fail(tokens[_i]); + } + + function getDimension() { + var startPos = pos, + n = getNumber(), + dimension = needInfo ? + [{ ln: tokens[pos].ln }, CSSPNodeType.IdentType, getNmName2()] : + [CSSPNodeType.IdentType, getNmName2()]; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.DimensionType, n, dimension] : + [CSSPNodeType.DimensionType, n, dimension]; + } + +//filter = filterp:x ':' filterv:y -> [#filter, x, y] + function checkFilter(_i) { + var start = _i, + l; + + if (l = checkFilterp(_i)) _i += l; + else return fail(tokens[_i]); + + if (tokens[_i].type === TokenType.Colon) _i++; + else return fail(tokens[_i]); + + if (l = checkFilterv(_i)) _i += l; + else return fail(tokens[_i]); + + return _i - start; + } + + function getFilter() { + var filter = needInfo? + [{ ln: tokens[pos].ln }, CSSPNodeType.FilterType, getFilterp()] : + [CSSPNodeType.FilterType, getFilterp()]; + + pos++; + + filter.push(getFilterv()); + + return filter; + } + +//filterp = (seq('-filter') | seq('_filter') | seq('*filter') | seq('-ms-filter') | seq('filter')):t sc*:s0 -> this.concat([#property, [#ident, t]], s0) + function checkFilterp(_i) { + var start = _i, + l, + x; + + if (_i < tokens.length) { + if (tokens[_i].value === 'filter') l = 1; + else { + x = joinValues2(_i, 2); + + if (x === '-filter' || x === '_filter' || x === '*filter') l = 2; + else { + x = joinValues2(_i, 4); + + if (x === '-ms-filter') l = 4; + else return fail(tokens[_i]); + } + } + + tokens[start].filterp_l = l; + + _i += l; + + if (checkSC(_i)) _i += l; + + return _i - start; + } + + return fail(tokens[_i]); + } + + function getFilterp() { + var startPos = pos, + x = joinValues2(pos, tokens[pos].filterp_l), + ident = needInfo? [{ ln: tokens[startPos].ln }, CSSPNodeType.IdentType, x] : [CSSPNodeType.IdentType, x]; + + pos += tokens[pos].filterp_l; + + return (needInfo? [{ ln: tokens[startPos].ln }, CSSPNodeType.PropertyType, ident] : [CSSPNodeType.PropertyType, ident]) + .concat(getSC()); + + } + +//filterv = progid+:x -> [#filterv].concat(x) + function checkFilterv(_i) { + var start = _i, + l; + + if (l = checkProgid(_i)) _i += l; + else return fail(tokens[_i]); + + while (l = checkProgid(_i)) { + _i += l; + } + + tokens[start].last_progid = _i; + + if (_i < tokens.length && (l = checkSC(_i))) _i += l; + + if (_i < tokens.length && (l = checkImportant(_i))) _i += l; + + return _i - start; + } + + function getFilterv() { + var filterv = needInfo? [{ ln: tokens[pos].ln }, CSSPNodeType.FiltervType] : [CSSPNodeType.FiltervType], + last_progid = tokens[pos].last_progid; + + while (pos < last_progid) { + filterv.push(getProgid()); + } + + filterv = filterv.concat(checkSC(pos) ? getSC() : []); + + if (pos < tokens.length && checkImportant(pos)) filterv.push(getImportant()); + + return filterv; + } + +//functionExpression = ``expression('' functionExpressionBody*:x ')' -> [#functionExpression, x.join('')], + function checkFunctionExpression(_i) { + var start = _i; + + if (!tokens[_i] || tokens[_i++].value !== 'expression') return fail(tokens[_i - 1]); + + if (!tokens[_i] || tokens[_i].type !== TokenType.LeftParenthesis) return fail(tokens[_i]); + + return tokens[_i].right - start + 1; + } + + function getFunctionExpression() { + var startPos = pos; + + pos++; + + var e = joinValues(pos + 1, tokens[pos].right - 1); + + pos = tokens[pos].right + 1; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.FunctionExpressionType, e] : + [CSSPNodeType.FunctionExpressionType, e]; + } + +//funktion = ident:x '(' functionBody:y ')' -> [#funktion, x, y] + function checkFunktion(_i) { + var start = _i, + l = checkIdent(_i); + + if (!l) return fail(tokens[_i]); + + _i += l; + + if (_i >= tokens.length || tokens[_i].type !== TokenType.LeftParenthesis) return fail(tokens[_i - 1]); + + return tokens[_i].right - start + 1; + } + + function getFunktion() { + var startPos = pos, + ident = getIdent(); + + pos++; + + var body = ident[needInfo? 2 : 1] !== 'not'? + getFunctionBody() : + getNotFunctionBody(); // ok, here we have CSS3 initial draft: http://dev.w3.org/csswg/selectors3/#negation + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.FunktionType, ident, body] : + [CSSPNodeType.FunktionType, ident, body]; + } + + function getFunctionBody() { + var startPos = pos, + body = [], + x; + + while (tokens[pos].type !== TokenType.RightParenthesis) { + if (checkTset(pos)) { + x = getTset(); + if ((needInfo && typeof x[1] === 'string') || typeof x[0] === 'string') body.push(x); + else body = body.concat(x); + } else if (checkClazz(pos)) { + body.push(getClazz()); + } else { + throwError(); + } + } + + pos++; + + return (needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.FunctionBodyType] : + [CSSPNodeType.FunctionBodyType] + ).concat(body); + } + + function getNotFunctionBody() { + var startPos = pos, + body = [], + x; + + while (tokens[pos].type !== TokenType.RightParenthesis) { + if (checkSimpleselector(pos)) { + body.push(getSimpleSelector()); + } else { + throwError(); + } + } + + pos++; + + return (needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.FunctionBodyType] : + [CSSPNodeType.FunctionBodyType] + ).concat(body); + } + + // node: Ident + function checkIdent(_i) { + if (_i >= tokens.length) return fail(tokens[_i]); + + var start = _i, + wasIdent = false; + + if (tokens[_i].type === TokenType.LowLine) return checkIdentLowLine(_i); + + // start char / word + if (tokens[_i].type === TokenType.HyphenMinus || + tokens[_i].type === TokenType.Identifier || + tokens[_i].type === TokenType.DollarSign || + tokens[_i].type === TokenType.Asterisk) _i++; + else return fail(tokens[_i]); + + wasIdent = tokens[_i - 1].type === TokenType.Identifier; + + for (; _i < tokens.length; _i++) { + if (tokens[_i].type !== TokenType.HyphenMinus && + tokens[_i].type !== TokenType.LowLine) { + if (tokens[_i].type !== TokenType.Identifier && + (tokens[_i].type !== TokenType.DecimalNumber || !wasIdent) + ) break; + else wasIdent = true; + } + } + + if (!wasIdent && tokens[start].type !== TokenType.Asterisk) return fail(tokens[_i]); + + tokens[start].ident_last = _i - 1; + + return _i - start; + } + + function checkIdentLowLine(_i) { + var start = _i; + + _i++; + + for (; _i < tokens.length; _i++) { + if (tokens[_i].type !== TokenType.HyphenMinus && + tokens[_i].type !== TokenType.DecimalNumber && + tokens[_i].type !== TokenType.LowLine && + tokens[_i].type !== TokenType.Identifier) break; + } + + tokens[start].ident_last = _i - 1; + + return _i - start; + } + + function getIdent() { + var startPos = pos, + s = joinValues(pos, tokens[pos].ident_last); + + pos = tokens[pos].ident_last + 1; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.IdentType, s] : + [CSSPNodeType.IdentType, s]; + } + +//important = '!' sc*:s0 seq('important') -> [#important].concat(s0) + function checkImportant(_i) { + var start = _i, + l; + + if (tokens[_i++].type !== TokenType.ExclamationMark) return fail(tokens[_i - 1]); + + if (l = checkSC(_i)) _i += l; + + if (tokens[_i].value !== 'important') return fail(tokens[_i]); + + return _i - start + 1; + } + + function getImportant() { + var startPos = pos; + + pos++; + + var sc = getSC(); + + pos++; + + return (needInfo? [{ ln: tokens[startPos].ln }, CSSPNodeType.ImportantType] : [CSSPNodeType.ImportantType]).concat(sc); + } + + // node: Namespace + function checkNamespace(_i) { + if (tokens[_i].type === TokenType.VerticalLine) return 1; + + return fail(tokens[_i]); + } + + function getNamespace() { + var startPos = pos; + + pos++; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.NamespaceType] : + [CSSPNodeType.NamespaceType]; + } + +//nth = (digit | 'n')+:x -> [#nth, x.join('')] +// | (seq('even') | seq('odd')):x -> [#nth, x] + function checkNth(_i) { + return checkNth1(_i) || checkNth2(_i); + } + + function checkNth1(_i) { + var start = _i; + + for (; _i < tokens.length; _i++) { + if (tokens[_i].type !== TokenType.DecimalNumber && tokens[_i].value !== 'n') break; + } + + if (_i !== start) { + tokens[start].nth_last = _i - 1; + return _i - start; + } + + return fail(tokens[_i]); + } + + function getNth() { + var startPos = pos; + + if (tokens[pos].nth_last) { + var n = needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.NthType, joinValues(pos, tokens[pos].nth_last)] : + [CSSPNodeType.NthType, joinValues(pos, tokens[pos].nth_last)]; + + pos = tokens[pos].nth_last + 1; + + return n; + } + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.NthType, tokens[pos++].value] : + [CSSPNodeType.NthType, tokens[pos++].value]; + } + + function checkNth2(_i) { + if (tokens[_i].value === 'even' || tokens[_i].value === 'odd') return 1; + + return fail(tokens[_i]); + } + +//nthf = ':' seq('nth-'):x (seq('child') | seq('last-child') | seq('of-type') | seq('last-of-type')):y -> (x + y) + function checkNthf(_i) { + var start = _i, + l = 0; + + if (tokens[_i++].type !== TokenType.Colon) return fail(tokens[_i - 1]); l++; + + if (tokens[_i++].value !== 'nth' || tokens[_i++].value !== '-') return fail(tokens[_i - 1]); l += 2; + + if ('child' === tokens[_i].value) { + l += 1; + } else if ('last-child' === tokens[_i].value + + tokens[_i + 1].value + + tokens[_i + 2].value) { + l += 3; + } else if ('of-type' === tokens[_i].value + + tokens[_i + 1].value + + tokens[_i + 2].value) { + l += 3; + } else if ('last-of-type' === tokens[_i].value + + tokens[_i + 1].value + + tokens[_i + 2].value + + tokens[_i + 3].value + + tokens[_i + 4].value) { + l += 5; + } else return fail(tokens[_i]); + + tokens[start + 1].nthf_last = start + l - 1; + + return l; + } + + function getNthf() { + pos++; + + var s = joinValues(pos, tokens[pos].nthf_last); + + pos = tokens[pos].nthf_last + 1; + + return s; + } + +//nthselector = nthf:x '(' (sc | unary | nth)*:y ')' -> [#nthselector, [#ident, x]].concat(y) + function checkNthselector(_i) { + var start = _i, + l; + + if (l = checkNthf(_i)) _i += l; + else return fail(tokens[_i]); + + if (tokens[_i].type !== TokenType.LeftParenthesis || !tokens[_i].right) return fail(tokens[_i]); + + l++; + + var rp = tokens[_i++].right; + + while (_i < rp) { + if (l = checkSC(_i)) _i += l; + else if (l = checkUnary(_i)) _i += l; + else if (l = checkNth(_i)) _i += l; + else return fail(tokens[_i]); + } + + return rp - start + 1; + } + + function getNthselector() { + var startPos = pos, + nthf = needInfo? + [{ ln: tokens[pos].ln }, CSSPNodeType.IdentType, getNthf()] : + [CSSPNodeType.IdentType, getNthf()], + ns = needInfo? + [{ ln: tokens[pos].ln }, CSSPNodeType.NthselectorType, nthf] : + [CSSPNodeType.NthselectorType, nthf]; + + pos++; + + while (tokens[pos].type !== TokenType.RightParenthesis) { + if (checkSC(pos)) ns = ns.concat(getSC()); + else if (checkUnary(pos)) ns.push(getUnary()); + else if (checkNth(pos)) ns.push(getNth()); + } + + pos++; + + return ns; + } + + // node: Number + function checkNumber(_i) { + if (_i < tokens.length && tokens[_i].number_l) return tokens[_i].number_l; + + if (_i < tokens.length && tokens[_i].type === TokenType.DecimalNumber && + (!tokens[_i + 1] || + (tokens[_i + 1] && tokens[_i + 1].type !== TokenType.FullStop)) + ) return (tokens[_i].number_l = 1, tokens[_i].number_l); // 10 + + if (_i < tokens.length && + tokens[_i].type === TokenType.DecimalNumber && + tokens[_i + 1] && tokens[_i + 1].type === TokenType.FullStop && + (!tokens[_i + 2] || (tokens[_i + 2].type !== TokenType.DecimalNumber)) + ) return (tokens[_i].number_l = 2, tokens[_i].number_l); // 10. + + if (_i < tokens.length && + tokens[_i].type === TokenType.FullStop && + tokens[_i + 1].type === TokenType.DecimalNumber + ) return (tokens[_i].number_l = 2, tokens[_i].number_l); // .10 + + if (_i < tokens.length && + tokens[_i].type === TokenType.DecimalNumber && + tokens[_i + 1] && tokens[_i + 1].type === TokenType.FullStop && + tokens[_i + 2] && tokens[_i + 2].type === TokenType.DecimalNumber + ) return (tokens[_i].number_l = 3, tokens[_i].number_l); // 10.10 + + return fail(tokens[_i]); + } + + function getNumber() { + var s = '', + startPos = pos, + l = tokens[pos].number_l; + + for (var i = 0; i < l; i++) { + s += tokens[pos + i].value; + } + + pos += l; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.NumberType, s] : + [CSSPNodeType.NumberType, s]; + } + + // node: Operator + function checkOperator(_i) { + if (_i < tokens.length && + (tokens[_i].type === TokenType.Solidus || + tokens[_i].type === TokenType.Comma || + tokens[_i].type === TokenType.Colon || + tokens[_i].type === TokenType.EqualsSign)) return 1; + + return fail(tokens[_i]); + } + + function getOperator() { + return needInfo? + [{ ln: tokens[pos].ln }, CSSPNodeType.OperatorType, tokens[pos++].value] : + [CSSPNodeType.OperatorType, tokens[pos++].value]; + } + + // node: Percentage + function checkPercentage(_i) { + var x = checkNumber(_i); + + if (!x || (x && _i + x >= tokens.length)) return fail(tokens[_i]); + + if (tokens[_i + x].type === TokenType.PercentSign) return x + 1; + + return fail(tokens[_i]); + } + + function getPercentage() { + var startPos = pos, + n = getNumber(); + + pos++; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.PercentageType, n] : + [CSSPNodeType.PercentageType, n]; + } + +//progid = sc*:s0 seq('progid:DXImageTransform.Microsoft.'):x letter+:y '(' (m_string | m_comment | ~')' char)+:z ')' sc*:s1 +// -> this.concat([#progid], s0, [[#raw, x + y.join('') + '(' + z.join('') + ')']], s1), + function checkProgid(_i) { + var start = _i, + l, + x; + + if (l = checkSC(_i)) _i += l; + + if ((x = joinValues2(_i, 6)) === 'progid:DXImageTransform.Microsoft.') { + _start = _i; + _i += 6; + } else return fail(tokens[_i - 1]); + + if (l = checkIdent(_i)) _i += l; + else return fail(tokens[_i]); + + if (l = checkSC(_i)) _i += l; + + if (tokens[_i].type === TokenType.LeftParenthesis) { + tokens[start].progid_end = tokens[_i].right; + _i = tokens[_i].right + 1; + } else return fail(tokens[_i]); + + if (l = checkSC(_i)) _i += l; + + return _i - start; + } + + function getProgid() { + var startPos = pos, + progid_end = tokens[pos].progid_end; + + return (needInfo? [{ ln: tokens[startPos].ln }, CSSPNodeType.ProgidType] : [CSSPNodeType.ProgidType]) + .concat(getSC()) + .concat([_getProgid(progid_end)]) + .concat(getSC()); + } + + function _getProgid(progid_end) { + var startPos = pos, + x = joinValues(pos, progid_end); + + pos = progid_end + 1; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.RawType, x] : + [CSSPNodeType.RawType, x]; + } + +//property = ident:x sc*:s0 -> this.concat([#property, x], s0) + function checkProperty(_i) { + var start = _i, + l; + + if (l = checkIdent(_i)) _i += l; + else return fail(tokens[_i]); + + if (l = checkSC(_i)) _i += l; + return _i - start; + } + + function getProperty() { + var startPos = pos; + + return (needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.PropertyType, getIdent()] : + [CSSPNodeType.PropertyType, getIdent()]) + .concat(getSC()); + } + + function checkPseudo(_i) { + return checkPseudoe(_i) || + checkPseudoc(_i); + } + + function getPseudo() { + if (checkPseudoe(pos)) return getPseudoe(); + if (checkPseudoc(pos)) return getPseudoc(); + } + + function checkPseudoe(_i) { + var l; + + if (tokens[_i++].type !== TokenType.Colon) return fail(tokens[_i - 1]); + + if (tokens[_i++].type !== TokenType.Colon) return fail(tokens[_i - 1]); + + if (l = checkIdent(_i)) return l + 2; + + return fail(tokens[_i]); + } + + function getPseudoe() { + var startPos = pos; + + pos += 2; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.PseudoeType, getIdent()] : + [CSSPNodeType.PseudoeType, getIdent()]; + } + +//pseudoc = ':' (funktion | ident):x -> [#pseudoc, x] + function checkPseudoc(_i) { + var l; + + if (tokens[_i++].type !== TokenType.Colon) return fail(tokens[_i - 1]); + + if ((l = checkFunktion(_i)) || (l = checkIdent(_i))) return l + 1; + + return fail(tokens[_i]); + } + + function getPseudoc() { + var startPos = pos; + + pos++; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.PseudocType, checkFunktion(pos)? getFunktion() : getIdent()] : + [CSSPNodeType.PseudocType, checkFunktion(pos)? getFunktion() : getIdent()]; + } + + //ruleset = selector*:x block:y -> this.concat([#ruleset], x, [y]) + function checkRuleset(_i) { + var start = _i, + l; + + if (tokens[start].ruleset_l !== undefined) return tokens[start].ruleset_l; + + while (l = checkSelector(_i)) { + _i += l; + } + + if (l = checkBlock(_i)) _i += l; + else return fail(tokens[_i]); + + tokens[start].ruleset_l = _i - start; + + return _i - start; + } + + function getRuleset() { + var ruleset = needInfo? [{ ln: tokens[pos].ln }, CSSPNodeType.RulesetType] : [CSSPNodeType.RulesetType]; + + while (!checkBlock(pos)) { + ruleset.push(getSelector()); + } + + ruleset.push(getBlock()); + + return ruleset; + } + + // node: S + function checkS(_i) { + if (tokens[_i].ws) return tokens[_i].ws_last - _i + 1; + + return fail(tokens[_i]); + } + + function getS() { + var startPos = pos, + s = joinValues(pos, tokens[pos].ws_last); + + pos = tokens[pos].ws_last + 1; + + return needInfo? [{ ln: tokens[startPos].ln }, CSSPNodeType.SType, s] : [CSSPNodeType.SType, s]; + } + + function checkSC(_i) { + var l, + lsc = 0; + + while (_i < tokens.length) { + if (!(l = checkS(_i)) && !(l = checkComment(_i))) break; + _i += l; + lsc += l; + } + + if (lsc) return lsc; + + if (_i >= tokens.length) return fail(tokens[tokens.length - 1]); + + return fail(tokens[_i]); + } + + function getSC() { + var sc = []; + + while (pos < tokens.length) { + if (checkS(pos)) sc.push(getS()); + else if (checkComment(pos)) sc.push(getComment()); + else break; + } + + return sc; + } + + //selector = (simpleselector | delim)+:x -> this.concat([#selector], x) + function checkSelector(_i) { + var start = _i, + l; + + if (_i < tokens.length) { + while (l = checkSimpleselector(_i) || checkDelim(_i)) { + _i += l; + } + + tokens[start].selector_end = _i - 1; + + return _i - start; + } + } + + function getSelector() { + var selector = needInfo? [{ ln: tokens[pos].ln }, CSSPNodeType.SelectorType] : [CSSPNodeType.SelectorType], + selector_end = tokens[pos].selector_end; + + while (pos <= selector_end) { + selector.push(checkDelim(pos) ? getDelim() : getSimpleSelector()); + } + + return selector; + } + + // node: Shash + function checkShash(_i) { + if (tokens[_i].type !== TokenType.NumberSign) return fail(tokens[_i]); + + var l = checkNmName(_i + 1); + + if (l) return l + 1; + + return fail(tokens[_i]); + } + + function getShash() { + var startPos = pos; + + pos++; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.ShashType, getNmName()] : + [CSSPNodeType.ShashType, getNmName()]; + } + +//simpleselector = (nthselector | combinator | attrib | pseudo | clazz | shash | any | sc | namespace)+:x -> this.concatContent([#simpleselector], [x]) + function checkSimpleselector(_i) { + var start = _i, + l; + + while (_i < tokens.length) { + if (l = _checkSimpleSelector(_i)) _i += l; + else break; + } + + if (_i - start) return _i - start; + + if (_i >= tokens.length) return fail(tokens[tokens.length - 1]); + + return fail(tokens[_i]); + } + + function _checkSimpleSelector(_i) { + return checkNthselector(_i) || + checkCombinator(_i) || + checkAttrib(_i) || + checkPseudo(_i) || + checkClazz(_i) || + checkShash(_i) || + checkAny(_i) || + checkSC(_i) || + checkNamespace(_i); + } + + function getSimpleSelector() { + var ss = needInfo? [{ ln: tokens[pos].ln }, CSSPNodeType.SimpleselectorType] : [CSSPNodeType.SimpleselectorType], + t; + + while (pos < tokens.length && _checkSimpleSelector(pos)) { + t = _getSimpleSelector(); + + if ((needInfo && typeof t[1] === 'string') || typeof t[0] === 'string') ss.push(t); + else ss = ss.concat(t); + } + + return ss; + } + + function _getSimpleSelector() { + if (checkNthselector(pos)) return getNthselector(); + else if (checkCombinator(pos)) return getCombinator(); + else if (checkAttrib(pos)) return getAttrib(); + else if (checkPseudo(pos)) return getPseudo(); + else if (checkClazz(pos)) return getClazz(); + else if (checkShash(pos)) return getShash(); + else if (checkAny(pos)) return getAny(); + else if (checkSC(pos)) return getSC(); + else if (checkNamespace(pos)) return getNamespace(); + } + + // node: String + function checkString(_i) { + if (_i < tokens.length && + (tokens[_i].type === TokenType.StringSQ || tokens[_i].type === TokenType.StringDQ) + ) return 1; + + return fail(tokens[_i]); + } + + function getString() { + var startPos = pos; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.StringType, tokens[pos++].value] : + [CSSPNodeType.StringType, tokens[pos++].value]; + } + + //stylesheet = (cdo | cdc | sc | statement)*:x -> this.concat([#stylesheet], x) + function checkStylesheet(_i) { + var start = _i, + l; + + while (_i < tokens.length) { + if (l = checkSC(_i)) _i += l; + else { + currentBlockLN = tokens[_i].ln; + if (l = checkAtrule(_i)) _i += l; + else if (l = checkRuleset(_i)) _i += l; + else if (l = checkUnknown(_i)) _i += l; + else throwError(); + } + } + + return _i - start; + } + + function getStylesheet(_i) { + var t, + stylesheet = needInfo? [{ ln: tokens[pos].ln }, CSSPNodeType.StylesheetType] : [CSSPNodeType.StylesheetType]; + + while (pos < tokens.length) { + if (checkSC(pos)) stylesheet = stylesheet.concat(getSC()); + else { + currentBlockLN = tokens[pos].ln; + if (checkRuleset(pos)) stylesheet.push(getRuleset()); + else if (checkAtrule(pos)) stylesheet.push(getAtrule()); + else if (checkUnknown(pos)) stylesheet.push(getUnknown()); + else throwError(); + } + } + + return stylesheet; + } + +//tset = vhash | any | sc | operator + function checkTset(_i) { + return checkVhash(_i) || + checkAny(_i) || + checkSC(_i) || + checkOperator(_i); + } + + function getTset() { + if (checkVhash(pos)) return getVhash(); + else if (checkAny(pos)) return getAny(); + else if (checkSC(pos)) return getSC(); + else if (checkOperator(pos)) return getOperator(); + } + + function checkTsets(_i) { + var start = _i, + l; + + while (l = checkTset(_i)) { + _i += l; + } + + return _i - start; + } + + function getTsets() { + var tsets = [], + x; + + while (x = getTset()) { + if ((needInfo && typeof x[1] === 'string') || typeof x[0] === 'string') tsets.push(x); + else tsets = tsets.concat(x); + } + + return tsets; + } + + // node: Unary + function checkUnary(_i) { + if (_i < tokens.length && + (tokens[_i].type === TokenType.HyphenMinus || + tokens[_i].type === TokenType.PlusSign) + ) return 1; + + return fail(tokens[_i]); + } + + function getUnary() { + var startPos = pos; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.UnaryType, tokens[pos++].value] : + [CSSPNodeType.UnaryType, tokens[pos++].value]; + } + + // node: Unknown + function checkUnknown(_i) { + if (_i < tokens.length && tokens[_i].type === TokenType.CommentSL) return 1; + + return fail(tokens[_i]); + } + + function getUnknown() { + var startPos = pos; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.UnknownType, tokens[pos++].value] : + [CSSPNodeType.UnknownType, tokens[pos++].value]; + } + +// uri = seq('url(') sc*:s0 string:x sc*:s1 ')' -> this.concat([#uri], s0, [x], s1) +// | seq('url(') sc*:s0 (~')' ~m_w char)*:x sc*:s1 ')' -> this.concat([#uri], s0, [[#raw, x.join('')]], s1), + function checkUri(_i) { + var start = _i, + l; + + if (_i < tokens.length && tokens[_i++].value !== 'url') return fail(tokens[_i - 1]); + + if (!tokens[_i] || tokens[_i].type !== TokenType.LeftParenthesis) return fail(tokens[_i]); + + return tokens[_i].right - start + 1; + } + + function getUri() { + var startPos = pos, + uriExcluding = {}; + + pos += 2; + + uriExcluding[TokenType.Space] = 1; + uriExcluding[TokenType.Tab] = 1; + uriExcluding[TokenType.Newline] = 1; + uriExcluding[TokenType.LeftParenthesis] = 1; + uriExcluding[TokenType.RightParenthesis] = 1; + + if (checkUri1(pos)) { + var uri = (needInfo? [{ ln: tokens[startPos].ln }, CSSPNodeType.UriType] : [CSSPNodeType.UriType]) + .concat(getSC()) + .concat([getString()]) + .concat(getSC()); + + pos++; + + return uri; + } else { + var uri = (needInfo? [{ ln: tokens[startPos].ln }, CSSPNodeType.UriType] : [CSSPNodeType.UriType]) + .concat(getSC()), + l = checkExcluding(uriExcluding, pos), + raw = needInfo? + [{ ln: tokens[pos].ln }, CSSPNodeType.RawType, joinValues(pos, pos + l)] : + [CSSPNodeType.RawType, joinValues(pos, pos + l)]; + + uri.push(raw); + + pos += l + 1; + + uri = uri.concat(getSC()); + + pos++; + + return uri; + } + } + + function checkUri1(_i) { + var start = _i, + l = checkSC(_i); + + if (l) _i += l; + + if (tokens[_i].type !== TokenType.StringDQ && tokens[_i].type !== TokenType.StringSQ) return fail(tokens[_i]); + + _i++; + + if (l = checkSC(_i)) _i += l; + + return _i - start; + } + + // value = (sc | vhash | any | block | atkeyword | operator | important)+:x -> this.concat([#value], x) + function checkValue(_i) { + var start = _i, + l; + + while (_i < tokens.length) { + if (l = _checkValue(_i)) _i += l; + else break; + } + + if (_i - start) return _i - start; + + return fail(tokens[_i]); + } + + function _checkValue(_i) { + return checkSC(_i) || + checkVhash(_i) || + checkAny(_i) || + checkBlock(_i) || + checkAtkeyword(_i) || + checkOperator(_i) || + checkImportant(_i); + } + + function getValue() { + var ss = needInfo? [{ ln: tokens[pos].ln }, CSSPNodeType.ValueType] : [CSSPNodeType.ValueType], + t; + + while (pos < tokens.length && _checkValue(pos)) { + t = _getValue(); + + if ((needInfo && typeof t[1] === 'string') || typeof t[0] === 'string') ss.push(t); + else ss = ss.concat(t); + } + + return ss; + } + + function _getValue() { + if (checkSC(pos)) return getSC(); + else if (checkVhash(pos)) return getVhash(); + else if (checkAny(pos)) return getAny(); + else if (checkBlock(pos)) return getBlock(); + else if (checkAtkeyword(pos)) return getAtkeyword(); + else if (checkOperator(pos)) return getOperator(); + else if (checkImportant(pos)) return getImportant(); + } + + // node: Vhash + function checkVhash(_i) { + if (_i >= tokens.length || tokens[_i].type !== TokenType.NumberSign) return fail(tokens[_i]); + + var l = checkNmName2(_i + 1); + + if (l) return l + 1; + + return fail(tokens[_i]); + } + + function getVhash() { + var startPos = pos; + + pos++; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.VhashType, getNmName2()] : + [CSSPNodeType.VhashType, getNmName2()]; + } + + function checkNmName(_i) { + var start = _i; + + // start char / word + if (tokens[_i].type === TokenType.HyphenMinus || + tokens[_i].type === TokenType.LowLine || + tokens[_i].type === TokenType.Identifier || + tokens[_i].type === TokenType.DecimalNumber) _i++; + else return fail(tokens[_i]); + + for (; _i < tokens.length; _i++) { + if (tokens[_i].type !== TokenType.HyphenMinus && + tokens[_i].type !== TokenType.LowLine && + tokens[_i].type !== TokenType.Identifier && + tokens[_i].type !== TokenType.DecimalNumber) break; + } + + tokens[start].nm_name_last = _i - 1; + + return _i - start; + } + + function getNmName() { + var s = joinValues(pos, tokens[pos].nm_name_last); + + pos = tokens[pos].nm_name_last + 1; + + return s; + } + + function checkNmName2(_i) { + var start = _i; + + if (tokens[_i].type === TokenType.Identifier) return 1; + else if (tokens[_i].type !== TokenType.DecimalNumber) return fail(tokens[_i]); + + _i++; + + if (!tokens[_i] || tokens[_i].type !== TokenType.Identifier) return 1; + + return 2; + } + + function getNmName2() { + var s = tokens[pos].value; + + if (tokens[pos++].type === TokenType.DecimalNumber && + pos < tokens.length && + tokens[pos].type === TokenType.Identifier + ) s += tokens[pos++].value; + + return s; + } + + function checkExcluding(exclude, _i) { + var start = _i; + + while(_i < tokens.length) { + if (exclude[tokens[_i++].type]) break; + } + + return _i - start - 2; + } + + function joinValues(start, finish) { + var s = ''; + + for (var i = start; i < finish + 1; i++) { + s += tokens[i].value; + } + + return s; + } + + function joinValues2(start, num) { + if (start + num - 1 >= tokens.length) return; + + var s = ''; + + for (var i = 0; i < num; i++) { + s += tokens[start + i].value; + } + + return s; + } + + function markSC() { + var ws = -1, // whitespaces + sc = -1, // ws and comments + t; + + for (var i = 0; i < tokens.length; i++) { + t = tokens[i]; + switch (t.type) { + case TokenType.Space: + case TokenType.Tab: + case TokenType.Newline: + t.ws = true; + t.sc = true; + + if (ws === -1) ws = i; + if (sc === -1) sc = i; + + break; + case TokenType.CommentML: + if (ws !== -1) { + tokens[ws].ws_last = i - 1; + ws = -1; + } + + t.sc = true; + + break; + default: + if (ws !== -1) { + tokens[ws].ws_last = i - 1; + ws = -1; + } + + if (sc !== -1) { + tokens[sc].sc_last = i - 1; + sc = -1; + } + } + } + + if (ws !== -1) tokens[ws].ws_last = i - 1; + if (sc !== -1) tokens[sc].sc_last = i - 1; + } + + return function(_tokens, rule, _needInfo) { + return _getAST(_tokens, rule, _needInfo); + } + +}()); diff --git a/node_modules/csscomb/node_modules/gonzales/src/cssp.translator.node.js b/node_modules/csscomb/node_modules/gonzales/src/cssp.translator.node.js new file mode 100644 index 0000000..4e7a267 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/src/cssp.translator.node.js @@ -0,0 +1 @@ +exports.csspToSrc = csspToSrc; diff --git a/node_modules/csscomb/node_modules/gonzales/src/cssp.translator.shared.js b/node_modules/csscomb/node_modules/gonzales/src/cssp.translator.shared.js new file mode 100644 index 0000000..11efe40 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/src/cssp.translator.shared.js @@ -0,0 +1,101 @@ +// version: 1.0.0 + +function csspToSrc(tree, hasInfo) { + + var _m_simple = { + 'unary': 1, 'nth': 1, 'combinator': 1, 'ident': 1, 'number': 1, 's': 1, + 'string': 1, 'attrselector': 1, 'operator': 1, 'raw': 1, 'unknown': 1 + }, + _m_composite = { + 'simpleselector': 1, 'dimension': 1, 'selector': 1, 'property': 1, 'value': 1, + 'filterv': 1, 'progid': 1, 'ruleset': 1, 'atruleb': 1, 'atrulerq': 1, 'atrulers': 1, + 'stylesheet': 1 + }, + _m_primitive = { + 'cdo': 'cdo', 'cdc': 'cdc', 'decldelim': ';', 'namespace': '|', 'delim': ',' + }; + + function _t(tree) { + var t = tree[hasInfo? 1 : 0]; + if (t in _m_primitive) return _m_primitive[t]; + else if (t in _m_simple) return _simple(tree); + else if (t in _m_composite) return _composite(tree); + return _unique[t](tree); + } + + function _composite(t, i) { + var s = ''; + i = i === undefined ? (hasInfo? 2 : 1) : i; + for (; i < t.length; i++) s += _t(t[i]); + return s; + } + + function _simple(t) { + return t[hasInfo? 2 : 1]; + } + + var _unique = { + percentage: function(t) { + return _t(t[hasInfo? 2 : 1]) + '%'; + }, + comment: function (t) { + return '/*' + t[hasInfo? 2 : 1] + '*/'; + }, + clazz: function(t) { + return '.' + _t(t[hasInfo? 2 : 1]); + }, + atkeyword: function(t) { + return '@' + _t(t[hasInfo? 2 : 1]); + }, + shash: function (t) { + return '#' + t[hasInfo? 2 : 1]; + }, + vhash: function(t) { + return '#' + t[hasInfo? 2 : 1]; + }, + attrib: function(t) { + return '[' + _composite(t) + ']'; + }, + important: function(t) { + return '!' + _composite(t) + 'important'; + }, + nthselector: function(t) { + return ':' + _simple(t[hasInfo? 2 : 1]) + '(' + _composite(t, hasInfo? 3 : 2) + ')'; + }, + funktion: function(t) { + return _simple(t[hasInfo? 2 : 1]) + '(' + _composite(t[hasInfo? 3: 2]) + ')'; + }, + declaration: function(t) { + return _t(t[hasInfo? 2 : 1]) + ':' + _t(t[hasInfo? 3 : 2]); + }, + filter: function(t) { + return _t(t[hasInfo? 2 : 1]) + ':' + _t(t[hasInfo? 3 : 2]); + }, + block: function(t) { + return '{' + _composite(t) + '}'; + }, + braces: function(t) { + return t[hasInfo? 2 : 1] + _composite(t, hasInfo? 4 : 3) + t[hasInfo? 3 : 2]; + }, + atrules: function(t) { + return _composite(t) + ';'; + }, + atruler: function(t) { + return _t(t[hasInfo? 2 : 1]) + _t(t[hasInfo? 3 : 2]) + '{' + _t(t[hasInfo? 4 : 3]) + '}'; + }, + pseudoe: function(t) { + return '::' + _t(t[hasInfo? 2 : 1]); + }, + pseudoc: function(t) { + return ':' + _t(t[hasInfo? 2 : 1]); + }, + uri: function(t) { + return 'url(' + _composite(t) + ')'; + }, + functionExpression: function(t) { + return 'expression(' + t[hasInfo? 2 : 1] + ')'; + } + }; + + return _t(tree); +} diff --git a/node_modules/csscomb/node_modules/gonzales/src/gonzales.cssp.footer.js b/node_modules/csscomb/node_modules/gonzales/src/gonzales.cssp.footer.js new file mode 100644 index 0000000..7542707 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/src/gonzales.cssp.footer.js @@ -0,0 +1,4 @@ + return function(s, rule, _needInfo) { + return getCSSPAST(getTokens(s), rule, _needInfo); + } +}()); diff --git a/node_modules/csscomb/node_modules/gonzales/src/gonzales.cssp.header.js b/node_modules/csscomb/node_modules/gonzales/src/gonzales.cssp.header.js new file mode 100644 index 0000000..08e7d77 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/src/gonzales.cssp.header.js @@ -0,0 +1 @@ +var srcToCSSP = (function() { diff --git a/node_modules/csscomb/node_modules/gonzales/src/gonzales.cssp.node.js b/node_modules/csscomb/node_modules/gonzales/src/gonzales.cssp.node.js new file mode 100644 index 0000000..17bf023 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/src/gonzales.cssp.node.js @@ -0,0 +1 @@ +exports.srcToCSSP = srcToCSSP; diff --git a/node_modules/csscomb/node_modules/gonzales/src/tokenizer.shared.js b/node_modules/csscomb/node_modules/gonzales/src/tokenizer.shared.js new file mode 100644 index 0000000..fd1c37b --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/src/tokenizer.shared.js @@ -0,0 +1,275 @@ +var TokenType = { + StringSQ: 'StringSQ', + StringDQ: 'StringDQ', + CommentML: 'CommentML', + CommentSL: 'CommentSL', + + Newline: 'Newline', + Space: 'Space', + Tab: 'Tab', + + ExclamationMark: 'ExclamationMark', // ! + QuotationMark: 'QuotationMark', // " + NumberSign: 'NumberSign', // # + DollarSign: 'DollarSign', // $ + PercentSign: 'PercentSign', // % + Ampersand: 'Ampersand', // & + Apostrophe: 'Apostrophe', // ' + LeftParenthesis: 'LeftParenthesis', // ( + RightParenthesis: 'RightParenthesis', // ) + Asterisk: 'Asterisk', // * + PlusSign: 'PlusSign', // + + Comma: 'Comma', // , + HyphenMinus: 'HyphenMinus', // - + FullStop: 'FullStop', // . + Solidus: 'Solidus', // / + Colon: 'Colon', // : + Semicolon: 'Semicolon', // ; + LessThanSign: 'LessThanSign', // < + EqualsSign: 'EqualsSign', // = + GreaterThanSign: 'GreaterThanSign', // > + QuestionMark: 'QuestionMark', // ? + CommercialAt: 'CommercialAt', // @ + LeftSquareBracket: 'LeftSquareBracket', // [ + ReverseSolidus: 'ReverseSolidus', // \ + RightSquareBracket: 'RightSquareBracket', // ] + CircumflexAccent: 'CircumflexAccent', // ^ + LowLine: 'LowLine', // _ + LeftCurlyBracket: 'LeftCurlyBracket', // { + VerticalLine: 'VerticalLine', // | + RightCurlyBracket: 'RightCurlyBracket', // } + Tilde: 'Tilde', // ~ + + Identifier: 'Identifier', + DecimalNumber: 'DecimalNumber' +}; + +var getTokens = (function() { + + var Punctuation, + urlMode = false, + blockMode = 0; + + Punctuation = { + ' ': TokenType.Space, + '\n': TokenType.Newline, + '\r': TokenType.Newline, + '\t': TokenType.Tab, + '!': TokenType.ExclamationMark, + '"': TokenType.QuotationMark, + '#': TokenType.NumberSign, + '$': TokenType.DollarSign, + '%': TokenType.PercentSign, + '&': TokenType.Ampersand, + '\'': TokenType.Apostrophe, + '(': TokenType.LeftParenthesis, + ')': TokenType.RightParenthesis, + '*': TokenType.Asterisk, + '+': TokenType.PlusSign, + ',': TokenType.Comma, + '-': TokenType.HyphenMinus, + '.': TokenType.FullStop, + '/': TokenType.Solidus, + ':': TokenType.Colon, + ';': TokenType.Semicolon, + '<': TokenType.LessThanSign, + '=': TokenType.EqualsSign, + '>': TokenType.GreaterThanSign, + '?': TokenType.QuestionMark, + '@': TokenType.CommercialAt, + '[': TokenType.LeftSquareBracket, + // '\\': TokenType.ReverseSolidus, + ']': TokenType.RightSquareBracket, + '^': TokenType.CircumflexAccent, + '_': TokenType.LowLine, + '{': TokenType.LeftCurlyBracket, + '|': TokenType.VerticalLine, + '}': TokenType.RightCurlyBracket, + '~': TokenType.Tilde + }; + + function isDecimalDigit(c) { + return '0123456789'.indexOf(c) >= 0; + } + + function throwError(message) { + throw message; + } + + var buffer = '', + tokens = [], + pos, + tn = 0, + ln = 1; + + function _getTokens(s) { + if (!s) return []; + + tokens = []; + + var c, cn; + + for (pos = 0; pos < s.length; pos++) { + c = s.charAt(pos); + cn = s.charAt(pos + 1); + + if (c === '/' && cn === '*') { + parseMLComment(s); + } else if (!urlMode && c === '/' && cn === '/') { + if (blockMode > 0) parseIdentifier(s); + else parseSLComment(s); + } else if (c === '"' || c === "'") { + parseString(s, c); + } else if (c === ' ') { + parseSpaces(s) + } else if (c in Punctuation) { + pushToken(Punctuation[c], c); + if (c === '\n' || c === '\r') ln++; + if (c === ')') urlMode = false; + if (c === '{') blockMode++; + if (c === '}') blockMode--; + } else if (isDecimalDigit(c)) { + parseDecimalNumber(s); + } else { + parseIdentifier(s); + } + } + + mark(); + + return tokens; + } + + function pushToken(type, value) { + tokens.push({ tn: tn++, ln: ln, type: type, value: value }); + } + + function parseSpaces(s) { + var start = pos; + + for (; pos < s.length; pos++) { + if (s.charAt(pos) !== ' ') break; + } + + pushToken(TokenType.Space, s.substring(start, pos)); + pos--; + } + + function parseMLComment(s) { + var start = pos; + + for (pos = pos + 2; pos < s.length; pos++) { + if (s.charAt(pos) === '*') { + if (s.charAt(pos + 1) === '/') { + pos++; + break; + } + } + } + + pushToken(TokenType.CommentML, s.substring(start, pos + 1)); + } + + function parseSLComment(s) { + var start = pos; + + for (pos = pos + 2; pos < s.length; pos++) { + if (s.charAt(pos) === '\n' || s.charAt(pos) === '\r') { + pos++; + break; + } + } + + pushToken(TokenType.CommentSL, s.substring(start, pos)); + pos--; + } + + function parseString(s, q) { + var start = pos; + + for (pos = pos + 1; pos < s.length; pos++) { + if (s.charAt(pos) === '\\') pos++; + else if (s.charAt(pos) === q) break; + } + + pushToken(q === '"' ? TokenType.StringDQ : TokenType.StringSQ, s.substring(start, pos + 1)); + } + + function parseDecimalNumber(s) { + var start = pos; + + for (; pos < s.length; pos++) { + if (!isDecimalDigit(s.charAt(pos))) break; + } + + pushToken(TokenType.DecimalNumber, s.substring(start, pos)); + pos--; + } + + function parseIdentifier(s) { + var start = pos; + + while (s.charAt(pos) === '/') pos++; + + for (; pos < s.length; pos++) { + if (s.charAt(pos) === '\\') pos++; + else if (s.charAt(pos) in Punctuation) break; + } + + var ident = s.substring(start, pos); + + urlMode = urlMode || ident === 'url'; + + pushToken(TokenType.Identifier, ident); + pos--; + } + + // ==================================== + // second run + // ==================================== + + function mark() { + var ps = [], // Parenthesis + sbs = [], // SquareBracket + cbs = [], // CurlyBracket + t; + + for (var i = 0; i < tokens.length; i++) { + t = tokens[i]; + switch(t.type) { + case TokenType.LeftParenthesis: + ps.push(i); + break; + case TokenType.RightParenthesis: + if (ps.length) { + t.left = ps.pop(); + tokens[t.left].right = i; + } + break; + case TokenType.LeftSquareBracket: + sbs.push(i); + break; + case TokenType.RightSquareBracket: + if (sbs.length) { + t.left = sbs.pop(); + tokens[t.left].right = i; + } + break; + case TokenType.LeftCurlyBracket: + cbs.push(i); + break; + case TokenType.RightCurlyBracket: + if (cbs.length) { + t.left = cbs.pop(); + tokens[t.left].right = i; + } + break; + } + } + } + + return function(s) { + return _getTokens(s); + }; + +}()); diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atkeyword/atkeyword.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atkeyword/atkeyword.0.css new file mode 100644 index 0000000..c95db4b --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atkeyword/atkeyword.0.css @@ -0,0 +1 @@ +@import diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atkeyword/atkeyword.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atkeyword/atkeyword.0.l new file mode 100644 index 0000000..c95db4b --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atkeyword/atkeyword.0.l @@ -0,0 +1 @@ +@import diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atkeyword/atkeyword.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atkeyword/atkeyword.0.p new file mode 100644 index 0000000..54305d6 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atkeyword/atkeyword.0.p @@ -0,0 +1,2 @@ +['atkeyword', + ['ident', 'import']] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atkeyword/atkeyword.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atkeyword/atkeyword.1.css new file mode 100644 index 0000000..b7efc09 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atkeyword/atkeyword.1.css @@ -0,0 +1 @@ +@font-face diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atkeyword/atkeyword.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atkeyword/atkeyword.1.l new file mode 100644 index 0000000..b7efc09 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atkeyword/atkeyword.1.l @@ -0,0 +1 @@ +@font-face diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atkeyword/atkeyword.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atkeyword/atkeyword.1.p new file mode 100644 index 0000000..9f25b94 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atkeyword/atkeyword.1.p @@ -0,0 +1,2 @@ +['atkeyword', + ['ident', 'font-face']] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.0.css new file mode 100644 index 0000000..30c064f --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.0.css @@ -0,0 +1 @@ +@test{p:v} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.0.l new file mode 100644 index 0000000..30c064f --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.0.l @@ -0,0 +1 @@ +@test{p:v} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.0.p new file mode 100644 index 0000000..52a14f6 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.0.p @@ -0,0 +1,9 @@ +['atruleb', + ['atkeyword', + ['ident', 'test']], + ['block', + ['declaration', + ['property', + ['ident', 'p']], + ['value', + ['ident', 'v']]]]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.1.css new file mode 100644 index 0000000..8603a7b --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.1.css @@ -0,0 +1 @@ +@test x y {p:v} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.1.l new file mode 100644 index 0000000..8603a7b --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.1.l @@ -0,0 +1 @@ +@test x y {p:v} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.1.p new file mode 100644 index 0000000..cd1c7a9 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.1.p @@ -0,0 +1,14 @@ +['atruleb', + ['atkeyword', + ['ident', 'test']], + ['s', ' '], + ['ident', 'x'], + ['s', ' '], + ['ident', 'y'], + ['s', ' '], + ['block', + ['declaration', + ['property', + ['ident', 'p']], + ['value', + ['ident', 'v']]]]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.2.css new file mode 100644 index 0000000..f599371 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.2.css @@ -0,0 +1 @@ +@test x, y x(1+2) {p:v} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.2.l new file mode 100644 index 0000000..f599371 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.2.l @@ -0,0 +1 @@ +@test x, y x(1+2) {p:v} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.2.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.2.p new file mode 100644 index 0000000..c51f7fb --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.2.p @@ -0,0 +1,22 @@ +['atruleb', + ['atkeyword', + ['ident', 'test']], + ['s', ' '], + ['ident', 'x'], + ['operator', ','], + ['s', ' '], + ['ident', 'y'], + ['s', ' '], + ['funktion', + ['ident', 'x'], + ['functionBody', + ['number', '1'], + ['unary', '+'], + ['number', '2']]], + ['s', ' '], + ['block', + ['declaration', + ['property', + ['ident', 'p']], + ['value', + ['ident', 'v']]]]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.c.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.c.0.css new file mode 100644 index 0000000..1fa9cd3 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.c.0.css @@ -0,0 +1 @@ +@test/*test*/{/*test*/p/*test*/:/*test*/v/*test*/} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.c.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.c.0.l new file mode 100644 index 0000000..1fa9cd3 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.c.0.l @@ -0,0 +1 @@ +@test/*test*/{/*test*/p/*test*/:/*test*/v/*test*/} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.c.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.c.0.p new file mode 100644 index 0000000..dfa0ea5 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.c.0.p @@ -0,0 +1,14 @@ +['atruleb', + ['atkeyword', + ['ident', 'test']], + ['comment', 'test'], + ['block', + ['comment', 'test'], + ['declaration', + ['property', + ['ident', 'p'], + ['comment', 'test']], + ['value', + ['comment', 'test'], + ['ident', 'v'], + ['comment', 'test']]]]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.c.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.c.1.css new file mode 100644 index 0000000..e24f2ec --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.c.1.css @@ -0,0 +1 @@ +@test/*test*/x/*test*/y/*test*/{/*test*/p/*test*/:/*test*/v/*test*/} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.c.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.c.1.l new file mode 100644 index 0000000..e24f2ec --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.c.1.l @@ -0,0 +1 @@ +@test/*test*/x/*test*/y/*test*/{/*test*/p/*test*/:/*test*/v/*test*/} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.c.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.c.1.p new file mode 100644 index 0000000..faf2033 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.c.1.p @@ -0,0 +1,18 @@ +['atruleb', + ['atkeyword', + ['ident', 'test']], + ['comment', 'test'], + ['ident', 'x'], + ['comment', 'test'], + ['ident', 'y'], + ['comment', 'test'], + ['block', + ['comment', 'test'], + ['declaration', + ['property', + ['ident', 'p'], + ['comment', 'test']], + ['value', + ['comment', 'test'], + ['ident', 'v'], + ['comment', 'test']]]]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.c.2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.c.2.css new file mode 100644 index 0000000..2442e21 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.c.2.css @@ -0,0 +1 @@ +@test/*test*/x/*test*/,/*test*/y/*test*/x(/*test*/1/*test*/+/*test*/2/*test*/)/*test*/{/*test*/p/*test*/:/*test*/v/*test*/} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.c.2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.c.2.l new file mode 100644 index 0000000..2442e21 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.c.2.l @@ -0,0 +1 @@ +@test/*test*/x/*test*/,/*test*/y/*test*/x(/*test*/1/*test*/+/*test*/2/*test*/)/*test*/{/*test*/p/*test*/:/*test*/v/*test*/} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.c.2.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.c.2.p new file mode 100644 index 0000000..0844978 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.c.2.p @@ -0,0 +1,31 @@ +['atruleb', + ['atkeyword', + ['ident', 'test']], + ['comment', 'test'], + ['ident', 'x'], + ['comment', 'test'], + ['operator', ','], + ['comment', 'test'], + ['ident', 'y'], + ['comment', 'test'], + ['funktion', + ['ident', 'x'], + ['functionBody', + ['comment', 'test'], + ['number', '1'], + ['comment', 'test'], + ['unary', '+'], + ['comment', 'test'], + ['number', '2'], + ['comment', 'test']]], + ['comment', 'test'], + ['block', + ['comment', 'test'], + ['declaration', + ['property', + ['ident', 'p'], + ['comment', 'test']], + ['value', + ['comment', 'test'], + ['ident', 'v'], + ['comment', 'test']]]]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.s.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.s.0.css new file mode 100644 index 0000000..e49bdac --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.s.0.css @@ -0,0 +1 @@ +@test { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.s.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.s.0.l new file mode 100644 index 0000000..e49bdac --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.s.0.l @@ -0,0 +1 @@ +@test { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.s.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.s.0.p new file mode 100644 index 0000000..1ecad92 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.s.0.p @@ -0,0 +1,14 @@ +['atruleb', + ['atkeyword', + ['ident', 'test']], + ['s', ' '], + ['block', + ['s', ' '], + ['declaration', + ['property', + ['ident', 'p'], + ['s', ' ']], + ['value', + ['s', ' '], + ['ident', 'v'], + ['s', ' ']]]]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.s.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.s.1.css new file mode 100644 index 0000000..50b22fd --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.s.1.css @@ -0,0 +1 @@ +@test x y { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.s.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.s.1.l new file mode 100644 index 0000000..50b22fd --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.s.1.l @@ -0,0 +1 @@ +@test x y { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.s.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.s.1.p new file mode 100644 index 0000000..c2ff06b --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.s.1.p @@ -0,0 +1,18 @@ +['atruleb', + ['atkeyword', + ['ident', 'test']], + ['s', ' '], + ['ident', 'x'], + ['s', ' '], + ['ident', 'y'], + ['s', ' '], + ['block', + ['s', ' '], + ['declaration', + ['property', + ['ident', 'p'], + ['s', ' ']], + ['value', + ['s', ' '], + ['ident', 'v'], + ['s', ' ']]]]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.s.2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.s.2.css new file mode 100644 index 0000000..3274e89 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.s.2.css @@ -0,0 +1 @@ +@test x , y x( 1 + 2 ) { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.s.2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.s.2.l new file mode 100644 index 0000000..3274e89 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.s.2.l @@ -0,0 +1 @@ +@test x , y x( 1 + 2 ) { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.s.2.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.s.2.p new file mode 100644 index 0000000..1301100 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruleb/atruleb.s.2.p @@ -0,0 +1,31 @@ +['atruleb', + ['atkeyword', + ['ident', 'test']], + ['s', ' '], + ['ident', 'x'], + ['s', ' '], + ['operator', ','], + ['s', ' '], + ['ident', 'y'], + ['s', ' '], + ['funktion', + ['ident', 'x'], + ['functionBody', + ['s', ' '], + ['number', '1'], + ['s', ' '], + ['unary', '+'], + ['s', ' '], + ['number', '2'], + ['s', ' ']]], + ['s', ' '], + ['block', + ['s', ' '], + ['declaration', + ['property', + ['ident', 'p'], + ['s', ' ']], + ['value', + ['s', ' '], + ['ident', 'v'], + ['s', ' ']]]]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.0.css new file mode 100644 index 0000000..dc86176 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.0.css @@ -0,0 +1 @@ +@media {s{p:v}} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.0.l new file mode 100644 index 0000000..dc86176 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.0.l @@ -0,0 +1 @@ +@media {s{p:v}} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.0.p new file mode 100644 index 0000000..96c8b45 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.0.p @@ -0,0 +1,16 @@ +['atruler', + ['atkeyword', + ['ident', 'media']], + ['atrulerq', + ['s', ' ']], + ['atrulers', + ['ruleset', + ['selector', + ['simpleselector', + ['ident', 's']]], + ['block', + ['declaration', + ['property', + ['ident', 'p']], + ['value', + ['ident', 'v']]]]]]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.1.css new file mode 100644 index 0000000..dbd796f --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.1.css @@ -0,0 +1 @@ +@media x y {s{p:v}} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.1.l new file mode 100644 index 0000000..dbd796f --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.1.l @@ -0,0 +1 @@ +@media x y {s{p:v}} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.1.p new file mode 100644 index 0000000..fe9fa15 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.1.p @@ -0,0 +1,20 @@ +['atruler', + ['atkeyword', + ['ident', 'media']], + ['atrulerq', + ['s', ' '], + ['ident', 'x'], + ['s', ' '], + ['ident', 'y'], + ['s', ' ']], + ['atrulers', + ['ruleset', + ['selector', + ['simpleselector', + ['ident', 's']]], + ['block', + ['declaration', + ['property', + ['ident', 'p']], + ['value', + ['ident', 'v']]]]]]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.2.css new file mode 100644 index 0000000..39ff6c9 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.2.css @@ -0,0 +1 @@ +@media x, y f(1+2) {s{p:v}} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.2.l new file mode 100644 index 0000000..39ff6c9 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.2.l @@ -0,0 +1 @@ +@media x, y f(1+2) {s{p:v}} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.2.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.2.p new file mode 100644 index 0000000..9544ee9 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.2.p @@ -0,0 +1,28 @@ +['atruler', + ['atkeyword', + ['ident', 'media']], + ['atrulerq', + ['s', ' '], + ['ident', 'x'], + ['operator', ','], + ['s', ' '], + ['ident', 'y'], + ['s', ' '], + ['funktion', + ['ident', 'f'], + ['functionBody', + ['number', '1'], + ['unary', '+'], + ['number', '2']]], + ['s', ' ']], + ['atrulers', + ['ruleset', + ['selector', + ['simpleselector', + ['ident', 's']]], + ['block', + ['declaration', + ['property', + ['ident', 'p']], + ['value', + ['ident', 'v']]]]]]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.c.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.c.0.css new file mode 100644 index 0000000..146f87a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.c.0.css @@ -0,0 +1 @@ +@media/*test*/{/*test*/s/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.c.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.c.0.l new file mode 100644 index 0000000..146f87a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.c.0.l @@ -0,0 +1 @@ +@media/*test*/{/*test*/s/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.c.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.c.0.p new file mode 100644 index 0000000..4741182 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.c.0.p @@ -0,0 +1,23 @@ +['atruler', + ['atkeyword', + ['ident', 'media']], + ['atrulerq', + ['comment', 'test']], + ['atrulers', + ['comment', 'test'], + ['ruleset', + ['selector', + ['simpleselector', + ['ident', 's'], + ['comment', 'test']]], + ['block', + ['comment', 'test'], + ['declaration', + ['property', + ['ident', 'p'], + ['comment', 'test']], + ['value', + ['comment', 'test'], + ['ident', 'v'], + ['comment', 'test']]]]], + ['comment', 'test']]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.c.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.c.1.css new file mode 100644 index 0000000..e964ba8 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.c.1.css @@ -0,0 +1 @@ +@media/*test*/x/*test*/y/*test*/{/*test*/s/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.c.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.c.1.l new file mode 100644 index 0000000..e964ba8 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.c.1.l @@ -0,0 +1 @@ +@media/*test*/x/*test*/y/*test*/{/*test*/s/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.c.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.c.1.p new file mode 100644 index 0000000..b6b7402 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.c.1.p @@ -0,0 +1,27 @@ +['atruler', + ['atkeyword', + ['ident', 'media']], + ['atrulerq', + ['comment', 'test'], + ['ident', 'x'], + ['comment', 'test'], + ['ident', 'y'], + ['comment', 'test']], + ['atrulers', + ['comment', 'test'], + ['ruleset', + ['selector', + ['simpleselector', + ['ident', 's'], + ['comment', 'test']]], + ['block', + ['comment', 'test'], + ['declaration', + ['property', + ['ident', 'p'], + ['comment', 'test']], + ['value', + ['comment', 'test'], + ['ident', 'v'], + ['comment', 'test']]]]], + ['comment', 'test']]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.c.2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.c.2.css new file mode 100644 index 0000000..8c4c2c7 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.c.2.css @@ -0,0 +1 @@ +@media/*test*/x/*test*/,/*test*/y/*test*/f(/*test*/1/*test*/+/*test*/2/*test*/)/*test*/{/*test*/s/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.c.2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.c.2.l new file mode 100644 index 0000000..8c4c2c7 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.c.2.l @@ -0,0 +1 @@ +@media/*test*/x/*test*/,/*test*/y/*test*/f(/*test*/1/*test*/+/*test*/2/*test*/)/*test*/{/*test*/s/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.c.2.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.c.2.p new file mode 100644 index 0000000..124be9a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.c.2.p @@ -0,0 +1,40 @@ +['atruler', + ['atkeyword', + ['ident', 'media']], + ['atrulerq', + ['comment', 'test'], + ['ident', 'x'], + ['comment', 'test'], + ['operator', ','], + ['comment', 'test'], + ['ident', 'y'], + ['comment', 'test'], + ['funktion', + ['ident', 'f'], + ['functionBody', + ['comment', 'test'], + ['number', '1'], + ['comment', 'test'], + ['unary', '+'], + ['comment', 'test'], + ['number', '2'], + ['comment', 'test']]], + ['comment', 'test']], + ['atrulers', + ['comment', 'test'], + ['ruleset', + ['selector', + ['simpleselector', + ['ident', 's'], + ['comment', 'test']]], + ['block', + ['comment', 'test'], + ['declaration', + ['property', + ['ident', 'p'], + ['comment', 'test']], + ['value', + ['comment', 'test'], + ['ident', 'v'], + ['comment', 'test']]]]], + ['comment', 'test']]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.s.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.s.0.css new file mode 100644 index 0000000..e32a52f --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.s.0.css @@ -0,0 +1 @@ +@media { s { p : v } } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.s.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.s.0.l new file mode 100644 index 0000000..e32a52f --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.s.0.l @@ -0,0 +1 @@ +@media { s { p : v } } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.s.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.s.0.p new file mode 100644 index 0000000..421952a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.s.0.p @@ -0,0 +1,23 @@ +['atruler', + ['atkeyword', + ['ident', 'media']], + ['atrulerq', + ['s', ' ']], + ['atrulers', + ['s', ' '], + ['ruleset', + ['selector', + ['simpleselector', + ['ident', 's'], + ['s', ' ']]], + ['block', + ['s', ' '], + ['declaration', + ['property', + ['ident', 'p'], + ['s', ' ']], + ['value', + ['s', ' '], + ['ident', 'v'], + ['s', ' ']]]]], + ['s', ' ']]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.s.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.s.1.css new file mode 100644 index 0000000..8158669 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.s.1.css @@ -0,0 +1 @@ +@media x y { s { p : v } } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.s.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.s.1.l new file mode 100644 index 0000000..8158669 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.s.1.l @@ -0,0 +1 @@ +@media x y { s { p : v } } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.s.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.s.1.p new file mode 100644 index 0000000..f39fb51 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.s.1.p @@ -0,0 +1,27 @@ +['atruler', + ['atkeyword', + ['ident', 'media']], + ['atrulerq', + ['s', ' '], + ['ident', 'x'], + ['s', ' '], + ['ident', 'y'], + ['s', ' ']], + ['atrulers', + ['s', ' '], + ['ruleset', + ['selector', + ['simpleselector', + ['ident', 's'], + ['s', ' ']]], + ['block', + ['s', ' '], + ['declaration', + ['property', + ['ident', 'p'], + ['s', ' ']], + ['value', + ['s', ' '], + ['ident', 'v'], + ['s', ' ']]]]], + ['s', ' ']]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.s.2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.s.2.css new file mode 100644 index 0000000..1f4fa15 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.s.2.css @@ -0,0 +1 @@ +@media x , y f( 1 + 2 ) { s { p : v } } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.s.2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.s.2.l new file mode 100644 index 0000000..1f4fa15 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.s.2.l @@ -0,0 +1 @@ +@media x , y f( 1 + 2 ) { s { p : v } } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.s.2.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.s.2.p new file mode 100644 index 0000000..7395625 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/atruler.s.2.p @@ -0,0 +1,40 @@ +['atruler', + ['atkeyword', + ['ident', 'media']], + ['atrulerq', + ['s', ' '], + ['ident', 'x'], + ['s', ' '], + ['operator', ','], + ['s', ' '], + ['ident', 'y'], + ['s', ' '], + ['funktion', + ['ident', 'f'], + ['functionBody', + ['s', ' '], + ['number', '1'], + ['s', ' '], + ['unary', '+'], + ['s', ' '], + ['number', '2'], + ['s', ' ']]], + ['s', ' ']], + ['atrulers', + ['s', ' '], + ['ruleset', + ['selector', + ['simpleselector', + ['ident', 's'], + ['s', ' ']]], + ['block', + ['s', ' '], + ['declaration', + ['property', + ['ident', 'p'], + ['s', ' ']], + ['value', + ['s', ' '], + ['ident', 'v'], + ['s', ' ']]]]], + ['s', ' ']]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/webkit.keyfraymes.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/webkit.keyfraymes.0.css new file mode 100644 index 0000000..f65aaa2 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/webkit.keyfraymes.0.css @@ -0,0 +1 @@ +@-webkit-keyframes pulsate {0% {opacity: .5}50% {opacity: 1}100% {opacity: .5}} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/webkit.keyfraymes.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/webkit.keyfraymes.0.l new file mode 100644 index 0000000..f65aaa2 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/webkit.keyfraymes.0.l @@ -0,0 +1 @@ +@-webkit-keyframes pulsate {0% {opacity: .5}50% {opacity: 1}100% {opacity: .5}} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/webkit.keyfraymes.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/webkit.keyfraymes.0.p new file mode 100644 index 0000000..3975dae --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atruler/webkit.keyfraymes.0.p @@ -0,0 +1,47 @@ +['atruler', + ['atkeyword', + ['ident', '-webkit-keyframes']], + ['atrulerq', + ['s', ' '], + ['ident', 'pulsate'], + ['s', ' ']], + ['atrulers', + ['ruleset', + ['selector', + ['simpleselector', + ['percentage', + ['number', '0']], + ['s', ' ']]], + ['block', + ['declaration', + ['property', + ['ident', 'opacity']], + ['value', + ['s', ' '], + ['number', '.5']]]]], + ['ruleset', + ['selector', + ['simpleselector', + ['percentage', + ['number', '50']], + ['s', ' ']]], + ['block', + ['declaration', + ['property', + ['ident', 'opacity']], + ['value', + ['s', ' '], + ['number', '1']]]]], + ['ruleset', + ['selector', + ['simpleselector', + ['percentage', + ['number', '100']], + ['s', ' ']]], + ['block', + ['declaration', + ['property', + ['ident', 'opacity']], + ['value', + ['s', ' '], + ['number', '.5']]]]]]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.0.css new file mode 100644 index 0000000..9275826 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.0.css @@ -0,0 +1 @@ +@test; diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.0.l new file mode 100644 index 0000000..9275826 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.0.l @@ -0,0 +1 @@ +@test; diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.0.p new file mode 100644 index 0000000..b65cc2b --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.0.p @@ -0,0 +1,3 @@ +['atrules', + ['atkeyword', + ['ident', 'test']]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.1.css new file mode 100644 index 0000000..b1318c9 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.1.css @@ -0,0 +1 @@ +@test x y; diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.1.l new file mode 100644 index 0000000..b1318c9 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.1.l @@ -0,0 +1 @@ +@test x y; diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.1.p new file mode 100644 index 0000000..bc65684 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.1.p @@ -0,0 +1,7 @@ +['atrules', + ['atkeyword', + ['ident', 'test']], + ['s', ' '], + ['ident', 'x'], + ['s', ' '], + ['ident', 'y']] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.2.css new file mode 100644 index 0000000..687efa6 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.2.css @@ -0,0 +1 @@ +@test "blah"; diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.2.l new file mode 100644 index 0000000..687efa6 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.2.l @@ -0,0 +1 @@ +@test "blah"; diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.2.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.2.p new file mode 100644 index 0000000..cdc14de --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.2.p @@ -0,0 +1,5 @@ +['atrules', + ['atkeyword', + ['ident', 'test']], + ['s', ' '], + ['string', '"blah"']] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.c.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.c.0.css new file mode 100644 index 0000000..0b7a664 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.c.0.css @@ -0,0 +1 @@ +@test/*test*/; diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.c.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.c.0.l new file mode 100644 index 0000000..0b7a664 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.c.0.l @@ -0,0 +1 @@ +@test/*test*/; diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.c.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.c.0.p new file mode 100644 index 0000000..ede049c --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.c.0.p @@ -0,0 +1,4 @@ +['atrules', + ['atkeyword', + ['ident', 'test']], + ['comment', 'test']] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.c.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.c.1.css new file mode 100644 index 0000000..646e210 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.c.1.css @@ -0,0 +1 @@ +@test/*test*/x/*test*/y; diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.c.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.c.1.l new file mode 100644 index 0000000..646e210 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.c.1.l @@ -0,0 +1 @@ +@test/*test*/x/*test*/y; diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.c.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.c.1.p new file mode 100644 index 0000000..0ec2d8b --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.c.1.p @@ -0,0 +1,7 @@ +['atrules', + ['atkeyword', + ['ident', 'test']], + ['comment', 'test'], + ['ident', 'x'], + ['comment', 'test'], + ['ident', 'y']] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.s.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.s.0.css new file mode 100644 index 0000000..61bc638 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.s.0.css @@ -0,0 +1 @@ +@test ; diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.s.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.s.0.l new file mode 100644 index 0000000..61bc638 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.s.0.l @@ -0,0 +1 @@ +@test ; diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.s.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.s.0.p new file mode 100644 index 0000000..ceb0299 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.s.0.p @@ -0,0 +1,4 @@ +['atrules', + ['atkeyword', + ['ident', 'test']], + ['s', ' ']] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.s.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.s.1.css new file mode 100644 index 0000000..c0c94ae --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.s.1.css @@ -0,0 +1 @@ +@test x y; diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.s.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.s.1.l new file mode 100644 index 0000000..c0c94ae --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.s.1.l @@ -0,0 +1 @@ +@test x y; diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.s.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.s.1.p new file mode 100644 index 0000000..842d418 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_atrules/atrules.s.1.p @@ -0,0 +1,7 @@ +['atrules', + ['atkeyword', + ['ident', 'test']], + ['s', ' '], + ['ident', 'x'], + ['s', ' '], + ['ident', 'y']] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.0.css new file mode 100644 index 0000000..1397137 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.0.css @@ -0,0 +1 @@ +[a=b] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.0.l new file mode 100644 index 0000000..1397137 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.0.l @@ -0,0 +1 @@ +[a=b] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.0.p new file mode 100644 index 0000000..08c1b59 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.0.p @@ -0,0 +1,4 @@ +['attrib', + ['ident', 'a'], + ['attrselector', '='], + ['ident', 'b']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.1.css new file mode 100644 index 0000000..a2df88a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.1.css @@ -0,0 +1 @@ +[a='b'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.1.l new file mode 100644 index 0000000..a2df88a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.1.l @@ -0,0 +1 @@ +[a='b'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.1.p new file mode 100644 index 0000000..ec87340 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.1.p @@ -0,0 +1,4 @@ +['attrib', + ['ident', 'a'], + ['attrselector', '='], + ['string', ''b'']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.2.css new file mode 100644 index 0000000..34cc5f9 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.2.css @@ -0,0 +1 @@ +[b] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.2.l new file mode 100644 index 0000000..34cc5f9 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.2.l @@ -0,0 +1 @@ +[b] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.c.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.c.0.css new file mode 100644 index 0000000..1c7b48d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.c.0.css @@ -0,0 +1 @@ +[/*test*/a/*test*/=/*test*/b/*test*/] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.c.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.c.0.l new file mode 100644 index 0000000..1c7b48d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.c.0.l @@ -0,0 +1 @@ +[/*test*/a/*test*/=/*test*/b/*test*/] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.c.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.c.0.p new file mode 100644 index 0000000..c190abf --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.c.0.p @@ -0,0 +1,8 @@ +['attrib', + ['comment', 'test'], + ['ident', 'a'], + ['comment', 'test'], + ['attrselector', '='], + ['comment', 'test'], + ['ident', 'b'], + ['comment', 'test']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.c.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.c.1.css new file mode 100644 index 0000000..429de74 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.c.1.css @@ -0,0 +1 @@ +[/*test*/a/*test*/=/*test*/'b'/*test*/] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.c.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.c.1.l new file mode 100644 index 0000000..429de74 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.c.1.l @@ -0,0 +1 @@ +[/*test*/a/*test*/=/*test*/'b'/*test*/] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.c.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.c.1.p new file mode 100644 index 0000000..3dba54d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.c.1.p @@ -0,0 +1,8 @@ +['attrib', + ['comment', 'test'], + ['ident', 'a'], + ['comment', 'test'], + ['attrselector', '='], + ['comment', 'test'], + ['string', ''b''], + ['comment', 'test']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.s.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.s.0.css new file mode 100644 index 0000000..1257971 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.s.0.css @@ -0,0 +1 @@ +[ a = b ] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.s.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.s.0.l new file mode 100644 index 0000000..1257971 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.s.0.l @@ -0,0 +1 @@ +[ a = b ] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.s.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.s.0.p new file mode 100644 index 0000000..a569277 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.s.0.p @@ -0,0 +1,8 @@ +['attrib', + ['s', ' '], + ['ident', 'a'], + ['s', ' '], + ['attrselector', '='], + ['s', ' '], + ['ident', 'b'], + ['s', ' ']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.s.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.s.1.css new file mode 100644 index 0000000..72ef4a0 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.s.1.css @@ -0,0 +1 @@ +[ a = 'b' ] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.s.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.s.1.l new file mode 100644 index 0000000..72ef4a0 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.s.1.l @@ -0,0 +1 @@ +[ a = 'b' ] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.s.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.s.1.p new file mode 100644 index 0000000..58eee6d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrib/attrib.s.1.p @@ -0,0 +1,8 @@ +['attrib', + ['s', ' '], + ['ident', 'a'], + ['s', ' '], + ['attrselector', '='], + ['s', ' '], + ['string', ''b''], + ['s', ' ']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.0.css new file mode 100644 index 0000000..3134d36 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.0.css @@ -0,0 +1 @@ += diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.0.l new file mode 100644 index 0000000..3134d36 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.0.l @@ -0,0 +1 @@ += diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.0.p new file mode 100644 index 0000000..7ea72fe --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.0.p @@ -0,0 +1 @@ +['attrselector', '='] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.1.css new file mode 100644 index 0000000..37d6aa3 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.1.css @@ -0,0 +1 @@ +~= diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.1.l new file mode 100644 index 0000000..37d6aa3 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.1.l @@ -0,0 +1 @@ +~= diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.1.p new file mode 100644 index 0000000..2adb403 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.1.p @@ -0,0 +1 @@ +['attrselector', '~='] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.2.css new file mode 100644 index 0000000..826d985 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.2.css @@ -0,0 +1 @@ +^= diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.2.l new file mode 100644 index 0000000..826d985 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.2.l @@ -0,0 +1 @@ +^= diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.2.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.2.p new file mode 100644 index 0000000..86c8713 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.2.p @@ -0,0 +1 @@ +['attrselector', '^='] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.3.css new file mode 100644 index 0000000..3a69fed --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.3.css @@ -0,0 +1 @@ +$= diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.3.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.3.l new file mode 100644 index 0000000..3a69fed --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.3.l @@ -0,0 +1 @@ +$= diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.3.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.3.p new file mode 100644 index 0000000..e340a1c --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.3.p @@ -0,0 +1 @@ +['attrselector', '$='] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.4.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.4.css new file mode 100644 index 0000000..f07c4bf --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.4.css @@ -0,0 +1 @@ +*= diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.4.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.4.l new file mode 100644 index 0000000..f07c4bf --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.4.l @@ -0,0 +1 @@ +*= diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.4.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.4.p new file mode 100644 index 0000000..5c110b0 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.4.p @@ -0,0 +1 @@ +['attrselector', '*='] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.5.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.5.css new file mode 100644 index 0000000..948cf94 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.5.css @@ -0,0 +1 @@ +| diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.5.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.5.l new file mode 100644 index 0000000..948cf94 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.5.l @@ -0,0 +1 @@ +| diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.5.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.5.p new file mode 100644 index 0000000..41762f1 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_attrselector/attrselector.5.p @@ -0,0 +1 @@ +['attrselector', '|'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.0.css new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.0.css @@ -0,0 +1 @@ +{} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.0.l new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.0.l @@ -0,0 +1 @@ +{} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.0.p new file mode 100644 index 0000000..dc51e20 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.0.p @@ -0,0 +1 @@ +['block'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.1.css new file mode 100644 index 0000000..11248ee --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.1.css @@ -0,0 +1 @@ +{;} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.1.l new file mode 100644 index 0000000..11248ee --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.1.l @@ -0,0 +1 @@ +{;} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.1.p new file mode 100644 index 0000000..d14efbb --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.1.p @@ -0,0 +1,2 @@ +['block', + ['decldelim']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.2.css new file mode 100644 index 0000000..1044581 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.2.css @@ -0,0 +1 @@ +{p:v} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.2.l new file mode 100644 index 0000000..1044581 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.2.l @@ -0,0 +1 @@ +{p:v} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.2.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.2.p new file mode 100644 index 0000000..a7bc013 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.2.p @@ -0,0 +1,6 @@ +['block', + ['declaration', + ['property', + ['ident', 'p']], + ['value', + ['ident', 'v']]]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.3.css new file mode 100644 index 0000000..2aed575 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.3.css @@ -0,0 +1 @@ +{p:v;} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.3.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.3.l new file mode 100644 index 0000000..2aed575 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.3.l @@ -0,0 +1 @@ +{p:v;} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.3.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.3.p new file mode 100644 index 0000000..af9e923 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.3.p @@ -0,0 +1,7 @@ +['block', + ['declaration', + ['property', + ['ident', 'p']], + ['value', + ['ident', 'v']]], + ['decldelim']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.4.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.4.css new file mode 100644 index 0000000..f451b9e --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.4.css @@ -0,0 +1 @@ +{p0:v0;p1:v1} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.4.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.4.l new file mode 100644 index 0000000..f451b9e --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.4.l @@ -0,0 +1 @@ +{p0:v0;p1:v1} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.4.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.4.p new file mode 100644 index 0000000..de99bdf --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.4.p @@ -0,0 +1,12 @@ +['block', + ['declaration', + ['property', + ['ident', 'p0']], + ['value', + ['ident', 'v0']]], + ['decldelim'], + ['declaration', + ['property', + ['ident', 'p1']], + ['value', + ['ident', 'v1']]]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.0.css new file mode 100644 index 0000000..0e63315 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.0.css @@ -0,0 +1 @@ +{/*test*/} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.0.l new file mode 100644 index 0000000..0e63315 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.0.l @@ -0,0 +1 @@ +{/*test*/} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.0.p new file mode 100644 index 0000000..3b2452e --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.0.p @@ -0,0 +1,2 @@ +['block', + ['comment', 'test']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.1.css new file mode 100644 index 0000000..e235a6d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.1.css @@ -0,0 +1 @@ +{/*test*/;/*test*/} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.1.l new file mode 100644 index 0000000..e235a6d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.1.l @@ -0,0 +1 @@ +{/*test*/;/*test*/} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.1.p new file mode 100644 index 0000000..8c4b123 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.1.p @@ -0,0 +1,4 @@ +['block', + ['comment', 'test'], + ['decldelim'], + ['comment', 'test']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.2.css new file mode 100644 index 0000000..c084d6d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.2.css @@ -0,0 +1 @@ +{/*test*/p:v/*test*/} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.2.l new file mode 100644 index 0000000..c084d6d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.2.l @@ -0,0 +1 @@ +{/*test*/p:v/*test*/} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.2.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.2.p new file mode 100644 index 0000000..61d5a7e --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.2.p @@ -0,0 +1,8 @@ +['block', + ['comment', 'test'], + ['declaration', + ['property', + ['ident', 'p']], + ['value', + ['ident', 'v'], + ['comment', 'test']]]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.3.css new file mode 100644 index 0000000..a6b0e03 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.3.css @@ -0,0 +1 @@ +{/*test*/p:v/*test*/;/*test*/} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.3.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.3.l new file mode 100644 index 0000000..a6b0e03 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.3.l @@ -0,0 +1 @@ +{/*test*/p:v/*test*/;/*test*/} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.3.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.3.p new file mode 100644 index 0000000..b58fc24 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.3.p @@ -0,0 +1,10 @@ +['block', + ['comment', 'test'], + ['declaration', + ['property', + ['ident', 'p']], + ['value', + ['ident', 'v'], + ['comment', 'test']]], + ['decldelim'], + ['comment', 'test']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.4.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.4.css new file mode 100644 index 0000000..ff99298 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.4.css @@ -0,0 +1 @@ +{/*test*/p0:v0/*test*/;/*test*/p1:v1/*test*/} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.4.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.4.l new file mode 100644 index 0000000..ff99298 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.4.l @@ -0,0 +1 @@ +{/*test*/p0:v0/*test*/;/*test*/p1:v1/*test*/} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.4.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.4.p new file mode 100644 index 0000000..c7fcf82 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.c.4.p @@ -0,0 +1,16 @@ +['block', + ['comment', 'test'], + ['declaration', + ['property', + ['ident', 'p0']], + ['value', + ['ident', 'v0'], + ['comment', 'test']]], + ['decldelim'], + ['comment', 'test'], + ['declaration', + ['property', + ['ident', 'p1']], + ['value', + ['ident', 'v1'], + ['comment', 'test']]]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.0.css new file mode 100644 index 0000000..6578fd5 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.0.css @@ -0,0 +1 @@ +{ } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.0.l new file mode 100644 index 0000000..6578fd5 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.0.l @@ -0,0 +1 @@ +{ } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.0.p new file mode 100644 index 0000000..39008fd --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.0.p @@ -0,0 +1,2 @@ +['block', + ['s', ' ']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.1.css new file mode 100644 index 0000000..8b51fa0 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.1.css @@ -0,0 +1 @@ +{ ; } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.1.l new file mode 100644 index 0000000..8b51fa0 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.1.l @@ -0,0 +1 @@ +{ ; } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.1.p new file mode 100644 index 0000000..cd97573 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.1.p @@ -0,0 +1,4 @@ +['block', + ['s', ' '], + ['decldelim'], + ['s', ' ']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.2.css new file mode 100644 index 0000000..ba67ff5 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.2.css @@ -0,0 +1 @@ +{ p:v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.2.l new file mode 100644 index 0000000..ba67ff5 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.2.l @@ -0,0 +1 @@ +{ p:v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.2.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.2.p new file mode 100644 index 0000000..9b08760 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.2.p @@ -0,0 +1,8 @@ +['block', + ['s', ' '], + ['declaration', + ['property', + ['ident', 'p']], + ['value', + ['ident', 'v'], + ['s', ' ']]]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.3.css new file mode 100644 index 0000000..2b07618 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.3.css @@ -0,0 +1 @@ +{ p:v ; } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.3.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.3.l new file mode 100644 index 0000000..2b07618 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.3.l @@ -0,0 +1 @@ +{ p:v ; } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.3.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.3.p new file mode 100644 index 0000000..e8a4baf --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.3.p @@ -0,0 +1,10 @@ +['block', + ['s', ' '], + ['declaration', + ['property', + ['ident', 'p']], + ['value', + ['ident', 'v'], + ['s', ' ']]], + ['decldelim'], + ['s', ' ']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.4.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.4.css new file mode 100644 index 0000000..59cbe5a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.4.css @@ -0,0 +1 @@ +{ p0:v0 ; p1:v1 } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.4.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.4.l new file mode 100644 index 0000000..59cbe5a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.4.l @@ -0,0 +1 @@ +{ p0:v0 ; p1:v1 } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.4.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.4.p new file mode 100644 index 0000000..9e06b65 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_block/block.s.4.p @@ -0,0 +1,16 @@ +['block', + ['s', ' '], + ['declaration', + ['property', + ['ident', 'p0']], + ['value', + ['ident', 'v0'], + ['s', ' ']]], + ['decldelim'], + ['s', ' '], + ['declaration', + ['property', + ['ident', 'p1']], + ['value', + ['ident', 'v1'], + ['s', ' ']]]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.0.css new file mode 100644 index 0000000..6a452c1 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.0.css @@ -0,0 +1 @@ +() diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.0.l new file mode 100644 index 0000000..6a452c1 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.0.l @@ -0,0 +1 @@ +() diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.0.p new file mode 100644 index 0000000..1efa494 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.0.p @@ -0,0 +1 @@ +['braces', '(', ')'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.1.css new file mode 100644 index 0000000..7c67b01 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.1.css @@ -0,0 +1 @@ +(1) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.1.l new file mode 100644 index 0000000..7c67b01 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.1.l @@ -0,0 +1 @@ +(1) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.1.p new file mode 100644 index 0000000..f64c69c --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.1.p @@ -0,0 +1,2 @@ +['braces', '(', ')', + ['number', '1']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.2.css new file mode 100644 index 0000000..532dcce --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.2.css @@ -0,0 +1 @@ +(x) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.2.l new file mode 100644 index 0000000..532dcce --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.2.l @@ -0,0 +1 @@ +(x) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.2.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.2.p new file mode 100644 index 0000000..5a8148a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.2.p @@ -0,0 +1,2 @@ +['braces', '(', ')', + ['ident', 'x']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.3.css new file mode 100644 index 0000000..0126f2a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.3.css @@ -0,0 +1 @@ +(x+1) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.3.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.3.l new file mode 100644 index 0000000..0126f2a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.3.l @@ -0,0 +1 @@ +(x+1) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.3.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.3.p new file mode 100644 index 0000000..45ae11d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.3.p @@ -0,0 +1,4 @@ +['braces', '(', ')', + ['ident', 'x'], + ['unary', '+'], + ['number', '1']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.4.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.4.css new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.4.css @@ -0,0 +1 @@ +[] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.4.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.4.l new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.4.l @@ -0,0 +1 @@ +[] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.4.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.4.p new file mode 100644 index 0000000..54a99a1 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.4.p @@ -0,0 +1 @@ +['braces', '[', ']'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.5.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.5.css new file mode 100644 index 0000000..7660873 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.5.css @@ -0,0 +1 @@ +[1] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.5.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.5.l new file mode 100644 index 0000000..7660873 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.5.l @@ -0,0 +1 @@ +[1] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.5.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.5.p new file mode 100644 index 0000000..c4148bb --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.5.p @@ -0,0 +1,2 @@ +['braces', '[', ']', + ['number', '1']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.6.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.6.css new file mode 100644 index 0000000..d37c991 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.6.css @@ -0,0 +1 @@ +[x] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.6.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.6.l new file mode 100644 index 0000000..d37c991 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.6.l @@ -0,0 +1 @@ +[x] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.6.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.6.p new file mode 100644 index 0000000..97ee343 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.6.p @@ -0,0 +1,2 @@ +['braces', '[', ']', + ['ident', 'x']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.7.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.7.css new file mode 100644 index 0000000..4dbabae --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.7.css @@ -0,0 +1 @@ +[x+1] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.7.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.7.l new file mode 100644 index 0000000..4dbabae --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.7.l @@ -0,0 +1 @@ +[x+1] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.7.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.7.p new file mode 100644 index 0000000..5b5b861 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.7.p @@ -0,0 +1,4 @@ +['braces', '[', ']', + ['ident', 'x'], + ['unary', '+'], + ['number', '1']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.8.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.8.css new file mode 100644 index 0000000..c1b2491 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.8.css @@ -0,0 +1 @@ +(test:0) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.8.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.8.l new file mode 100644 index 0000000..c1b2491 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.8.l @@ -0,0 +1 @@ +(test:0) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.8.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.8.p new file mode 100644 index 0000000..158c77c --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.8.p @@ -0,0 +1,4 @@ +['braces', '(', ')', + ['ident', 'test'], + ['operator', ':'], + ['number', '0']] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.0.css new file mode 100644 index 0000000..6b3d2bc --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.0.css @@ -0,0 +1 @@ +(/*test*/) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.0.l new file mode 100644 index 0000000..6b3d2bc --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.0.l @@ -0,0 +1 @@ +(/*test*/) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.0.p new file mode 100644 index 0000000..276862f --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.0.p @@ -0,0 +1,2 @@ +['braces', '(', ')', + ['comment', 'test']] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.1.css new file mode 100644 index 0000000..b4582b0 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.1.css @@ -0,0 +1 @@ +(/*test*/1/*test*/) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.1.l new file mode 100644 index 0000000..b4582b0 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.1.l @@ -0,0 +1 @@ +(/*test*/1/*test*/) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.1.p new file mode 100644 index 0000000..a665e61 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.1.p @@ -0,0 +1,4 @@ +['braces', '(', ')', + ['comment', 'test'], + ['number', '1'], + ['comment', 'test']] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.2.css new file mode 100644 index 0000000..84f72ae --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.2.css @@ -0,0 +1 @@ +(/*test*/x/*test*/) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.2.l new file mode 100644 index 0000000..84f72ae --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.2.l @@ -0,0 +1 @@ +(/*test*/x/*test*/) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.2.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.2.p new file mode 100644 index 0000000..8cde691 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.2.p @@ -0,0 +1,4 @@ +['braces', '(', ')', + ['comment', 'test'], + ['ident', 'x'], + ['comment', 'test']] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.3.css new file mode 100644 index 0000000..bb4902e --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.3.css @@ -0,0 +1 @@ +(/*test*/x/*test*/+/*test*/1/*test*/) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.3.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.3.l new file mode 100644 index 0000000..bb4902e --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.3.l @@ -0,0 +1 @@ +(/*test*/x/*test*/+/*test*/1/*test*/) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.3.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.3.p new file mode 100644 index 0000000..51fedfd --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.3.p @@ -0,0 +1,8 @@ +['braces', '(', ')', + ['comment', 'test'], + ['ident', 'x'], + ['comment', 'test'], + ['unary', '+'], + ['comment', 'test'], + ['number', '1'], + ['comment', 'test']] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.4.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.4.css new file mode 100644 index 0000000..bd14098 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.4.css @@ -0,0 +1 @@ +[/*test*/] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.4.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.4.l new file mode 100644 index 0000000..bd14098 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.4.l @@ -0,0 +1 @@ +[/*test*/] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.4.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.4.p new file mode 100644 index 0000000..510ef9e --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.4.p @@ -0,0 +1,2 @@ +['braces', '[', ']', + ['comment', 'test']] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.5.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.5.css new file mode 100644 index 0000000..e459b22 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.5.css @@ -0,0 +1 @@ +[/*test*/1/*test*/] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.5.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.5.l new file mode 100644 index 0000000..e459b22 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.5.l @@ -0,0 +1 @@ +[/*test*/1/*test*/] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.5.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.5.p new file mode 100644 index 0000000..f18d018 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.5.p @@ -0,0 +1,4 @@ +['braces', '[', ']', + ['comment', 'test'], + ['number', '1'], + ['comment', 'test']] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.6.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.6.css new file mode 100644 index 0000000..c8d3394 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.6.css @@ -0,0 +1 @@ +[/*test*/x/*test*/] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.6.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.6.l new file mode 100644 index 0000000..c8d3394 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.6.l @@ -0,0 +1 @@ +[/*test*/x/*test*/] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.6.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.6.p new file mode 100644 index 0000000..6296082 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.6.p @@ -0,0 +1,4 @@ +['braces', '[', ']', + ['comment', 'test'], + ['ident', 'x'], + ['comment', 'test']] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.7.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.7.css new file mode 100644 index 0000000..bbad3b6 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.7.css @@ -0,0 +1 @@ +[/*test*/x/*test*/+/*test*/1/*test*/] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.7.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.7.l new file mode 100644 index 0000000..bbad3b6 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.7.l @@ -0,0 +1 @@ +[/*test*/x/*test*/+/*test*/1/*test*/] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.7.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.7.p new file mode 100644 index 0000000..2ee49e3 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.c.7.p @@ -0,0 +1,8 @@ +['braces', '[', ']', + ['comment', 'test'], + ['ident', 'x'], + ['comment', 'test'], + ['unary', '+'], + ['comment', 'test'], + ['number', '1'], + ['comment', 'test']] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.0.css new file mode 100644 index 0000000..c02ef9d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.0.css @@ -0,0 +1 @@ +( ) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.0.l new file mode 100644 index 0000000..c02ef9d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.0.l @@ -0,0 +1 @@ +( ) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.0.p new file mode 100644 index 0000000..2365d6e --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.0.p @@ -0,0 +1,2 @@ +['braces', '(', ')', + ['s', ' ']] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.1.css new file mode 100644 index 0000000..d5d709f --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.1.css @@ -0,0 +1 @@ +( 1 ) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.1.l new file mode 100644 index 0000000..d5d709f --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.1.l @@ -0,0 +1 @@ +( 1 ) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.1.p new file mode 100644 index 0000000..b532aaa --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.1.p @@ -0,0 +1,4 @@ +['braces', '(', ')', + ['s', ' '], + ['number', '1'], + ['s', ' ']] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.2.css new file mode 100644 index 0000000..1f14f31 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.2.css @@ -0,0 +1 @@ +( x ) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.2.l new file mode 100644 index 0000000..1f14f31 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.2.l @@ -0,0 +1 @@ +( x ) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.2.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.2.p new file mode 100644 index 0000000..bedc039 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.2.p @@ -0,0 +1,4 @@ +['braces', '(', ')', + ['s', ' '], + ['ident', 'x'], + ['s', ' ']] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.3.css new file mode 100644 index 0000000..c8effeb --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.3.css @@ -0,0 +1 @@ +( x + 1 ) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.3.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.3.l new file mode 100644 index 0000000..c8effeb --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.3.l @@ -0,0 +1 @@ +( x + 1 ) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.3.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.3.p new file mode 100644 index 0000000..7c1c581 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.3.p @@ -0,0 +1,8 @@ +['braces', '(', ')', + ['s', ' '], + ['ident', 'x'], + ['s', ' '], + ['unary', '+'], + ['s', ' '], + ['number', '1'], + ['s', ' ']] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.4.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.4.css new file mode 100644 index 0000000..e3b97f5 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.4.css @@ -0,0 +1 @@ +[ ] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.4.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.4.l new file mode 100644 index 0000000..e3b97f5 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.4.l @@ -0,0 +1 @@ +[ ] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.4.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.4.p new file mode 100644 index 0000000..263fa10 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.4.p @@ -0,0 +1,2 @@ +['braces', '[', ']', + ['s', ' ']] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.5.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.5.css new file mode 100644 index 0000000..39f8e8a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.5.css @@ -0,0 +1 @@ +[ 1 ] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.5.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.5.l new file mode 100644 index 0000000..39f8e8a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.5.l @@ -0,0 +1 @@ +[ 1 ] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.5.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.5.p new file mode 100644 index 0000000..ee8e419 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.5.p @@ -0,0 +1,4 @@ +['braces', '[', ']', + ['s', ' '], + ['number', '1'], + ['s', ' ']] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.6.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.6.css new file mode 100644 index 0000000..5eae743 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.6.css @@ -0,0 +1 @@ +[ x ] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.6.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.6.l new file mode 100644 index 0000000..5eae743 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.6.l @@ -0,0 +1 @@ +[ x ] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.6.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.6.p new file mode 100644 index 0000000..b957238 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.6.p @@ -0,0 +1,4 @@ +['braces', '[', ']', + ['s', ' '], + ['ident', 'x'], + ['s', ' ']] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.7.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.7.css new file mode 100644 index 0000000..ac015c0 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.7.css @@ -0,0 +1 @@ +[ x + 1 ] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.7.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.7.l new file mode 100644 index 0000000..ac015c0 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.7.l @@ -0,0 +1 @@ +[ x + 1 ] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.7.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.7.p new file mode 100644 index 0000000..9c85cd6 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_braces/braces.s.7.p @@ -0,0 +1,8 @@ +['braces', '[', ']', + ['s', ' '], + ['ident', 'x'], + ['s', ' '], + ['unary', '+'], + ['s', ' '], + ['number', '1'], + ['s', ' ']] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_clazz/clazz.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_clazz/clazz.0.css new file mode 100644 index 0000000..8d110ff --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_clazz/clazz.0.css @@ -0,0 +1 @@ +.abc diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_clazz/clazz.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_clazz/clazz.0.l new file mode 100644 index 0000000..8d110ff --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_clazz/clazz.0.l @@ -0,0 +1 @@ +.abc diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_clazz/clazz.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_clazz/clazz.0.p new file mode 100644 index 0000000..20d03f1 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_clazz/clazz.0.p @@ -0,0 +1,2 @@ +['clazz', + ['ident', 'abc']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_combinator/combinator.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_combinator/combinator.0.css new file mode 100644 index 0000000..fd38861 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_combinator/combinator.0.css @@ -0,0 +1 @@ ++ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_combinator/combinator.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_combinator/combinator.0.l new file mode 100644 index 0000000..fd38861 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_combinator/combinator.0.l @@ -0,0 +1 @@ ++ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_combinator/combinator.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_combinator/combinator.0.p new file mode 100644 index 0000000..ead16a8 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_combinator/combinator.0.p @@ -0,0 +1 @@ +['combinator', '+'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_combinator/combinator.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_combinator/combinator.1.css new file mode 100644 index 0000000..d9e80f6 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_combinator/combinator.1.css @@ -0,0 +1 @@ +> diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_combinator/combinator.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_combinator/combinator.1.l new file mode 100644 index 0000000..d9e80f6 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_combinator/combinator.1.l @@ -0,0 +1 @@ +> diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_combinator/combinator.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_combinator/combinator.1.p new file mode 100644 index 0000000..96e1798 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_combinator/combinator.1.p @@ -0,0 +1 @@ +['combinator', '>'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_combinator/combinator.2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_combinator/combinator.2.css new file mode 100644 index 0000000..54bcf30 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_combinator/combinator.2.css @@ -0,0 +1 @@ +~ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_combinator/combinator.2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_combinator/combinator.2.l new file mode 100644 index 0000000..54bcf30 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_combinator/combinator.2.l @@ -0,0 +1 @@ +~ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_combinator/combinator.2.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_combinator/combinator.2.p new file mode 100644 index 0000000..8f57b6e --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_combinator/combinator.2.p @@ -0,0 +1 @@ +['combinator', '~'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_comment/comment.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_comment/comment.0.css new file mode 100644 index 0000000..4959925 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_comment/comment.0.css @@ -0,0 +1 @@ +/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_comment/comment.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_comment/comment.0.l new file mode 100644 index 0000000..4959925 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_comment/comment.0.l @@ -0,0 +1 @@ +/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_comment/comment.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_comment/comment.0.p new file mode 100644 index 0000000..bfa01df --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_comment/comment.0.p @@ -0,0 +1 @@ +['comment', 'test'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.0.css new file mode 100644 index 0000000..f09ff90 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.0.css @@ -0,0 +1 @@ +property:value diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.0.l new file mode 100644 index 0000000..f09ff90 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.0.l @@ -0,0 +1 @@ +property:value diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.0.p new file mode 100644 index 0000000..4b279dc --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.0.p @@ -0,0 +1,5 @@ +['declaration', + ['property', + ['ident', 'property']], + ['value', + ['ident', 'value']]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.1.css new file mode 100644 index 0000000..cd85276 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.1.css @@ -0,0 +1 @@ +-my-property:value diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.1.l new file mode 100644 index 0000000..cd85276 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.1.l @@ -0,0 +1 @@ +-my-property:value diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.1.p new file mode 100644 index 0000000..ba403db --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.1.p @@ -0,0 +1,5 @@ +['declaration', + ['property', + ['ident', '-my-property']], + ['value', + ['ident', 'value']]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.c.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.c.0.css new file mode 100644 index 0000000..1c071ba --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.c.0.css @@ -0,0 +1 @@ +property/*test*/:value diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.c.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.c.0.l new file mode 100644 index 0000000..1c071ba --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.c.0.l @@ -0,0 +1 @@ +property/*test*/:value diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.c.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.c.0.p new file mode 100644 index 0000000..3737d5e --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.c.0.p @@ -0,0 +1,6 @@ +['declaration', + ['property', + ['ident', 'property'], + ['comment', 'test']], + ['value', + ['ident', 'value']]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.c.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.c.1.css new file mode 100644 index 0000000..a4ef080 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.c.1.css @@ -0,0 +1 @@ +property:/*test*/value diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.c.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.c.1.l new file mode 100644 index 0000000..a4ef080 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.c.1.l @@ -0,0 +1 @@ +property:/*test*/value diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.c.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.c.1.p new file mode 100644 index 0000000..01df6bf --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.c.1.p @@ -0,0 +1,6 @@ +['declaration', + ['property', + ['ident', 'property']], + ['value', + ['comment', 'test'], + ['ident', 'value']]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.c.2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.c.2.css new file mode 100644 index 0000000..e2c6633 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.c.2.css @@ -0,0 +1 @@ +property/*test*/:/*test*/value diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.c.2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.c.2.l new file mode 100644 index 0000000..e2c6633 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.c.2.l @@ -0,0 +1 @@ +property/*test*/:/*test*/value diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.c.2.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.c.2.p new file mode 100644 index 0000000..6ab8f5c --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.c.2.p @@ -0,0 +1,7 @@ +['declaration', + ['property', + ['ident', 'property'], + ['comment', 'test']], + ['value', + ['comment', 'test'], + ['ident', 'value']]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.c.3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.c.3.css new file mode 100644 index 0000000..1b69c8c --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.c.3.css @@ -0,0 +1 @@ +property /*test*/ : /*test*/ value diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.c.3.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.c.3.l new file mode 100644 index 0000000..1b69c8c --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.c.3.l @@ -0,0 +1 @@ +property /*test*/ : /*test*/ value diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.c.3.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.c.3.p new file mode 100644 index 0000000..6f9b66a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.c.3.p @@ -0,0 +1,11 @@ +['declaration', + ['property', + ['ident', 'property'], + ['s', ' '], + ['comment', 'test'], + ['s', ' ']], + ['value', + ['s', ' '], + ['comment', 'test'], + ['s', ' '], + ['ident', 'value']]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.s.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.s.0.css new file mode 100644 index 0000000..5141ce6 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.s.0.css @@ -0,0 +1 @@ +property :value diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.s.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.s.0.l new file mode 100644 index 0000000..5141ce6 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.s.0.l @@ -0,0 +1 @@ +property :value diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.s.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.s.0.p new file mode 100644 index 0000000..c35df57 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.s.0.p @@ -0,0 +1,6 @@ +['declaration', + ['property', + ['ident', 'property'], + ['s', ' ']], + ['value', + ['ident', 'value']]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.s.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.s.1.css new file mode 100644 index 0000000..a1e6b22 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.s.1.css @@ -0,0 +1 @@ +property: value diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.s.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.s.1.l new file mode 100644 index 0000000..a1e6b22 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.s.1.l @@ -0,0 +1 @@ +property: value diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.s.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.s.1.p new file mode 100644 index 0000000..c390f9d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.s.1.p @@ -0,0 +1,6 @@ +['declaration', + ['property', + ['ident', 'property']], + ['value', + ['s', ' '], + ['ident', 'value']]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.s.2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.s.2.css new file mode 100644 index 0000000..4fcd189 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.s.2.css @@ -0,0 +1 @@ +property : value diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.s.2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.s.2.l new file mode 100644 index 0000000..4fcd189 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.s.2.l @@ -0,0 +1 @@ +property : value diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.s.2.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.s.2.p new file mode 100644 index 0000000..f381293 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.s.2.p @@ -0,0 +1,7 @@ +['declaration', + ['property', + ['ident', 'property'], + ['s', ' ']], + ['value', + ['s', ' '], + ['ident', 'value']]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.s.3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.s.3.css new file mode 100644 index 0000000..3bf28d6 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.s.3.css @@ -0,0 +1 @@ +property : value diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.s.3.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.s.3.l new file mode 100644 index 0000000..3bf28d6 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.s.3.l @@ -0,0 +1 @@ +property : value diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.s.3.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.s.3.p new file mode 100644 index 0000000..922fe4f --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_declaration/declaration.s.3.p @@ -0,0 +1,7 @@ +['declaration', + ['property', + ['ident', 'property'], + ['s', ' ']], + ['value', + ['s', ' '], + ['ident', 'value']]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_decldelim/decldelim.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_decldelim/decldelim.0.css new file mode 100644 index 0000000..092bc2b --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_decldelim/decldelim.0.css @@ -0,0 +1 @@ +; diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_decldelim/decldelim.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_decldelim/decldelim.0.l new file mode 100644 index 0000000..092bc2b --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_decldelim/decldelim.0.l @@ -0,0 +1 @@ +; diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_decldelim/decldelim.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_decldelim/decldelim.0.p new file mode 100644 index 0000000..c098bfa --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_decldelim/decldelim.0.p @@ -0,0 +1 @@ +['decldelim'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_delim/delim.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_delim/delim.0.css new file mode 100644 index 0000000..7edb2fa --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_delim/delim.0.css @@ -0,0 +1 @@ +, diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_delim/delim.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_delim/delim.0.l new file mode 100644 index 0000000..7edb2fa --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_delim/delim.0.l @@ -0,0 +1 @@ +, diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_delim/delim.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_delim/delim.0.p new file mode 100644 index 0000000..ce3a3c3 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_delim/delim.0.p @@ -0,0 +1 @@ +['delim'] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_dimension/dimension.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_dimension/dimension.0.css new file mode 100644 index 0000000..da5aef1 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_dimension/dimension.0.css @@ -0,0 +1 @@ +10px diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_dimension/dimension.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_dimension/dimension.0.l new file mode 100644 index 0000000..da5aef1 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_dimension/dimension.0.l @@ -0,0 +1 @@ +10px diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_dimension/dimension.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_dimension/dimension.0.p new file mode 100644 index 0000000..cb570b1 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_dimension/dimension.0.p @@ -0,0 +1,3 @@ +['dimension', + ['number', '10'], + ['ident', 'px']] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_dimension/dimension.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_dimension/dimension.1.css new file mode 100644 index 0000000..a6abd8e --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_dimension/dimension.1.css @@ -0,0 +1 @@ +.10px diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_dimension/dimension.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_dimension/dimension.1.l new file mode 100644 index 0000000..a6abd8e --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_dimension/dimension.1.l @@ -0,0 +1 @@ +.10px diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_dimension/dimension.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_dimension/dimension.1.p new file mode 100644 index 0000000..964fb82 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_dimension/dimension.1.p @@ -0,0 +1,3 @@ +['dimension', + ['number', '.10'], + ['ident', 'px']] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_dimension/dimension.2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_dimension/dimension.2.css new file mode 100644 index 0000000..9d2e133 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_dimension/dimension.2.css @@ -0,0 +1 @@ +12.34px diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_dimension/dimension.2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_dimension/dimension.2.l new file mode 100644 index 0000000..9d2e133 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_dimension/dimension.2.l @@ -0,0 +1 @@ +12.34px diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_dimension/dimension.2.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_dimension/dimension.2.p new file mode 100644 index 0000000..b026991 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_dimension/dimension.2.p @@ -0,0 +1,3 @@ +['dimension', + ['number', '12.34'], + ['ident', 'px']] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.0.css new file mode 100644 index 0000000..50d2ee1 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.0.css @@ -0,0 +1 @@ +filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/transparent-border.png',sizingMethod='scale') diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.0.l new file mode 100644 index 0000000..50d2ee1 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.0.l @@ -0,0 +1 @@ +filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/transparent-border.png',sizingMethod='scale') diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.0.p new file mode 100644 index 0000000..b7255a9 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.0.p @@ -0,0 +1,6 @@ +['filter', + ['property', + ['ident', 'filter']], + ['filterv', + ['progid', + ['raw', 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/transparent-border.png',sizingMethod='scale')']]]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.1.css new file mode 100644 index 0000000..d54ea2c --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.1.css @@ -0,0 +1 @@ +filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/transparent-border.png',sizingMethod='scale')progid:DXImageTransform.Microsoft.AlphaImageLoader(src='test.png',sizingMethod='something') diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.1.l new file mode 100644 index 0000000..d54ea2c --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.1.l @@ -0,0 +1 @@ +filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/transparent-border.png',sizingMethod='scale')progid:DXImageTransform.Microsoft.AlphaImageLoader(src='test.png',sizingMethod='something') diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.1.p new file mode 100644 index 0000000..c22ddb8 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.1.p @@ -0,0 +1,8 @@ +['filter', + ['property', + ['ident', 'filter']], + ['filterv', + ['progid', + ['raw', 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/transparent-border.png',sizingMethod='scale')']], + ['progid', + ['raw', 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src='test.png',sizingMethod='something')']]]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.2.css new file mode 100644 index 0000000..3d995f0 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.2.css @@ -0,0 +1 @@ +*filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/transparent-border.png',sizingMethod='scale') diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.2.l new file mode 100644 index 0000000..3d995f0 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.2.l @@ -0,0 +1 @@ +*filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/transparent-border.png',sizingMethod='scale') diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.2.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.2.p new file mode 100644 index 0000000..2c51e2a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.2.p @@ -0,0 +1,6 @@ +['filter', + ['property', + ['ident', '*filter']], + ['filterv', + ['progid', + ['raw', 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/transparent-border.png',sizingMethod='scale')']]]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.3.css new file mode 100644 index 0000000..808728c --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.3.css @@ -0,0 +1 @@ +-filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/transparent-border.png',sizingMethod='scale') diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.3.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.3.l new file mode 100644 index 0000000..808728c --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.3.l @@ -0,0 +1 @@ +-filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/transparent-border.png',sizingMethod='scale') diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.3.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.3.p new file mode 100644 index 0000000..681b775 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.3.p @@ -0,0 +1,6 @@ +['filter', + ['property', + ['ident', '-filter']], + ['filterv', + ['progid', + ['raw', 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/transparent-border.png',sizingMethod='scale')']]]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.4.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.4.css new file mode 100644 index 0000000..1de25b7 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.4.css @@ -0,0 +1 @@ +_filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/transparent-border.png',sizingMethod='scale') diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.4.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.4.l new file mode 100644 index 0000000..1de25b7 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.4.l @@ -0,0 +1 @@ +_filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/transparent-border.png',sizingMethod='scale') diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.4.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.4.p new file mode 100644 index 0000000..cf29e23 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.4.p @@ -0,0 +1,6 @@ +['filter', + ['property', + ['ident', '_filter']], + ['filterv', + ['progid', + ['raw', 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/transparent-border.png',sizingMethod='scale')']]]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.5.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.5.css new file mode 100644 index 0000000..f142f5c --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.5.css @@ -0,0 +1 @@ +-ms-filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/transparent-border.png',sizingMethod='scale') diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.5.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.5.l new file mode 100644 index 0000000..f142f5c --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.5.l @@ -0,0 +1 @@ +-ms-filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/transparent-border.png',sizingMethod='scale') diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.5.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.5.p new file mode 100644 index 0000000..03b915f --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.5.p @@ -0,0 +1,6 @@ +['filter', + ['property', + ['ident', '-ms-filter']], + ['filterv', + ['progid', + ['raw', 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/transparent-border.png',sizingMethod='scale')']]]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.c.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.c.0.css new file mode 100644 index 0000000..f49c33b --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.c.0.css @@ -0,0 +1 @@ +filter/*test*/:/*test*/progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/transparent-border.png',sizingMethod='scale') diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.c.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.c.0.l new file mode 100644 index 0000000..f49c33b --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.c.0.l @@ -0,0 +1 @@ +filter/*test*/:/*test*/progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/transparent-border.png',sizingMethod='scale') diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.c.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.c.0.p new file mode 100644 index 0000000..f1a70fa --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.c.0.p @@ -0,0 +1,8 @@ +['filter', + ['property', + ['ident', 'filter'], + ['comment', 'test']], + ['filterv', + ['progid', + ['comment', 'test'], + ['raw', 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/transparent-border.png',sizingMethod='scale')']]]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.c.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.c.1.css new file mode 100644 index 0000000..462fbbb --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.c.1.css @@ -0,0 +1 @@ +filter/*test*/:/*test*/progid:DXImageTransform.Microsoft.AlphaImageLoader(/*)*/src='images/transparent-border.png'/*)*/,/*)*/sizingMethod='scale') diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.c.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.c.1.l new file mode 100644 index 0000000..462fbbb --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.c.1.l @@ -0,0 +1 @@ +filter/*test*/:/*test*/progid:DXImageTransform.Microsoft.AlphaImageLoader(/*)*/src='images/transparent-border.png'/*)*/,/*)*/sizingMethod='scale') diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.c.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.c.1.p new file mode 100644 index 0000000..692bf5e --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.c.1.p @@ -0,0 +1,8 @@ +['filter', + ['property', + ['ident', 'filter'], + ['comment', 'test']], + ['filterv', + ['progid', + ['comment', 'test'], + ['raw', 'progid:DXImageTransform.Microsoft.AlphaImageLoader(/*)*/src='images/transparent-border.png'/*)*/,/*)*/sizingMethod='scale')']]]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.s.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.s.0.css new file mode 100644 index 0000000..124896b --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.s.0.css @@ -0,0 +1 @@ +filter : progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/transparent-border.png',sizingMethod='scale') diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.s.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.s.0.l new file mode 100644 index 0000000..124896b --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.s.0.l @@ -0,0 +1 @@ +filter : progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/transparent-border.png',sizingMethod='scale') diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.s.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.s.0.p new file mode 100644 index 0000000..77304f4 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.s.0.p @@ -0,0 +1,8 @@ +['filter', + ['property', + ['ident', 'filter'], + ['s', ' ']], + ['filterv', + ['progid', + ['s', ' '], + ['raw', 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/transparent-border.png',sizingMethod='scale')']]]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.s.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.s.1.css new file mode 100644 index 0000000..d03c367 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.s.1.css @@ -0,0 +1,2 @@ +filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/transparent-border.png',sizingMethod='scale') + progid:DXImageTransform.Microsoft.AlphaImageLoader(src='test.png',sizingMethod='something') diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.s.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.s.1.l new file mode 100644 index 0000000..d03c367 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.s.1.l @@ -0,0 +1,2 @@ +filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/transparent-border.png',sizingMethod='scale') + progid:DXImageTransform.Microsoft.AlphaImageLoader(src='test.png',sizingMethod='something') diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.s.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.s.1.p new file mode 100644 index 0000000..7bff2fc --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_filter/filter.s.1.p @@ -0,0 +1,10 @@ +['filter', + ['property', + ['ident', 'filter']], + ['filterv', + ['progid', + ['raw', 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/transparent-border.png',sizingMethod='scale')'], + ['s', ' + ']], + ['progid', + ['raw', 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src='test.png',sizingMethod='something')']]]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.0.css new file mode 100644 index 0000000..d7c3a5e --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.0.css @@ -0,0 +1 @@ +expression() diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.0.l new file mode 100644 index 0000000..d7c3a5e --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.0.l @@ -0,0 +1 @@ +expression() diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.0.p new file mode 100644 index 0000000..4625b45 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.0.p @@ -0,0 +1 @@ +['functionExpression', ''] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.1.css new file mode 100644 index 0000000..80fcf78 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.1.css @@ -0,0 +1 @@ +expression(()) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.1.l new file mode 100644 index 0000000..80fcf78 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.1.l @@ -0,0 +1 @@ +expression(()) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.1.p new file mode 100644 index 0000000..57f9ddf --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.1.p @@ -0,0 +1 @@ +['functionExpression', '()'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.2.css new file mode 100644 index 0000000..4cab2b4 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.2.css @@ -0,0 +1 @@ +expression(expression()) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.2.l new file mode 100644 index 0000000..4cab2b4 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.2.l @@ -0,0 +1 @@ +expression(expression()) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.2.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.2.p new file mode 100644 index 0000000..c732014 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.2.p @@ -0,0 +1 @@ +['functionExpression', 'expression()'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.3.css new file mode 100644 index 0000000..f58251f --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.3.css @@ -0,0 +1 @@ +expression(/*)*/) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.3.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.3.l new file mode 100644 index 0000000..f58251f --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.3.l @@ -0,0 +1 @@ +expression(/*)*/) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.3.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.3.p new file mode 100644 index 0000000..d0e8677 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.3.p @@ -0,0 +1 @@ +['functionExpression', '/*)*/'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.4.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.4.css new file mode 100644 index 0000000..5f445bd --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.4.css @@ -0,0 +1 @@ +expression(")") diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.4.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.4.l new file mode 100644 index 0000000..5f445bd --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.4.l @@ -0,0 +1 @@ +expression(")") diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.4.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.4.p new file mode 100644 index 0000000..75e03e9 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.4.p @@ -0,0 +1 @@ +['functionExpression', '")"'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.5.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.5.css new file mode 100644 index 0000000..e9678ea --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.5.css @@ -0,0 +1 @@ +expression(')') diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.5.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.5.l new file mode 100644 index 0000000..e9678ea --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.5.l @@ -0,0 +1 @@ +expression(')') diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.5.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.5.p new file mode 100644 index 0000000..a663324 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.5.p @@ -0,0 +1 @@ +['functionExpression', '')''] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.6.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.6.css new file mode 100644 index 0000000..d0b9991 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.6.css @@ -0,0 +1 @@ +expression(()()) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.6.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.6.l new file mode 100644 index 0000000..d0b9991 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.6.l @@ -0,0 +1 @@ +expression(()()) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.6.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.6.p new file mode 100644 index 0000000..2ddf374 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.6.p @@ -0,0 +1 @@ +['functionExpression', '()()'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.7.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.7.css new file mode 100644 index 0000000..d26f746 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.7.css @@ -0,0 +1,3 @@ +expression( +// ) +) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.7.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.7.l new file mode 100644 index 0000000..d26f746 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.7.l @@ -0,0 +1,3 @@ +expression( +// ) +) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.7.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.7.p new file mode 100644 index 0000000..e7dd5a0 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_functionExpression/functionExpression.7.p @@ -0,0 +1,3 @@ +['functionExpression', ' +// ) +'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.0.css new file mode 100644 index 0000000..8be6379 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.0.css @@ -0,0 +1 @@ +test() diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.0.l new file mode 100644 index 0000000..8be6379 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.0.l @@ -0,0 +1 @@ +test() diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.0.p new file mode 100644 index 0000000..a6f4614 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.0.p @@ -0,0 +1,3 @@ +['funktion', + ['ident', 'test'], + ['functionBody']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.1.css new file mode 100644 index 0000000..d482de7 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.1.css @@ -0,0 +1 @@ +test(n) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.1.l new file mode 100644 index 0000000..d482de7 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.1.l @@ -0,0 +1 @@ +test(n) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.1.p new file mode 100644 index 0000000..31365a9 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.1.p @@ -0,0 +1,4 @@ +['funktion', + ['ident', 'test'], + ['functionBody', + ['ident', 'n']]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.2.css new file mode 100644 index 0000000..ed4327f --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.2.css @@ -0,0 +1 @@ +test-test(n) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.2.l new file mode 100644 index 0000000..ed4327f --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.2.l @@ -0,0 +1 @@ +test-test(n) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.2.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.2.p new file mode 100644 index 0000000..7c462b4 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.2.p @@ -0,0 +1,4 @@ +['funktion', + ['ident', 'test-test'], + ['functionBody', + ['ident', 'n']]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.3.css new file mode 100644 index 0000000..822d118 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.3.css @@ -0,0 +1 @@ +test(x+y) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.3.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.3.l new file mode 100644 index 0000000..822d118 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.3.l @@ -0,0 +1 @@ +test(x+y) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.3.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.3.p new file mode 100644 index 0000000..eccfe1c --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.3.p @@ -0,0 +1,6 @@ +['funktion', + ['ident', 'test'], + ['functionBody', + ['ident', 'x'], + ['unary', '+'], + ['ident', 'y']]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.4.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.4.css new file mode 100644 index 0000000..8b6e4c5 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.4.css @@ -0,0 +1 @@ +test(x,y) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.4.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.4.l new file mode 100644 index 0000000..8b6e4c5 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.4.l @@ -0,0 +1 @@ +test(x,y) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.4.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.4.p new file mode 100644 index 0000000..d640370 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.4.p @@ -0,0 +1,6 @@ +['funktion', + ['ident', 'test'], + ['functionBody', + ['ident', 'x'], + ['operator', ','], + ['ident', 'y']]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.5.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.5.css new file mode 100644 index 0000000..1dc7cb4 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.5.css @@ -0,0 +1 @@ +test(10px,'test' test(x),89%) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.5.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.5.l new file mode 100644 index 0000000..1dc7cb4 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.5.l @@ -0,0 +1 @@ +test(10px,'test' test(x),89%) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.5.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.5.p new file mode 100644 index 0000000..020a244 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.5.p @@ -0,0 +1,16 @@ +['funktion', + ['ident', 'test'], + ['functionBody', + ['dimension', + ['number', '10'], + ['ident', 'px']], + ['operator', ','], + ['string', ''test''], + ['s', ' '], + ['funktion', + ['ident', 'test'], + ['functionBody', + ['ident', 'x']]], + ['operator', ','], + ['percentage', + ['number', '89']]]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.0.css new file mode 100644 index 0000000..2fea016 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.0.css @@ -0,0 +1 @@ +test(/*test*/) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.0.l new file mode 100644 index 0000000..2fea016 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.0.l @@ -0,0 +1 @@ +test(/*test*/) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.0.p new file mode 100644 index 0000000..77c51f5 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.0.p @@ -0,0 +1,4 @@ +['funktion', + ['ident', 'test'], + ['functionBody', + ['comment', 'test']]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.1.css new file mode 100644 index 0000000..69b68cd --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.1.css @@ -0,0 +1 @@ +test(/*test*/n/*test*/) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.1.l new file mode 100644 index 0000000..69b68cd --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.1.l @@ -0,0 +1 @@ +test(/*test*/n/*test*/) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.1.p new file mode 100644 index 0000000..8ef76bc --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.1.p @@ -0,0 +1,6 @@ +['funktion', + ['ident', 'test'], + ['functionBody', + ['comment', 'test'], + ['ident', 'n'], + ['comment', 'test']]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.2.css new file mode 100644 index 0000000..6ba1fb9 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.2.css @@ -0,0 +1 @@ +test-test(/*test*/n/*test*/) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.2.l new file mode 100644 index 0000000..6ba1fb9 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.2.l @@ -0,0 +1 @@ +test-test(/*test*/n/*test*/) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.2.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.2.p new file mode 100644 index 0000000..4c62027 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.2.p @@ -0,0 +1,6 @@ +['funktion', + ['ident', 'test-test'], + ['functionBody', + ['comment', 'test'], + ['ident', 'n'], + ['comment', 'test']]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.3.css new file mode 100644 index 0000000..a39d873 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.3.css @@ -0,0 +1 @@ +test(/*test*/x/*test*/+/*test*/y/*test*/) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.3.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.3.l new file mode 100644 index 0000000..a39d873 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.3.l @@ -0,0 +1 @@ +test(/*test*/x/*test*/+/*test*/y/*test*/) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.3.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.3.p new file mode 100644 index 0000000..b181fcc --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.3.p @@ -0,0 +1,10 @@ +['funktion', + ['ident', 'test'], + ['functionBody', + ['comment', 'test'], + ['ident', 'x'], + ['comment', 'test'], + ['unary', '+'], + ['comment', 'test'], + ['ident', 'y'], + ['comment', 'test']]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.4.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.4.css new file mode 100644 index 0000000..90b532f --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.4.css @@ -0,0 +1 @@ +test(/*test*/x/*test*/,/*test*/y/*test*/) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.4.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.4.l new file mode 100644 index 0000000..90b532f --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.4.l @@ -0,0 +1 @@ +test(/*test*/x/*test*/,/*test*/y/*test*/) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.4.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.4.p new file mode 100644 index 0000000..f575cbf --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.4.p @@ -0,0 +1,10 @@ +['funktion', + ['ident', 'test'], + ['functionBody', + ['comment', 'test'], + ['ident', 'x'], + ['comment', 'test'], + ['operator', ','], + ['comment', 'test'], + ['ident', 'y'], + ['comment', 'test']]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.5.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.5.css new file mode 100644 index 0000000..ddf0207 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.5.css @@ -0,0 +1 @@ +test(/*test*/10px/*test*/,/*test*/'test'/*test*/test(/*test*/x/*test*/)/*test*/,/*test*/89%/*test*/) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.5.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.5.l new file mode 100644 index 0000000..ddf0207 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.5.l @@ -0,0 +1 @@ +test(/*test*/10px/*test*/,/*test*/'test'/*test*/test(/*test*/x/*test*/)/*test*/,/*test*/89%/*test*/) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.5.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.5.p new file mode 100644 index 0000000..2597e07 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.c.5.p @@ -0,0 +1,24 @@ +['funktion', + ['ident', 'test'], + ['functionBody', + ['comment', 'test'], + ['dimension', + ['number', '10'], + ['ident', 'px']], + ['comment', 'test'], + ['operator', ','], + ['comment', 'test'], + ['string', ''test''], + ['comment', 'test'], + ['funktion', + ['ident', 'test'], + ['functionBody', + ['comment', 'test'], + ['ident', 'x'], + ['comment', 'test']]], + ['comment', 'test'], + ['operator', ','], + ['comment', 'test'], + ['percentage', + ['number', '89']], + ['comment', 'test']]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.0.css new file mode 100644 index 0000000..249c696 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.0.css @@ -0,0 +1 @@ +test( ) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.0.l new file mode 100644 index 0000000..249c696 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.0.l @@ -0,0 +1 @@ +test( ) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.0.p new file mode 100644 index 0000000..704ece6 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.0.p @@ -0,0 +1,4 @@ +['funktion', + ['ident', 'test'], + ['functionBody', + ['s', ' ']]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.1.css new file mode 100644 index 0000000..29441e7 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.1.css @@ -0,0 +1 @@ +test( n ) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.1.l new file mode 100644 index 0000000..29441e7 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.1.l @@ -0,0 +1 @@ +test( n ) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.1.p new file mode 100644 index 0000000..9288ca4 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.1.p @@ -0,0 +1,6 @@ +['funktion', + ['ident', 'test'], + ['functionBody', + ['s', ' '], + ['ident', 'n'], + ['s', ' ']]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.2.css new file mode 100644 index 0000000..cf21d6c --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.2.css @@ -0,0 +1 @@ +test-test( n ) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.2.l new file mode 100644 index 0000000..cf21d6c --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.2.l @@ -0,0 +1 @@ +test-test( n ) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.2.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.2.p new file mode 100644 index 0000000..2deb161 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.2.p @@ -0,0 +1,6 @@ +['funktion', + ['ident', 'test-test'], + ['functionBody', + ['s', ' '], + ['ident', 'n'], + ['s', ' ']]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.3.css new file mode 100644 index 0000000..6b3d1f8 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.3.css @@ -0,0 +1 @@ +test( x + y ) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.3.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.3.l new file mode 100644 index 0000000..6b3d1f8 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.3.l @@ -0,0 +1 @@ +test( x + y ) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.3.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.3.p new file mode 100644 index 0000000..51afba5 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.3.p @@ -0,0 +1,10 @@ +['funktion', + ['ident', 'test'], + ['functionBody', + ['s', ' '], + ['ident', 'x'], + ['s', ' '], + ['unary', '+'], + ['s', ' '], + ['ident', 'y'], + ['s', ' ']]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.4.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.4.css new file mode 100644 index 0000000..75fb370 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.4.css @@ -0,0 +1 @@ +test( x , y ) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.4.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.4.l new file mode 100644 index 0000000..75fb370 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.4.l @@ -0,0 +1 @@ +test( x , y ) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.4.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.4.p new file mode 100644 index 0000000..52da7a7 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.4.p @@ -0,0 +1,10 @@ +['funktion', + ['ident', 'test'], + ['functionBody', + ['s', ' '], + ['ident', 'x'], + ['s', ' '], + ['operator', ','], + ['s', ' '], + ['ident', 'y'], + ['s', ' ']]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.5.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.5.css new file mode 100644 index 0000000..c92ba19 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.5.css @@ -0,0 +1 @@ +test( 10px , 'test' test( x ) , 89% ) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.5.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.5.l new file mode 100644 index 0000000..c92ba19 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.5.l @@ -0,0 +1 @@ +test( 10px , 'test' test( x ) , 89% ) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.5.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.5.p new file mode 100644 index 0000000..e51c185 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_funktion/function.s.5.p @@ -0,0 +1,24 @@ +['funktion', + ['ident', 'test'], + ['functionBody', + ['s', ' '], + ['dimension', + ['number', '10'], + ['ident', 'px']], + ['s', ' '], + ['operator', ','], + ['s', ' '], + ['string', ''test''], + ['s', ' '], + ['funktion', + ['ident', 'test'], + ['functionBody', + ['s', ' '], + ['ident', 'x'], + ['s', ' ']]], + ['s', ' '], + ['operator', ','], + ['s', ' '], + ['percentage', + ['number', '89']], + ['s', ' ']]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.0.css new file mode 100644 index 0000000..587be6b --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.0.css @@ -0,0 +1 @@ +x diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.0.l new file mode 100644 index 0000000..587be6b --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.0.l @@ -0,0 +1 @@ +x diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.0.p new file mode 100644 index 0000000..321656c --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.0.p @@ -0,0 +1 @@ +['ident', 'x'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.1.css new file mode 100644 index 0000000..72e8ffc --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.1.css @@ -0,0 +1 @@ +* diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.1.l new file mode 100644 index 0000000..72e8ffc --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.1.l @@ -0,0 +1 @@ +* diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.1.p new file mode 100644 index 0000000..ab5b26f --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.1.p @@ -0,0 +1 @@ +['ident', '*'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.2.css new file mode 100644 index 0000000..670c7b1 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.2.css @@ -0,0 +1 @@ +-x diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.2.l new file mode 100644 index 0000000..670c7b1 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.2.l @@ -0,0 +1 @@ +-x diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.2.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.2.p new file mode 100644 index 0000000..cc57da7 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.2.p @@ -0,0 +1 @@ +['ident', '-x'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.3.css new file mode 100644 index 0000000..21172b0 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.3.css @@ -0,0 +1 @@ +-x-test diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.3.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.3.l new file mode 100644 index 0000000..21172b0 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.3.l @@ -0,0 +1 @@ +-x-test diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.3.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.3.p new file mode 100644 index 0000000..3448063 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.3.p @@ -0,0 +1 @@ +['ident', '-x-test'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.4.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.4.css new file mode 100644 index 0000000..f8fed88 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.4.css @@ -0,0 +1 @@ +x\:y diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.4.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.4.l new file mode 100644 index 0000000..f8fed88 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.4.l @@ -0,0 +1 @@ +x\:y diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.4.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.4.p new file mode 100644 index 0000000..91b094e --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.4.p @@ -0,0 +1 @@ +['ident', 'x\:y'] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.5.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.5.css new file mode 100644 index 0000000..55d673a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.5.css @@ -0,0 +1 @@ +$x diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.5.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.5.l new file mode 100644 index 0000000..55d673a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.5.l @@ -0,0 +1 @@ +$x diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.5.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.5.p new file mode 100644 index 0000000..8df9ff4 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.5.p @@ -0,0 +1 @@ +['ident', '$x'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.6.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.6.css new file mode 100644 index 0000000..45754b2 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.6.css @@ -0,0 +1 @@ +_0 diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.6.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.6.l new file mode 100644 index 0000000..927ab65 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.6.l @@ -0,0 +1 @@ +_0 \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.6.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.6.p new file mode 100644 index 0000000..370450a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ident/ident.6.p @@ -0,0 +1 @@ +['ident', '_0'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_important/important.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_important/important.0.css new file mode 100644 index 0000000..462b9b5 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_important/important.0.css @@ -0,0 +1 @@ +!important diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_important/important.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_important/important.0.l new file mode 100644 index 0000000..462b9b5 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_important/important.0.l @@ -0,0 +1 @@ +!important diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_important/important.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_important/important.0.p new file mode 100644 index 0000000..19d275a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_important/important.0.p @@ -0,0 +1 @@ +['important'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_important/important.c.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_important/important.c.0.css new file mode 100644 index 0000000..d40dde7 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_important/important.c.0.css @@ -0,0 +1 @@ +!/*test*/important diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_important/important.c.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_important/important.c.0.l new file mode 100644 index 0000000..d40dde7 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_important/important.c.0.l @@ -0,0 +1 @@ +!/*test*/important diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_important/important.c.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_important/important.c.0.p new file mode 100644 index 0000000..c961858 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_important/important.c.0.p @@ -0,0 +1,2 @@ +['important', + ['comment', 'test']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_important/important.s.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_important/important.s.0.css new file mode 100644 index 0000000..a263f0e --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_important/important.s.0.css @@ -0,0 +1 @@ +! important diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_important/important.s.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_important/important.s.0.l new file mode 100644 index 0000000..a263f0e --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_important/important.s.0.l @@ -0,0 +1 @@ +! important diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_important/important.s.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_important/important.s.0.p new file mode 100644 index 0000000..f0a1cdf --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_important/important.s.0.p @@ -0,0 +1,2 @@ +['important', + ['s', ' ']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.0.css new file mode 100644 index 0000000..f599e28 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.0.css @@ -0,0 +1 @@ +10 diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.0.l new file mode 100644 index 0000000..f599e28 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.0.l @@ -0,0 +1 @@ +10 diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.0.p new file mode 100644 index 0000000..b115945 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.0.p @@ -0,0 +1 @@ +['nth', '10'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.1.css new file mode 100644 index 0000000..3fa1633 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.1.css @@ -0,0 +1 @@ +2n diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.1.l new file mode 100644 index 0000000..3fa1633 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.1.l @@ -0,0 +1 @@ +2n diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.1.p new file mode 100644 index 0000000..b8f59c7 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.1.p @@ -0,0 +1 @@ +['nth', '2n'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.2.css new file mode 100644 index 0000000..994e126 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.2.css @@ -0,0 +1 @@ +odd diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.2.l new file mode 100644 index 0000000..994e126 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.2.l @@ -0,0 +1 @@ +odd diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.2.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.2.p new file mode 100644 index 0000000..7f3e7a4 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.2.p @@ -0,0 +1 @@ +['nth', 'odd'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.3.css new file mode 100644 index 0000000..ab6a4d1 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.3.css @@ -0,0 +1 @@ +even diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.3.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.3.l new file mode 100644 index 0000000..ab6a4d1 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.3.l @@ -0,0 +1 @@ +even diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.3.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.3.p new file mode 100644 index 0000000..1239e0e --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.3.p @@ -0,0 +1 @@ +['nth', 'even'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.4.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.4.css new file mode 100644 index 0000000..8ba3a16 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.4.css @@ -0,0 +1 @@ +n diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.4.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.4.l new file mode 100644 index 0000000..8ba3a16 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.4.l @@ -0,0 +1 @@ +n diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.4.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.4.p new file mode 100644 index 0000000..6b53a5b --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nth/nth.4.p @@ -0,0 +1 @@ +['nth', 'n'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.0.css new file mode 100644 index 0000000..0911916 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.0.css @@ -0,0 +1 @@ +:nth-child(2n+1) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.0.l new file mode 100644 index 0000000..0911916 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.0.l @@ -0,0 +1 @@ +:nth-child(2n+1) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.0.p new file mode 100644 index 0000000..b21af46 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.0.p @@ -0,0 +1,5 @@ +['nthselector', + ['ident', 'nth-child'], + ['nth', '2n'], + ['unary', '+'], + ['nth', '1']] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.1.css new file mode 100644 index 0000000..eed826a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.1.css @@ -0,0 +1 @@ +:nth-last-child(+3n-2) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.1.l new file mode 100644 index 0000000..eed826a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.1.l @@ -0,0 +1 @@ +:nth-last-child(+3n-2) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.1.p new file mode 100644 index 0000000..3ed6a61 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.1.p @@ -0,0 +1,6 @@ +['nthselector', + ['ident', 'nth-last-child'], + ['unary', '+'], + ['nth', '3n'], + ['unary', '-'], + ['nth', '2']] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.c.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.c.0.css new file mode 100644 index 0000000..59470f5 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.c.0.css @@ -0,0 +1 @@ +:nth-child(/*test*/2n/*test*/+/*test*/1/*test*/) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.c.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.c.0.l new file mode 100644 index 0000000..59470f5 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.c.0.l @@ -0,0 +1 @@ +:nth-child(/*test*/2n/*test*/+/*test*/1/*test*/) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.c.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.c.0.p new file mode 100644 index 0000000..827b326 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.c.0.p @@ -0,0 +1,9 @@ +['nthselector', + ['ident', 'nth-child'], + ['comment', 'test'], + ['nth', '2n'], + ['comment', 'test'], + ['unary', '+'], + ['comment', 'test'], + ['nth', '1'], + ['comment', 'test']] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.c.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.c.1.css new file mode 100644 index 0000000..533c72c --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.c.1.css @@ -0,0 +1 @@ +:nth-last-child(/*test*/+/*test*/3n/*test*/-/*test*/2/*test*/) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.c.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.c.1.l new file mode 100644 index 0000000..533c72c --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.c.1.l @@ -0,0 +1 @@ +:nth-last-child(/*test*/+/*test*/3n/*test*/-/*test*/2/*test*/) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.c.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.c.1.p new file mode 100644 index 0000000..820d34a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.c.1.p @@ -0,0 +1,11 @@ +['nthselector', + ['ident', 'nth-last-child'], + ['comment', 'test'], + ['unary', '+'], + ['comment', 'test'], + ['nth', '3n'], + ['comment', 'test'], + ['unary', '-'], + ['comment', 'test'], + ['nth', '2'], + ['comment', 'test']] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.s.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.s.0.css new file mode 100644 index 0000000..67af7a3 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.s.0.css @@ -0,0 +1 @@ +:nth-child( 2n + 1 ) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.s.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.s.0.l new file mode 100644 index 0000000..67af7a3 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.s.0.l @@ -0,0 +1 @@ +:nth-child( 2n + 1 ) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.s.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.s.0.p new file mode 100644 index 0000000..984d50e --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.s.0.p @@ -0,0 +1,9 @@ +['nthselector', + ['ident', 'nth-child'], + ['s', ' '], + ['nth', '2n'], + ['s', ' '], + ['unary', '+'], + ['s', ' '], + ['nth', '1'], + ['s', ' ']] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.s.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.s.1.css new file mode 100644 index 0000000..9004c30 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.s.1.css @@ -0,0 +1 @@ +:nth-last-child( + 3n - 2 ) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.s.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.s.1.l new file mode 100644 index 0000000..9004c30 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.s.1.l @@ -0,0 +1 @@ +:nth-last-child( + 3n - 2 ) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.s.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.s.1.p new file mode 100644 index 0000000..7988a2d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_nthselector/nthselector.s.1.p @@ -0,0 +1,11 @@ +['nthselector', + ['ident', 'nth-last-child'], + ['s', ' '], + ['unary', '+'], + ['s', ' '], + ['nth', '3n'], + ['s', ' '], + ['unary', '-'], + ['s', ' '], + ['nth', '2'], + ['s', ' ']] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.0.css new file mode 100644 index 0000000..f599e28 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.0.css @@ -0,0 +1 @@ +10 diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.0.l new file mode 100644 index 0000000..f599e28 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.0.l @@ -0,0 +1 @@ +10 diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.0.p new file mode 100644 index 0000000..70240c1 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.0.p @@ -0,0 +1 @@ +['number', '10'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.1.css new file mode 100644 index 0000000..537015e --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.1.css @@ -0,0 +1 @@ +.10 diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.1.l new file mode 100644 index 0000000..537015e --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.1.l @@ -0,0 +1 @@ +.10 diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.1.p new file mode 100644 index 0000000..962e60a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.1.p @@ -0,0 +1 @@ +['number', '.10'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.2.css new file mode 100644 index 0000000..71a7cf9 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.2.css @@ -0,0 +1 @@ +12.34 diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.2.l new file mode 100644 index 0000000..71a7cf9 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.2.l @@ -0,0 +1 @@ +12.34 diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.2.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.2.p new file mode 100644 index 0000000..0617386 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.2.p @@ -0,0 +1 @@ +['number', '12.34'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.3.css new file mode 100644 index 0000000..49d5957 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.3.css @@ -0,0 +1 @@ +0.1 diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.3.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.3.l new file mode 100644 index 0000000..49d5957 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.3.l @@ -0,0 +1 @@ +0.1 diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.4.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.4.css new file mode 100644 index 0000000..d3827e7 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.4.css @@ -0,0 +1 @@ +1.0 diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.4.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.4.l new file mode 100644 index 0000000..d3827e7 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.4.l @@ -0,0 +1 @@ +1.0 diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.5.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.5.css new file mode 100644 index 0000000..ba66466 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.5.css @@ -0,0 +1 @@ +0.0 diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.5.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.5.l new file mode 100644 index 0000000..ba66466 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.5.l @@ -0,0 +1 @@ +0.0 diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.6.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.6.css new file mode 100644 index 0000000..7d856fd --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.6.css @@ -0,0 +1 @@ +.0 diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.6.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.6.l new file mode 100644 index 0000000..7d856fd --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.6.l @@ -0,0 +1 @@ +.0 diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.7.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.7.css new file mode 100644 index 0000000..4b378b1 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.7.css @@ -0,0 +1 @@ +1.200000 diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.7.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.7.l new file mode 100644 index 0000000..4b378b1 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_number/number.7.l @@ -0,0 +1 @@ +1.200000 diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_operator/operator.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_operator/operator.0.css new file mode 100644 index 0000000..b498fd4 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_operator/operator.0.css @@ -0,0 +1 @@ +/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_operator/operator.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_operator/operator.0.l new file mode 100644 index 0000000..b498fd4 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_operator/operator.0.l @@ -0,0 +1 @@ +/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_operator/operator.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_operator/operator.0.p new file mode 100644 index 0000000..4c2b91d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_operator/operator.0.p @@ -0,0 +1 @@ +['operator', '/'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_operator/operator.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_operator/operator.1.css new file mode 100644 index 0000000..7edb2fa --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_operator/operator.1.css @@ -0,0 +1 @@ +, diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_operator/operator.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_operator/operator.1.l new file mode 100644 index 0000000..7edb2fa --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_operator/operator.1.l @@ -0,0 +1 @@ +, diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_operator/operator.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_operator/operator.1.p new file mode 100644 index 0000000..28eeb63 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_operator/operator.1.p @@ -0,0 +1 @@ +['operator', ','] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_operator/operator.2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_operator/operator.2.css new file mode 100644 index 0000000..397db75 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_operator/operator.2.css @@ -0,0 +1 @@ +: diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_operator/operator.2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_operator/operator.2.l new file mode 100644 index 0000000..397db75 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_operator/operator.2.l @@ -0,0 +1 @@ +: diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_operator/operator.2.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_operator/operator.2.p new file mode 100644 index 0000000..af7751b --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_operator/operator.2.p @@ -0,0 +1 @@ +['operator', ':'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_operator/operator.3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_operator/operator.3.css new file mode 100644 index 0000000..3134d36 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_operator/operator.3.css @@ -0,0 +1 @@ += diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_operator/operator.3.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_operator/operator.3.l new file mode 100644 index 0000000..3134d36 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_operator/operator.3.l @@ -0,0 +1 @@ += diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_operator/operator.3.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_operator/operator.3.p new file mode 100644 index 0000000..ed2b21c --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_operator/operator.3.p @@ -0,0 +1 @@ +['operator', '='] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_percentage/percentage.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_percentage/percentage.0.css new file mode 100644 index 0000000..74a398d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_percentage/percentage.0.css @@ -0,0 +1 @@ +10% diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_percentage/percentage.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_percentage/percentage.0.l new file mode 100644 index 0000000..74a398d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_percentage/percentage.0.l @@ -0,0 +1 @@ +10% diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_percentage/percentage.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_percentage/percentage.0.p new file mode 100644 index 0000000..7b5e964 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_percentage/percentage.0.p @@ -0,0 +1,2 @@ +['percentage', + ['number', '10']] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_percentage/percentage.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_percentage/percentage.1.css new file mode 100644 index 0000000..675a7b3 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_percentage/percentage.1.css @@ -0,0 +1 @@ +.10% diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_percentage/percentage.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_percentage/percentage.1.l new file mode 100644 index 0000000..675a7b3 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_percentage/percentage.1.l @@ -0,0 +1 @@ +.10% diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_percentage/percentage.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_percentage/percentage.1.p new file mode 100644 index 0000000..93d69d7 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_percentage/percentage.1.p @@ -0,0 +1,2 @@ +['percentage', + ['number', '.10']] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_percentage/percentage.2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_percentage/percentage.2.css new file mode 100644 index 0000000..0e14f9a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_percentage/percentage.2.css @@ -0,0 +1 @@ +12.34% diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_percentage/percentage.2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_percentage/percentage.2.l new file mode 100644 index 0000000..0e14f9a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_percentage/percentage.2.l @@ -0,0 +1 @@ +12.34% diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_percentage/percentage.2.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_percentage/percentage.2.p new file mode 100644 index 0000000..f9a9a64 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_percentage/percentage.2.p @@ -0,0 +1,2 @@ +['percentage', + ['number', '12.34']] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_property/property.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_property/property.0.css new file mode 100644 index 0000000..9821353 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_property/property.0.css @@ -0,0 +1 @@ +color diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_property/property.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_property/property.0.l new file mode 100644 index 0000000..9821353 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_property/property.0.l @@ -0,0 +1 @@ +color diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_property/property.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_property/property.0.p new file mode 100644 index 0000000..1737b7c --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_property/property.0.p @@ -0,0 +1,2 @@ +['property', + ['ident', 'color']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_property/property.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_property/property.1.css new file mode 100644 index 0000000..01ce086 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_property/property.1.css @@ -0,0 +1 @@ +-my-color diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_property/property.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_property/property.1.l new file mode 100644 index 0000000..01ce086 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_property/property.1.l @@ -0,0 +1 @@ +-my-color diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_property/property.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_property/property.1.p new file mode 100644 index 0000000..c8892aa --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_property/property.1.p @@ -0,0 +1,2 @@ +['property', + ['ident', '-my-color']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_pseudoc/pseudoc.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_pseudoc/pseudoc.0.css new file mode 100644 index 0000000..aa803c2 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_pseudoc/pseudoc.0.css @@ -0,0 +1 @@ +:test diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_pseudoc/pseudoc.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_pseudoc/pseudoc.0.l new file mode 100644 index 0000000..aa803c2 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_pseudoc/pseudoc.0.l @@ -0,0 +1 @@ +:test diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_pseudoc/pseudoc.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_pseudoc/pseudoc.0.p new file mode 100644 index 0000000..63ff8c1 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_pseudoc/pseudoc.0.p @@ -0,0 +1,2 @@ +['pseudoc', + ['ident', 'test']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_pseudoc/pseudoc.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_pseudoc/pseudoc.1.css new file mode 100644 index 0000000..5c00f84 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_pseudoc/pseudoc.1.css @@ -0,0 +1 @@ +:test-test diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_pseudoc/pseudoc.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_pseudoc/pseudoc.1.l new file mode 100644 index 0000000..5c00f84 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_pseudoc/pseudoc.1.l @@ -0,0 +1 @@ +:test-test diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_pseudoc/pseudoc.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_pseudoc/pseudoc.1.p new file mode 100644 index 0000000..7bec871 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_pseudoc/pseudoc.1.p @@ -0,0 +1,2 @@ +['pseudoc', + ['ident', 'test-test']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_pseudoe/pseudoe.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_pseudoe/pseudoe.0.css new file mode 100644 index 0000000..c301e09 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_pseudoe/pseudoe.0.css @@ -0,0 +1 @@ +::test diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_pseudoe/pseudoe.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_pseudoe/pseudoe.0.l new file mode 100644 index 0000000..c301e09 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_pseudoe/pseudoe.0.l @@ -0,0 +1 @@ +::test diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_pseudoe/pseudoe.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_pseudoe/pseudoe.0.p new file mode 100644 index 0000000..d21b64c --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_pseudoe/pseudoe.0.p @@ -0,0 +1,2 @@ +['pseudoe', + ['ident', 'test']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_pseudoe/pseudoe.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_pseudoe/pseudoe.1.css new file mode 100644 index 0000000..4dbaf9d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_pseudoe/pseudoe.1.css @@ -0,0 +1 @@ +::test-test diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_pseudoe/pseudoe.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_pseudoe/pseudoe.1.l new file mode 100644 index 0000000..4dbaf9d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_pseudoe/pseudoe.1.l @@ -0,0 +1 @@ +::test-test diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_pseudoe/pseudoe.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_pseudoe/pseudoe.1.p new file mode 100644 index 0000000..5db9b63 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_pseudoe/pseudoe.1.p @@ -0,0 +1,2 @@ +['pseudoe', + ['ident', 'test-test']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.0.css new file mode 100644 index 0000000..019f6e7 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.0.css @@ -0,0 +1 @@ +s{p:v} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.0.l new file mode 100644 index 0000000..019f6e7 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.0.l @@ -0,0 +1 @@ +s{p:v} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.0.p new file mode 100644 index 0000000..f8c94d8 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.0.p @@ -0,0 +1,10 @@ +['ruleset', + ['selector', + ['simpleselector', + ['ident', 's']]], + ['block', + ['declaration', + ['property', + ['ident', 'p']], + ['value', + ['ident', 'v']]]]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.1.css new file mode 100644 index 0000000..c187f9f --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.1.css @@ -0,0 +1 @@ +s{p0:v0;p1:v1} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.1.l new file mode 100644 index 0000000..c187f9f --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.1.l @@ -0,0 +1 @@ +s{p0:v0;p1:v1} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.1.p new file mode 100644 index 0000000..29ba2e4 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.1.p @@ -0,0 +1,16 @@ +['ruleset', + ['selector', + ['simpleselector', + ['ident', 's']]], + ['block', + ['declaration', + ['property', + ['ident', 'p0']], + ['value', + ['ident', 'v0']]], + ['decldelim'], + ['declaration', + ['property', + ['ident', 'p1']], + ['value', + ['ident', 'v1']]]]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.2.css new file mode 100644 index 0000000..6d6995d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.2.css @@ -0,0 +1 @@ +s0,s1{p:v} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.2.l new file mode 100644 index 0000000..6d6995d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.2.l @@ -0,0 +1 @@ +s0,s1{p:v} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.2.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.2.p new file mode 100644 index 0000000..550229b --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.2.p @@ -0,0 +1,13 @@ +['ruleset', + ['selector', + ['simpleselector', + ['ident', 's0']], + ['delim'], + ['simpleselector', + ['ident', 's1']]], + ['block', + ['declaration', + ['property', + ['ident', 'p']], + ['value', + ['ident', 'v']]]]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.3.css new file mode 100644 index 0000000..cbba6be --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.3.css @@ -0,0 +1 @@ +s0,s1{p0:v0;p1:v1} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.3.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.3.l new file mode 100644 index 0000000..cbba6be --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.3.l @@ -0,0 +1 @@ +s0,s1{p0:v0;p1:v1} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.3.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.3.p new file mode 100644 index 0000000..5aff8bb --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.3.p @@ -0,0 +1,19 @@ +['ruleset', + ['selector', + ['simpleselector', + ['ident', 's0']], + ['delim'], + ['simpleselector', + ['ident', 's1']]], + ['block', + ['declaration', + ['property', + ['ident', 'p0']], + ['value', + ['ident', 'v0']]], + ['decldelim'], + ['declaration', + ['property', + ['ident', 'p1']], + ['value', + ['ident', 'v1']]]]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.4.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.4.css new file mode 100644 index 0000000..787fb05 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.4.css @@ -0,0 +1 @@ +.test{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/transparent-border.png',sizingMethod='scale');color:red} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.4.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.4.l new file mode 100644 index 0000000..787fb05 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.4.l @@ -0,0 +1 @@ +.test{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/transparent-border.png',sizingMethod='scale');color:red} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.4.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.4.p new file mode 100644 index 0000000..7abf3de --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.4.p @@ -0,0 +1,18 @@ +['ruleset', + ['selector', + ['simpleselector', + ['clazz', + ['ident', 'test']]]], + ['block', + ['filter', + ['property', + ['ident', 'filter']], + ['filterv', + ['progid', + ['raw', 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/transparent-border.png',sizingMethod='scale')']]]], + ['decldelim'], + ['declaration', + ['property', + ['ident', 'color']], + ['value', + ['ident', 'red']]]]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.5.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.5.css new file mode 100644 index 0000000..2f48367 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.5.css @@ -0,0 +1 @@ +.test{color:red;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/transparent-border.png',sizingMethod='scale')progid:DXImageTransform.Microsoft.AlphaImageLoader(src='test.png',sizingMethod='test')} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.5.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.5.l new file mode 100644 index 0000000..2f48367 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.5.l @@ -0,0 +1 @@ +.test{color:red;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/transparent-border.png',sizingMethod='scale')progid:DXImageTransform.Microsoft.AlphaImageLoader(src='test.png',sizingMethod='test')} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.5.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.5.p new file mode 100644 index 0000000..d8f0205 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.5.p @@ -0,0 +1,20 @@ +['ruleset', + ['selector', + ['simpleselector', + ['clazz', + ['ident', 'test']]]], + ['block', + ['declaration', + ['property', + ['ident', 'color']], + ['value', + ['ident', 'red']]], + ['decldelim'], + ['filter', + ['property', + ['ident', 'filter']], + ['filterv', + ['progid', + ['raw', 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/transparent-border.png',sizingMethod='scale')']], + ['progid', + ['raw', 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src='test.png',sizingMethod='test')']]]]]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.c.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.c.0.css new file mode 100644 index 0000000..c63b57f --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.c.0.css @@ -0,0 +1 @@ +s/*test*/{/*test*/p/*test*/:/*test*/v/*test*/} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.c.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.c.0.l new file mode 100644 index 0000000..c63b57f --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.c.0.l @@ -0,0 +1 @@ +s/*test*/{/*test*/p/*test*/:/*test*/v/*test*/} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.c.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.c.0.p new file mode 100644 index 0000000..d69baf9 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.c.0.p @@ -0,0 +1,15 @@ +['ruleset', + ['selector', + ['simpleselector', + ['ident', 's'], + ['comment', 'test']]], + ['block', + ['comment', 'test'], + ['declaration', + ['property', + ['ident', 'p'], + ['comment', 'test']], + ['value', + ['comment', 'test'], + ['ident', 'v'], + ['comment', 'test']]]]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.c.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.c.1.css new file mode 100644 index 0000000..f37e6af --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.c.1.css @@ -0,0 +1 @@ +s/*test*/{/*test*/p0/*test*/:/*test*/v0/*test*/;/*test*/p1/*test*/:/*test*/v1/*test*/} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.c.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.c.1.l new file mode 100644 index 0000000..f37e6af --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.c.1.l @@ -0,0 +1 @@ +s/*test*/{/*test*/p0/*test*/:/*test*/v0/*test*/;/*test*/p1/*test*/:/*test*/v1/*test*/} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.c.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.c.1.p new file mode 100644 index 0000000..3b2b5d2 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.c.1.p @@ -0,0 +1,25 @@ +['ruleset', + ['selector', + ['simpleselector', + ['ident', 's'], + ['comment', 'test']]], + ['block', + ['comment', 'test'], + ['declaration', + ['property', + ['ident', 'p0'], + ['comment', 'test']], + ['value', + ['comment', 'test'], + ['ident', 'v0'], + ['comment', 'test']]], + ['decldelim'], + ['comment', 'test'], + ['declaration', + ['property', + ['ident', 'p1'], + ['comment', 'test']], + ['value', + ['comment', 'test'], + ['ident', 'v1'], + ['comment', 'test']]]]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.c.2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.c.2.css new file mode 100644 index 0000000..fb8c337 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.c.2.css @@ -0,0 +1 @@ +s0/*test*/,/*test*/s1/*test*/{/*test*/p/*test*/:/*test*/v/*test*/} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.c.2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.c.2.l new file mode 100644 index 0000000..fb8c337 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.c.2.l @@ -0,0 +1 @@ +s0/*test*/,/*test*/s1/*test*/{/*test*/p/*test*/:/*test*/v/*test*/} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.c.2.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.c.2.p new file mode 100644 index 0000000..047bec0 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.c.2.p @@ -0,0 +1,20 @@ +['ruleset', + ['selector', + ['simpleselector', + ['ident', 's0'], + ['comment', 'test']], + ['delim'], + ['simpleselector', + ['comment', 'test'], + ['ident', 's1'], + ['comment', 'test']]], + ['block', + ['comment', 'test'], + ['declaration', + ['property', + ['ident', 'p'], + ['comment', 'test']], + ['value', + ['comment', 'test'], + ['ident', 'v'], + ['comment', 'test']]]]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.c.3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.c.3.css new file mode 100644 index 0000000..e4cc252 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.c.3.css @@ -0,0 +1 @@ +s0/*test*/,/*test*/s1/*test*/{/*test*/p0/*test*/:/*test*/v0/*test*/;/*test*/p1/*test*/:/*test*/v1/*test*/} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.c.3.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.c.3.l new file mode 100644 index 0000000..e4cc252 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.c.3.l @@ -0,0 +1 @@ +s0/*test*/,/*test*/s1/*test*/{/*test*/p0/*test*/:/*test*/v0/*test*/;/*test*/p1/*test*/:/*test*/v1/*test*/} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.c.3.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.c.3.p new file mode 100644 index 0000000..7c3992e --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.c.3.p @@ -0,0 +1,30 @@ +['ruleset', + ['selector', + ['simpleselector', + ['ident', 's0'], + ['comment', 'test']], + ['delim'], + ['simpleselector', + ['comment', 'test'], + ['ident', 's1'], + ['comment', 'test']]], + ['block', + ['comment', 'test'], + ['declaration', + ['property', + ['ident', 'p0'], + ['comment', 'test']], + ['value', + ['comment', 'test'], + ['ident', 'v0'], + ['comment', 'test']]], + ['decldelim'], + ['comment', 'test'], + ['declaration', + ['property', + ['ident', 'p1'], + ['comment', 'test']], + ['value', + ['comment', 'test'], + ['ident', 'v1'], + ['comment', 'test']]]]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.0.css new file mode 100644 index 0000000..94b8250 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.0.css @@ -0,0 +1 @@ +s { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.0.l new file mode 100644 index 0000000..94b8250 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.0.l @@ -0,0 +1 @@ +s { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.0.p new file mode 100644 index 0000000..dc77c80 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.0.p @@ -0,0 +1,15 @@ +['ruleset', + ['selector', + ['simpleselector', + ['ident', 's'], + ['s', ' ']]], + ['block', + ['s', ' '], + ['declaration', + ['property', + ['ident', 'p'], + ['s', ' ']], + ['value', + ['s', ' '], + ['ident', 'v'], + ['s', ' ']]]]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.1.css new file mode 100644 index 0000000..34ff7e5 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.1.css @@ -0,0 +1 @@ +s { p0 : v0 ; p1 : v1 } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.1.l new file mode 100644 index 0000000..34ff7e5 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.1.l @@ -0,0 +1 @@ +s { p0 : v0 ; p1 : v1 } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.1.p new file mode 100644 index 0000000..2e58ea2 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.1.p @@ -0,0 +1,25 @@ +['ruleset', + ['selector', + ['simpleselector', + ['ident', 's'], + ['s', ' ']]], + ['block', + ['s', ' '], + ['declaration', + ['property', + ['ident', 'p0'], + ['s', ' ']], + ['value', + ['s', ' '], + ['ident', 'v0'], + ['s', ' ']]], + ['decldelim'], + ['s', ' '], + ['declaration', + ['property', + ['ident', 'p1'], + ['s', ' ']], + ['value', + ['s', ' '], + ['ident', 'v1'], + ['s', ' ']]]]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.2.css new file mode 100644 index 0000000..6b1a87f --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.2.css @@ -0,0 +1 @@ +s0 , s1 { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.2.l new file mode 100644 index 0000000..6b1a87f --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.2.l @@ -0,0 +1 @@ +s0 , s1 { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.2.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.2.p new file mode 100644 index 0000000..7179d14 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.2.p @@ -0,0 +1,20 @@ +['ruleset', + ['selector', + ['simpleselector', + ['ident', 's0'], + ['s', ' ']], + ['delim'], + ['simpleselector', + ['s', ' '], + ['ident', 's1'], + ['s', ' ']]], + ['block', + ['s', ' '], + ['declaration', + ['property', + ['ident', 'p'], + ['s', ' ']], + ['value', + ['s', ' '], + ['ident', 'v'], + ['s', ' ']]]]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.3.css new file mode 100644 index 0000000..c1625d1 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.3.css @@ -0,0 +1 @@ +s0 , s1 { p0 : v0 ; p1 : v1 } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.3.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.3.l new file mode 100644 index 0000000..c1625d1 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.3.l @@ -0,0 +1 @@ +s0 , s1 { p0 : v0 ; p1 : v1 } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.3.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.3.p new file mode 100644 index 0000000..63cab6f --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.3.p @@ -0,0 +1,30 @@ +['ruleset', + ['selector', + ['simpleselector', + ['ident', 's0'], + ['s', ' ']], + ['delim'], + ['simpleselector', + ['s', ' '], + ['ident', 's1'], + ['s', ' ']]], + ['block', + ['s', ' '], + ['declaration', + ['property', + ['ident', 'p0'], + ['s', ' ']], + ['value', + ['s', ' '], + ['ident', 'v0'], + ['s', ' ']]], + ['decldelim'], + ['s', ' '], + ['declaration', + ['property', + ['ident', 'p1'], + ['s', ' ']], + ['value', + ['s', ' '], + ['ident', 'v1'], + ['s', ' ']]]]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.4.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.4.css new file mode 100644 index 0000000..805dfd6 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.4.css @@ -0,0 +1,4 @@ +.test { + filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/transparent-border.png',sizingMethod='scale'); + color:red +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.4.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.4.l new file mode 100644 index 0000000..805dfd6 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.4.l @@ -0,0 +1,4 @@ +.test { + filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/transparent-border.png',sizingMethod='scale'); + color:red +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.4.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.4.p new file mode 100644 index 0000000..e3569e8 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.4.p @@ -0,0 +1,25 @@ +['ruleset', + ['selector', + ['simpleselector', + ['clazz', + ['ident', 'test']], + ['s', ' ']]], + ['block', + ['s', ' + '], + ['filter', + ['property', + ['ident', 'filter']], + ['filterv', + ['progid', + ['raw', 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/transparent-border.png',sizingMethod='scale')']]]], + ['decldelim'], + ['s', ' + '], + ['declaration', + ['property', + ['ident', 'color']], + ['value', + ['ident', 'red'], + ['s', ' +']]]]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.5.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.5.css new file mode 100644 index 0000000..9175cf0 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.5.css @@ -0,0 +1,5 @@ +.test { + color:red; + filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/transparent-border.png',sizingMethod='scale') + progid:DXImageTransform.Microsoft.AlphaImageLoader(src='test.png',sizingMethod='test') +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.5.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.5.l new file mode 100644 index 0000000..9175cf0 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.5.l @@ -0,0 +1,5 @@ +.test { + color:red; + filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/transparent-border.png',sizingMethod='scale') + progid:DXImageTransform.Microsoft.AlphaImageLoader(src='test.png',sizingMethod='test') +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.5.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.5.p new file mode 100644 index 0000000..8b7accf --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/ruleset.s.5.p @@ -0,0 +1,29 @@ +['ruleset', + ['selector', + ['simpleselector', + ['clazz', + ['ident', 'test']], + ['s', ' ']]], + ['block', + ['s', ' + '], + ['declaration', + ['property', + ['ident', 'color']], + ['value', + ['ident', 'red']]], + ['decldelim'], + ['s', ' + '], + ['filter', + ['property', + ['ident', 'filter']], + ['filterv', + ['progid', + ['raw', 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/transparent-border.png',sizingMethod='scale')'], + ['s', ' + ']], + ['progid', + ['raw', 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src='test.png',sizingMethod='test')'], + ['s', ' +']]]]]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/value.color.ident.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/value.color.ident.0.css new file mode 100644 index 0000000..c4ce7dc --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/value.color.ident.0.css @@ -0,0 +1 @@ +s{p:yellow} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/value.color.ident.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/value.color.ident.0.l new file mode 100644 index 0000000..c4ce7dc --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/value.color.ident.0.l @@ -0,0 +1 @@ +s{p:yellow} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/value.color.ident.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/value.color.ident.1.css new file mode 100644 index 0000000..f605b83 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/value.color.ident.1.css @@ -0,0 +1 @@ +yellow{p:yellow} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/value.color.ident.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/value.color.ident.1.l new file mode 100644 index 0000000..f605b83 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_ruleset/value.color.ident.1.l @@ -0,0 +1 @@ +yellow{p:yellow} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_selector/selector.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_selector/selector.0.css new file mode 100644 index 0000000..91e7b5b --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_selector/selector.0.css @@ -0,0 +1 @@ +a,b diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_selector/selector.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_selector/selector.0.l new file mode 100644 index 0000000..91e7b5b --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_selector/selector.0.l @@ -0,0 +1 @@ +a,b diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_selector/selector.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_selector/selector.0.p new file mode 100644 index 0000000..57c64e0 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_selector/selector.0.p @@ -0,0 +1,6 @@ +['selector', + ['simpleselector', + ['ident', 'a']], + ['delim'], + ['simpleselector', + ['ident', 'b']]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_selector/selector.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_selector/selector.1.css new file mode 100644 index 0000000..f267438 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_selector/selector.1.css @@ -0,0 +1 @@ +a+b,c diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_selector/selector.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_selector/selector.1.l new file mode 100644 index 0000000..f267438 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_selector/selector.1.l @@ -0,0 +1 @@ +a+b,c diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_selector/selector.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_selector/selector.1.p new file mode 100644 index 0000000..45005d7 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_selector/selector.1.p @@ -0,0 +1,8 @@ +['selector', + ['simpleselector', + ['ident', 'a'], + ['combinator', '+'], + ['ident', 'b']], + ['delim'], + ['simpleselector', + ['ident', 'c']]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_shash/shash.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_shash/shash.0.css new file mode 100644 index 0000000..1d75cfd --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_shash/shash.0.css @@ -0,0 +1 @@ +#100 diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_shash/shash.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_shash/shash.0.l new file mode 100644 index 0000000..1d75cfd --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_shash/shash.0.l @@ -0,0 +1 @@ +#100 diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_shash/shash.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_shash/shash.0.p new file mode 100644 index 0000000..ae58eea --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_shash/shash.0.p @@ -0,0 +1 @@ +['shash', '100'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_shash/shash.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_shash/shash.1.css new file mode 100644 index 0000000..9b84363 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_shash/shash.1.css @@ -0,0 +1 @@ +#id diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_shash/shash.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_shash/shash.1.l new file mode 100644 index 0000000..9b84363 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_shash/shash.1.l @@ -0,0 +1 @@ +#id diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_shash/shash.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_shash/shash.1.p new file mode 100644 index 0000000..d7b0e43 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_shash/shash.1.p @@ -0,0 +1 @@ +['shash', 'id'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.0.css new file mode 100644 index 0000000..9daeafb --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.0.css @@ -0,0 +1 @@ +test diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.0.l new file mode 100644 index 0000000..9daeafb --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.0.l @@ -0,0 +1 @@ +test diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.0.p new file mode 100644 index 0000000..9073efa --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.0.p @@ -0,0 +1,2 @@ +['simpleselector', + ['ident', 'test']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.1.css new file mode 100644 index 0000000..960dd8a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.1.css @@ -0,0 +1 @@ +.test diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.1.l new file mode 100644 index 0000000..960dd8a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.1.l @@ -0,0 +1 @@ +.test diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.1.p new file mode 100644 index 0000000..03d907d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.1.p @@ -0,0 +1,3 @@ +['simpleselector', + ['clazz', + ['ident', 'test']]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.10.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.10.css new file mode 100644 index 0000000..d5eb6b4 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.10.css @@ -0,0 +1 @@ +a|b diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.10.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.10.l new file mode 100644 index 0000000..d5eb6b4 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.10.l @@ -0,0 +1 @@ +a|b diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.10.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.10.p new file mode 100644 index 0000000..1e7fea6 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.10.p @@ -0,0 +1,4 @@ +['simpleselector', + ['ident', 'a'], + ['namespace'], + ['ident', 'b']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.11.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.11.css new file mode 100644 index 0000000..5c5bdea --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.11.css @@ -0,0 +1 @@ +*|*:not(*) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.11.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.11.l new file mode 100644 index 0000000..5c5bdea --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.11.l @@ -0,0 +1 @@ +*|*:not(*) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.11.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.11.p new file mode 100644 index 0000000..4ac95bc --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.11.p @@ -0,0 +1,10 @@ +['simpleselector', + ['ident', '*'], + ['namespace'], + ['ident', '*'], + ['pseudoc', + ['funktion', + ['ident', 'not'], + ['functionBody', + ['simpleselector', + ['ident', '*']]]]]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.12.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.12.css new file mode 100644 index 0000000..29a3104 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.12.css @@ -0,0 +1 @@ +x:not([ABC]) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.12.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.12.l new file mode 100644 index 0000000..29a3104 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.12.l @@ -0,0 +1 @@ +x:not([ABC]) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.12.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.12.p new file mode 100644 index 0000000..92033ed --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.12.p @@ -0,0 +1,9 @@ +['simpleselector', + ['ident', 'x'], + ['pseudoc', + ['funktion', + ['ident', 'not'], + ['functionBody', + ['simpleselector', + ['attrib', + ['ident', 'ABC']]]]]]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.13.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.13.css new file mode 100644 index 0000000..7143260 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.13.css @@ -0,0 +1 @@ +:not(el.class-postfix) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.13.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.13.l new file mode 100644 index 0000000..7143260 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.13.l @@ -0,0 +1 @@ +:not(el.class-postfix) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.13.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.13.p new file mode 100644 index 0000000..c8f0294 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.13.p @@ -0,0 +1,9 @@ +['simpleselector', + ['pseudoc', + ['funktion', + ['ident', 'not'], + ['functionBody', + ['simpleselector', + ['ident', 'el'], + ['clazz', + ['ident', 'class-postfix']]]]]]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.2.css new file mode 100644 index 0000000..9f4e8d7 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.2.css @@ -0,0 +1 @@ +#test diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.2.l new file mode 100644 index 0000000..9f4e8d7 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.2.l @@ -0,0 +1 @@ +#test diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.2.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.2.p new file mode 100644 index 0000000..1847c6c --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.2.p @@ -0,0 +1,2 @@ +['simpleselector', + ['shash', 'test']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.3.css new file mode 100644 index 0000000..1397137 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.3.css @@ -0,0 +1 @@ +[a=b] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.3.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.3.l new file mode 100644 index 0000000..1397137 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.3.l @@ -0,0 +1 @@ +[a=b] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.3.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.3.p new file mode 100644 index 0000000..44bb8d4 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.3.p @@ -0,0 +1,5 @@ +['simpleselector', + ['attrib', + ['ident', 'a'], + ['attrselector', '='], + ['ident', 'b']]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.4.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.4.css new file mode 100644 index 0000000..63e0c9e --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.4.css @@ -0,0 +1 @@ +[a=b][c='d'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.4.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.4.l new file mode 100644 index 0000000..63e0c9e --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.4.l @@ -0,0 +1 @@ +[a=b][c='d'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.4.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.4.p new file mode 100644 index 0000000..e76fe78 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.4.p @@ -0,0 +1,9 @@ +['simpleselector', + ['attrib', + ['ident', 'a'], + ['attrselector', '='], + ['ident', 'b']], + ['attrib', + ['ident', 'c'], + ['attrselector', '='], + ['string', ''d'']]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.5.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.5.css new file mode 100644 index 0000000..b2901ea --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.5.css @@ -0,0 +1 @@ +a b diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.5.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.5.l new file mode 100644 index 0000000..b2901ea --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.5.l @@ -0,0 +1 @@ +a b diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.5.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.5.p new file mode 100644 index 0000000..e0bc731 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.5.p @@ -0,0 +1,4 @@ +['simpleselector', + ['ident', 'a'], + ['s', ' '], + ['ident', 'b']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.6.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.6.css new file mode 100644 index 0000000..94a54f3 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.6.css @@ -0,0 +1 @@ +a+b diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.6.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.6.l new file mode 100644 index 0000000..94a54f3 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.6.l @@ -0,0 +1 @@ +a+b diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.6.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.6.p new file mode 100644 index 0000000..cbc174d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.6.p @@ -0,0 +1,4 @@ +['simpleselector', + ['ident', 'a'], + ['combinator', '+'], + ['ident', 'b']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.7.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.7.css new file mode 100644 index 0000000..203db8d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.7.css @@ -0,0 +1 @@ +a>b diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.7.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.7.l new file mode 100644 index 0000000..203db8d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.7.l @@ -0,0 +1 @@ +a>b diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.7.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.7.p new file mode 100644 index 0000000..76b0eb2 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.7.p @@ -0,0 +1,4 @@ +['simpleselector', + ['ident', 'a'], + ['combinator', '>'], + ['ident', 'b']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.8.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.8.css new file mode 100644 index 0000000..bc2ea14 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.8.css @@ -0,0 +1 @@ +a~b diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.8.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.8.l new file mode 100644 index 0000000..bc2ea14 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.8.l @@ -0,0 +1 @@ +a~b diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.8.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.8.p new file mode 100644 index 0000000..a5cf739 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.8.p @@ -0,0 +1,4 @@ +['simpleselector', + ['ident', 'a'], + ['combinator', '~'], + ['ident', 'b']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.9.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.9.css new file mode 100644 index 0000000..2d5cb80 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.9.css @@ -0,0 +1 @@ +:nth-child(+3n-2) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.9.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.9.l new file mode 100644 index 0000000..2d5cb80 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.9.l @@ -0,0 +1 @@ +:nth-child(+3n-2) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.9.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.9.p new file mode 100644 index 0000000..26c708b --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.9.p @@ -0,0 +1,7 @@ +['simpleselector', + ['nthselector', + ['ident', 'nth-child'], + ['unary', '+'], + ['nth', '3n'], + ['unary', '-'], + ['nth', '2']]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.c.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.c.0.css new file mode 100644 index 0000000..34d6d9a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.c.0.css @@ -0,0 +1 @@ +a/*test*/b diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.c.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.c.0.l new file mode 100644 index 0000000..34d6d9a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.c.0.l @@ -0,0 +1 @@ +a/*test*/b diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.c.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.c.0.p new file mode 100644 index 0000000..e5d7dea --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.c.0.p @@ -0,0 +1,4 @@ +['simpleselector', + ['ident', 'a'], + ['comment', 'test'], + ['ident', 'b']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.c.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.c.1.css new file mode 100644 index 0000000..9bbf8c9 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.c.1.css @@ -0,0 +1 @@ +a/*test*/+/*test*/b diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.c.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.c.1.l new file mode 100644 index 0000000..9bbf8c9 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.c.1.l @@ -0,0 +1 @@ +a/*test*/+/*test*/b diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.c.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.c.1.p new file mode 100644 index 0000000..623b343 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.c.1.p @@ -0,0 +1,6 @@ +['simpleselector', + ['ident', 'a'], + ['comment', 'test'], + ['combinator', '+'], + ['comment', 'test'], + ['ident', 'b']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.c.2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.c.2.css new file mode 100644 index 0000000..315601f --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.c.2.css @@ -0,0 +1 @@ +a/*test*/>/*test*/b diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.c.2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.c.2.l new file mode 100644 index 0000000..315601f --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.c.2.l @@ -0,0 +1 @@ +a/*test*/>/*test*/b diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.c.2.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.c.2.p new file mode 100644 index 0000000..86762ef --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.c.2.p @@ -0,0 +1,6 @@ +['simpleselector', + ['ident', 'a'], + ['comment', 'test'], + ['combinator', '>'], + ['comment', 'test'], + ['ident', 'b']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.c.3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.c.3.css new file mode 100644 index 0000000..6334387 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.c.3.css @@ -0,0 +1 @@ +a/*test*/~/*test*/b diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.c.3.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.c.3.l new file mode 100644 index 0000000..6334387 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.c.3.l @@ -0,0 +1 @@ +a/*test*/~/*test*/b diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.c.3.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.c.3.p new file mode 100644 index 0000000..cdabf66 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.c.3.p @@ -0,0 +1,6 @@ +['simpleselector', + ['ident', 'a'], + ['comment', 'test'], + ['combinator', '~'], + ['comment', 'test'], + ['ident', 'b']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.c.4.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.c.4.css new file mode 100644 index 0000000..8f67d9c --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.c.4.css @@ -0,0 +1 @@ +a b + c > d ~ e diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.0.css new file mode 100644 index 0000000..5120076 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.0.css @@ -0,0 +1 @@ +a b diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.0.l new file mode 100644 index 0000000..5120076 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.0.l @@ -0,0 +1 @@ +a b diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.0.p new file mode 100644 index 0000000..8d143af --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.0.p @@ -0,0 +1,4 @@ +['simpleselector', + ['ident', 'a'], + ['s', ' '], + ['ident', 'b']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.1.css new file mode 100644 index 0000000..f078b71 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.1.css @@ -0,0 +1 @@ +a + b diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.1.l new file mode 100644 index 0000000..f078b71 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.1.l @@ -0,0 +1 @@ +a + b diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.1.p new file mode 100644 index 0000000..181eb7e --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.1.p @@ -0,0 +1,6 @@ +['simpleselector', + ['ident', 'a'], + ['s', ' '], + ['combinator', '+'], + ['s', ' '], + ['ident', 'b']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.2.css new file mode 100644 index 0000000..5f7ee22 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.2.css @@ -0,0 +1 @@ +a > b diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.2.l new file mode 100644 index 0000000..5f7ee22 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.2.l @@ -0,0 +1 @@ +a > b diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.2.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.2.p new file mode 100644 index 0000000..856692a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.2.p @@ -0,0 +1,6 @@ +['simpleselector', + ['ident', 'a'], + ['s', ' '], + ['combinator', '>'], + ['s', ' '], + ['ident', 'b']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.3.css new file mode 100644 index 0000000..2f72c7a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.3.css @@ -0,0 +1 @@ +a ~ b diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.3.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.3.l new file mode 100644 index 0000000..2f72c7a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.3.l @@ -0,0 +1 @@ +a ~ b diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.3.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.3.p new file mode 100644 index 0000000..4170cd3 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.3.p @@ -0,0 +1,6 @@ +['simpleselector', + ['ident', 'a'], + ['s', ' '], + ['combinator', '~'], + ['s', ' '], + ['ident', 'b']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.4.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.4.css new file mode 100644 index 0000000..8f67d9c --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.4.css @@ -0,0 +1 @@ +a b + c > d ~ e diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.4.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.4.l new file mode 100644 index 0000000..8f67d9c --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.4.l @@ -0,0 +1 @@ +a b + c > d ~ e diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.4.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.4.p new file mode 100644 index 0000000..418d7b4 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_simpleselector/simpleselector.s.4.p @@ -0,0 +1,16 @@ +['simpleselector', + ['ident', 'a'], + ['s', ' '], + ['ident', 'b'], + ['s', ' '], + ['combinator', '+'], + ['s', ' '], + ['ident', 'c'], + ['s', ' '], + ['combinator', '>'], + ['s', ' '], + ['ident', 'd'], + ['s', ' '], + ['combinator', '~'], + ['s', ' '], + ['ident', 'e']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_string/string.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_string/string.0.css new file mode 100644 index 0000000..9d40dd8 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_string/string.0.css @@ -0,0 +1 @@ +'test' diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_string/string.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_string/string.0.l new file mode 100644 index 0000000..9d40dd8 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_string/string.0.l @@ -0,0 +1 @@ +'test' diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_string/string.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_string/string.0.p new file mode 100644 index 0000000..72fd91a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_string/string.0.p @@ -0,0 +1 @@ +['string', ''test''] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_string/string.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_string/string.1.css new file mode 100644 index 0000000..8b8441b --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_string/string.1.css @@ -0,0 +1 @@ +"test" diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_string/string.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_string/string.1.l new file mode 100644 index 0000000..8b8441b --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_string/string.1.l @@ -0,0 +1 @@ +"test" diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_string/string.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_string/string.1.p new file mode 100644 index 0000000..3a31839 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_string/string.1.p @@ -0,0 +1 @@ +['string', '"test"'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_string/string.2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_string/string.2.css new file mode 100644 index 0000000..cc41b82 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_string/string.2.css @@ -0,0 +1 @@ +'te\'st' diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_string/string.2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_string/string.2.l new file mode 100644 index 0000000..cc41b82 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_string/string.2.l @@ -0,0 +1 @@ +'te\'st' diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_string/string.2.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_string/string.2.p new file mode 100644 index 0000000..d171148 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_string/string.2.p @@ -0,0 +1 @@ +['string', ''te\'st''] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_string/string.3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_string/string.3.css new file mode 100644 index 0000000..18c0649 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_string/string.3.css @@ -0,0 +1 @@ +"te\"st" diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_string/string.3.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_string/string.3.l new file mode 100644 index 0000000..18c0649 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_string/string.3.l @@ -0,0 +1 @@ +"te\"st" diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_string/string.3.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_string/string.3.p new file mode 100644 index 0000000..352be49 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_string/string.3.p @@ -0,0 +1 @@ +['string', '"te\"st"'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.attrib.string.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.attrib.string.test1.css new file mode 100644 index 0000000..0c8efe4 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.attrib.string.test1.css @@ -0,0 +1 @@ +*[title="test"] { p: v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.attrib.string.test2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.attrib.string.test2.css new file mode 100644 index 0000000..d91b5f4 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.attrib.string.test2.css @@ -0,0 +1 @@ +*[title='test'] { p: v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.colormark.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.colormark.test1.css new file mode 100644 index 0000000..4ae968d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.colormark.test1.css @@ -0,0 +1,8 @@ +.a { + color: #fff; + color: rgb(100,100,100); + color: rgba(100,100,100,100); + color: hsl(100,100,100); + color: hsla(100,100,100,100); + color: test; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part15.6.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part15.6.test1.css new file mode 100644 index 0000000..44a209a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part15.6.test1.css @@ -0,0 +1,11 @@ +a { + font-weight: bold +} + +b { + font-weight: normal +} + +c { + font-weight: bolder +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.2.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.2.test1.css new file mode 100644 index 0000000..c9f9d89 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.2.test1.css @@ -0,0 +1 @@ +h1 { margin: 0.5em } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.2.test10.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.2.test10.css new file mode 100644 index 0000000..daf3b19 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.2.test10.css @@ -0,0 +1,10 @@ +a { + b: (0.1em) (0.2ex) (0.3px) (0.4in) (0.5cm) (0.6mm) (0.7pt) (0.8px); + c: (000.001em) (000.002ex) (000.003px) (000.004in) (000.005cm) (000.006mm) (000.007pt) (000.008px); + d: (8.0em) (7.1ex) (6.2px) (5.3in) (4.4cm) (3.5mm) (2.6pt) (1.7px); + e: (0.0) (0.) (0.0000) (.0) (.000) (000); + f: (0.0em) (0em) (0%) (000%) (00.00%) (0.0000em) (000em) (.0em) (.000em); + g: (0.0px) (0px) (0.0000px) (000px) (.0px) (.000px); + h: (0.0s) (0s) (0.0000s) (000s) (.0s) (.000s) (0.2s) (010.01s); + i: (010.0px) (010.00); +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.2.test2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.2.test2.css new file mode 100644 index 0000000..7bf9802 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.2.test2.css @@ -0,0 +1 @@ +h1 { margin: 1ex } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.2.test3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.2.test3.css new file mode 100644 index 0000000..b497c66 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.2.test3.css @@ -0,0 +1 @@ +p { font-size: 12px } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.2.test4.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.2.test4.css new file mode 100644 index 0000000..2e8d268 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.2.test4.css @@ -0,0 +1 @@ +h1 { margin: 0.5in } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.2.test5.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.2.test5.css new file mode 100644 index 0000000..f9520ec --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.2.test5.css @@ -0,0 +1 @@ +h2 { line-height: 3cm } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.2.test6.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.2.test6.css new file mode 100644 index 0000000..912c54d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.2.test6.css @@ -0,0 +1 @@ +h3 { word-spacing: 4mm } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.2.test7.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.2.test7.css new file mode 100644 index 0000000..9d86e98 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.2.test7.css @@ -0,0 +1 @@ +h4 { font-size: 12pt } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.2.test8.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.2.test8.css new file mode 100644 index 0000000..285d27e --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.2.test8.css @@ -0,0 +1 @@ +h4 { font-size: 1pc } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.2.test9.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.2.test9.css new file mode 100644 index 0000000..c07f56a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.2.test9.css @@ -0,0 +1,10 @@ +a { + b: 0.1em 0.2ex 0.3px 0.4in 0.5cm 0.6mm 0.7pt 0.8px; + c: 000.001em 000.002ex 000.003px 000.004in 000.005cm 000.006mm 000.007pt 000.008px; + d: 8.0em 7.1ex 6.2px 5.3in 4.4cm 3.5mm 2.6pt 1.7px; + e: 0.0 0. 0.0000 .0 .000 000; + f: 0.0em 0em 0% 000% 00.00% 0.0000em 000em .0em .000em; + g: 0.0px 0px 0.0000px 000px .0px .000px; + h: 0.0s 0s 0.0000s 000s .0s .000s 0.2s 010.01s; + i: 010.0px 010.00; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.4.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.4.test1.css new file mode 100644 index 0000000..5c2e91c --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.4.test1.css @@ -0,0 +1,2 @@ +@import url(test.gif); +E { p: url(test.gif) } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.4.test2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.4.test2.css new file mode 100644 index 0000000..a054c1b --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.4.test2.css @@ -0,0 +1,2 @@ +@import url(a/test.gif); +E { p: url(a/test.gif) } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.4.test3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.4.test3.css new file mode 100644 index 0000000..dac0ac3 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.4.test3.css @@ -0,0 +1,2 @@ +@import url(../a/b/test.gif); +E { p: url(../a/b/test.gif) } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.4.test4.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.4.test4.css new file mode 100644 index 0000000..4b7242d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.4.test4.css @@ -0,0 +1,2 @@ +@import url(http://www.a.com/test.gif); +E { p: url(http://www.a.com/test.gif) } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.4.test5.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.4.test5.css new file mode 100644 index 0000000..281aae4 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.4.test5.css @@ -0,0 +1,2 @@ +@import url( test.gif ); +E { p: url( test.gif ) } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.4.test6.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.4.test6.css new file mode 100644 index 0000000..527bd4c --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.4.test6.css @@ -0,0 +1,2 @@ +@import url("test.gif"); +E { p: url("test.gif") } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.4.test7.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.4.test7.css new file mode 100644 index 0000000..ca38f15 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.4.test7.css @@ -0,0 +1,2 @@ +@import url(\\"test\\".gif); +E { p: url(\\"test\\".gif) } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.4.test8.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.4.test8.css new file mode 100644 index 0000000..b831210 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.4.test8.css @@ -0,0 +1,2 @@ +@import url(http://a.com/?x+y+\"+#blah\'test); +E { p: url(http://a.com/?x+y+\"+#blah\'test) } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.4.test9.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.4.test9.css new file mode 100644 index 0000000..dc3a532 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.4.test9.css @@ -0,0 +1,2 @@ +@import url(0.0); +E { p: url(0.0) } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.6.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.6.test1.css new file mode 100644 index 0000000..781869d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.6.test1.css @@ -0,0 +1 @@ +em { color: #f00 } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.6.test2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.6.test2.css new file mode 100644 index 0000000..1169f3d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.6.test2.css @@ -0,0 +1 @@ +em { color: #ff0000 } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.6.test3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.6.test3.css new file mode 100644 index 0000000..626f36e --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.6.test3.css @@ -0,0 +1 @@ +em { color: rgb(255,0,0) } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.6.test4.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.6.test4.css new file mode 100644 index 0000000..69bae85 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.6.test4.css @@ -0,0 +1 @@ +em { color: rgb(100%, 0%, 0%) } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.6.test5.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.6.test5.css new file mode 100644 index 0000000..fd0a88f --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.6.test5.css @@ -0,0 +1 @@ +em { color: rgb(255,-10,0) } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.6.test6.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.6.test6.css new file mode 100644 index 0000000..c947752 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.6.test6.css @@ -0,0 +1,25 @@ +a { + color0 : yellow 'yellow'; + color1 : fuchsia 'fuchsia'; + color2 : white 'white'; + color3 : black 'black'; + color4 : blue 'blue'; + color5 : aqua 'aqua'; + color6 : #f00 '#f00'; + color7 : #c0c0c0 '#c0c0c0'; + color8 : #808080 '#808080'; + color9 : #800000 '#800000'; + color10 : #800080 '#800080'; + color11 : #008000 '#008000'; + color12 : #808000 '#808000'; + color13 : #000080 '#000080'; + color14 : #008080 '#008080'; + color15 : YELLOW 'yellow'; + color16 : FUCHSIA 'fuchsia'; + color17 : WHITE 'white'; + color18 : BLACK 'black'; + color19 : BLUE 'blue'; + color20 : AQUA 'aqua'; + color21 : #F00 '#f00'; + color22 : #C0C0C0 '#c0c0c0'; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.6.test7.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.6.test7.css new file mode 100644 index 0000000..546cea8 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.6.test7.css @@ -0,0 +1,18 @@ +color { + a0 : #000000; + a1 : #111111; + a2 : #222222; + a3 : #333333; + a4 : #444444; + a5 : #555555; + a6 : #666666; + a7 : #777777; + a8 : #888888; + a9 : #999999; + a10 : #aaaaaa; + a11 : #bbbbbb; + a12 : #cccccc; + a13 : #dddddd; + a14 : #eeeeee; + a15 : #ffffff; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.6.test8.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.6.test8.css new file mode 100644 index 0000000..5ec9452 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.6.test8.css @@ -0,0 +1,14 @@ +a { + color0: rgb(0, 0, 0); + color1: rgb(0, 0, 255); + color2: rgb(0, 255, 0); + color3: rgb(255, 0, 0); + color4: rgb(0, 255, 255); + color5: rgb(255, 255, 0); + color6: rgb(255, 0, 255); + color7: rgb(255, 255, 255); + color8: rgb(128, 128, 128); + color9: rgb(192, 192, 192); + color10: rgb(1, 1, 1); + color11: rgb(256, 256, 256); +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.7.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.7.test1.css new file mode 100644 index 0000000..fc27b10 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.7.test1.css @@ -0,0 +1 @@ +a { b : "this is a 'string'" } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.7.test2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.7.test2.css new file mode 100644 index 0000000..08a0ea6 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.7.test2.css @@ -0,0 +1 @@ +a { b : "this is a \"string\"" } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.7.test3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.7.test3.css new file mode 100644 index 0000000..96b4da0 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.7.test3.css @@ -0,0 +1 @@ +a { b : 'this is a "string"' } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.7.test4.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.7.test4.css new file mode 100644 index 0000000..0a252e7 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.7.test4.css @@ -0,0 +1 @@ +a { b : 'this is a \'string\'' } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.7.test5.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.7.test5.css new file mode 100644 index 0000000..249f657 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.7.test5.css @@ -0,0 +1,4 @@ +a { + b : "abcd\ +efg" +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.7.test6.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.7.test6.css new file mode 100644 index 0000000..bb21886 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.3.7.test6.css @@ -0,0 +1,4 @@ +a[b="ab cd\ +efg"] { + b : c +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.4.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.4.test1.css new file mode 100644 index 0000000..867a47d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.4.test1.css @@ -0,0 +1 @@ +@charset "ISO-8859-1"; diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.4.test2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.4.test2.css new file mode 100644 index 0000000..b03c340 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.4.test2.css @@ -0,0 +1,2 @@ + @charset "test"; +E { p: v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.4.test3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.4.test3.css new file mode 100644 index 0000000..77f1d3c --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part4.4.test3.css @@ -0,0 +1,2 @@ +@charset "test0"; +@charset "test1"; diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part6.3.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part6.3.test1.css new file mode 100644 index 0000000..26e625e --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part6.3.test1.css @@ -0,0 +1 @@ +@import "mystyle.css"; diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part6.3.test2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part6.3.test2.css new file mode 100644 index 0000000..3104f5c --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part6.3.test2.css @@ -0,0 +1 @@ +@import url("mystyle.css"); diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part6.3.test3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part6.3.test3.css new file mode 100644 index 0000000..621c165 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part6.3.test3.css @@ -0,0 +1 @@ +@import url("fineprint.css") print; diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part6.3.test4.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part6.3.test4.css new file mode 100644 index 0000000..a49dcdb --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part6.3.test4.css @@ -0,0 +1 @@ +@import url("bluish.css") projection, tv; diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part6.3.test5.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part6.3.test5.css new file mode 100644 index 0000000..03e859e --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part6.3.test5.css @@ -0,0 +1,2 @@ +@import "mystyle.css"; +@import "mystyle.css"; diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part6.3.test6.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part6.3.test6.css new file mode 100644 index 0000000..67a971d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part6.3.test6.css @@ -0,0 +1,5 @@ +@import "mystyle1.css"; +a { p0: v } +@import "mystyle2.css"; +b { p1: v } +@import "mystyle1.css"; diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part6.4.2.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part6.4.2.test1.css new file mode 100644 index 0000000..c1c0412 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part6.4.2.test1.css @@ -0,0 +1 @@ +a { p: v !important } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part6.4.2.test2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part6.4.2.test2.css new file mode 100644 index 0000000..8552eae --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part6.4.2.test2.css @@ -0,0 +1,4 @@ +a { + p: v0 !important; + p: v +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part6.4.2.test3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part6.4.2.test3.css new file mode 100644 index 0000000..7c983d6 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part6.4.2.test3.css @@ -0,0 +1,9 @@ +a { + p0: v0 !important; + p1: v1 +} + +a { + p0: v1; + p1: v2 !important +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part7.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part7.test1.css new file mode 100644 index 0000000..dbaacf6 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part7.test1.css @@ -0,0 +1 @@ +@media screen { E { p: v } } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part7.test2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part7.test2.css new file mode 100644 index 0000000..40af7d6 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css21.part7.test2.css @@ -0,0 +1 @@ +@media screen, 3D { E { p: v } } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test1.c.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test1.c.css new file mode 100644 index 0000000..2b2f285 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test1.c.css @@ -0,0 +1 @@ +/*test*/*/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test1.css new file mode 100644 index 0000000..aafecaf --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test1.css @@ -0,0 +1 @@ +* { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test10.c.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test10.c.css new file mode 100644 index 0000000..6f1f95d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test10.c.css @@ -0,0 +1 @@ +/*test*/E:root/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test10.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test10.css new file mode 100644 index 0000000..dff74bd --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test10.css @@ -0,0 +1 @@ +E:root { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test11.c.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test11.c.css new file mode 100644 index 0000000..4c1e835 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test11.c.css @@ -0,0 +1 @@ +/*test*/E:nth-child(/*test*/n/*test*/)/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test11.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test11.css new file mode 100644 index 0000000..e4e4e60 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test11.css @@ -0,0 +1 @@ +E:nth-child( n ) { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test12.c.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test12.c.css new file mode 100644 index 0000000..a45e032 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test12.c.css @@ -0,0 +1 @@ +/*test*/E:nth-last-child(/*test*/n/*test*/)/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test12.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test12.css new file mode 100644 index 0000000..b7286ea --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test12.css @@ -0,0 +1 @@ +E:nth-last-child( n ) { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test13.c.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test13.c.css new file mode 100644 index 0000000..fdbaad9 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test13.c.css @@ -0,0 +1 @@ +/*test*/E:nth-of-type(/*test*/n/*test*/)/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test13.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test13.css new file mode 100644 index 0000000..031ac2e --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test13.css @@ -0,0 +1 @@ +E:nth-of-type( n ) { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test14.c.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test14.c.css new file mode 100644 index 0000000..c5a888a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test14.c.css @@ -0,0 +1 @@ +/*test*/E:nth-last-of-type(/*test*/n/*test*/)/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test14.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test14.css new file mode 100644 index 0000000..db5e4a6 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test14.css @@ -0,0 +1 @@ +E:nth-last-of-type( n ) { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test15.c.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test15.c.css new file mode 100644 index 0000000..322c9b5 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test15.c.css @@ -0,0 +1 @@ +/*test*/E:first-child/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test15.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test15.css new file mode 100644 index 0000000..0187850 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test15.css @@ -0,0 +1 @@ +E:first-child { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test16.c.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test16.c.css new file mode 100644 index 0000000..0cff5aa --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test16.c.css @@ -0,0 +1 @@ +/*test*/E:last-child/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test16.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test16.css new file mode 100644 index 0000000..1a5ec6a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test16.css @@ -0,0 +1 @@ +E:last-child { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test17.c.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test17.c.css new file mode 100644 index 0000000..2fcfb58 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test17.c.css @@ -0,0 +1 @@ +/*test*/E:first-of-type/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test17.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test17.css new file mode 100644 index 0000000..829f38c --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test17.css @@ -0,0 +1 @@ +E:first-of-type { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test18.c.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test18.c.css new file mode 100644 index 0000000..88a1d33 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test18.c.css @@ -0,0 +1 @@ +/*test*/E:last-of-type/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test18.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test18.css new file mode 100644 index 0000000..d66ba8b --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test18.css @@ -0,0 +1 @@ +E:last-of-type { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test19.c.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test19.c.css new file mode 100644 index 0000000..4759339 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test19.c.css @@ -0,0 +1 @@ +/*test*/E:only-child/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test19.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test19.css new file mode 100644 index 0000000..c6d7ce8 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test19.css @@ -0,0 +1 @@ +E:only-child { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test2.c.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test2.c.css new file mode 100644 index 0000000..f3cc32c --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test2.c.css @@ -0,0 +1 @@ +/*test*/E/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test2.css new file mode 100644 index 0000000..582dba9 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test2.css @@ -0,0 +1 @@ +E { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test20.c.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test20.c.css new file mode 100644 index 0000000..94b2637 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test20.c.css @@ -0,0 +1 @@ +/*test*/E:only-of-type/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test20.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test20.css new file mode 100644 index 0000000..a1af662 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test20.css @@ -0,0 +1 @@ +E:only-of-type { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test21.c.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test21.c.css new file mode 100644 index 0000000..53da05d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test21.c.css @@ -0,0 +1 @@ +/*test*/E:empty/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test21.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test21.css new file mode 100644 index 0000000..b296553 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test21.css @@ -0,0 +1 @@ +E:empty { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test22.c.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test22.c.css new file mode 100644 index 0000000..3ae2ea7 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test22.c.css @@ -0,0 +1 @@ +/*test*/E:link/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test22.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test22.css new file mode 100644 index 0000000..d51e038 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test22.css @@ -0,0 +1 @@ +E:link { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test23.c.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test23.c.css new file mode 100644 index 0000000..56cb610 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test23.c.css @@ -0,0 +1 @@ +/*test*/E:visited/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test23.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test23.css new file mode 100644 index 0000000..b54866a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test23.css @@ -0,0 +1 @@ +E:visited { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test24.c.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test24.c.css new file mode 100644 index 0000000..e3b21f0 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test24.c.css @@ -0,0 +1 @@ +/*test*/E:active/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test24.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test24.css new file mode 100644 index 0000000..f2adff8 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test24.css @@ -0,0 +1 @@ +E:active { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test25.c.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test25.c.css new file mode 100644 index 0000000..4f4e0c7 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test25.c.css @@ -0,0 +1 @@ +/*test*/E:hover/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test25.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test25.css new file mode 100644 index 0000000..4220571 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test25.css @@ -0,0 +1 @@ +E:hover { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test26.c.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test26.c.css new file mode 100644 index 0000000..5335f58 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test26.c.css @@ -0,0 +1 @@ +/*test*/E:focus/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test26.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test26.css new file mode 100644 index 0000000..46251fc --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test26.css @@ -0,0 +1 @@ +E:focus { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test27.c.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test27.c.css new file mode 100644 index 0000000..dce7696 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test27.c.css @@ -0,0 +1 @@ +/*test*/E:target/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test27.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test27.css new file mode 100644 index 0000000..1a0627f --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test27.css @@ -0,0 +1 @@ +E:target { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test28.c.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test28.c.css new file mode 100644 index 0000000..ea219f7 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test28.c.css @@ -0,0 +1 @@ +/*test*/E:lang(/*test*/fr/*test*/)/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test28.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test28.css new file mode 100644 index 0000000..e8119c3 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test28.css @@ -0,0 +1 @@ +E:lang( fr ) { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test29.c.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test29.c.css new file mode 100644 index 0000000..b15849d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test29.c.css @@ -0,0 +1 @@ +/*test*/E:enabled/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test29.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test29.css new file mode 100644 index 0000000..601fee4 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test29.css @@ -0,0 +1 @@ +E:enabled { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test3.c.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test3.c.css new file mode 100644 index 0000000..2bb1901 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test3.c.css @@ -0,0 +1 @@ +/*test*/E[/*test*/foo/*test*/]/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test3.css new file mode 100644 index 0000000..9566506 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test3.css @@ -0,0 +1 @@ +E[ foo ] { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test30.c.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test30.c.css new file mode 100644 index 0000000..c0b9cd4 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test30.c.css @@ -0,0 +1 @@ +/*test*/E:disabled/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test30.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test30.css new file mode 100644 index 0000000..c132503 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test30.css @@ -0,0 +1 @@ +E:disabled { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test31.c.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test31.c.css new file mode 100644 index 0000000..fbb0166 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test31.c.css @@ -0,0 +1 @@ +/*test*/E:checked/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test31.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test31.css new file mode 100644 index 0000000..819a3ff --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test31.css @@ -0,0 +1 @@ +E:checked { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test32.c.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test32.c.css new file mode 100644 index 0000000..281cff1 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test32.c.css @@ -0,0 +1 @@ +/*test*/E::first-line/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test32.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test32.css new file mode 100644 index 0000000..78df533 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test32.css @@ -0,0 +1 @@ +E::first-line { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test33.c.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test33.c.css new file mode 100644 index 0000000..8d2c86f --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test33.c.css @@ -0,0 +1 @@ +/*test*/E::first-letter/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test33.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test33.css new file mode 100644 index 0000000..8aa1c1c --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test33.css @@ -0,0 +1 @@ +E::first-letter { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test34.c.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test34.c.css new file mode 100644 index 0000000..f3ee46a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test34.c.css @@ -0,0 +1 @@ +/*test*/E::before/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test34.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test34.css new file mode 100644 index 0000000..be8e0f2 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test34.css @@ -0,0 +1 @@ +E::before { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test35.c.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test35.c.css new file mode 100644 index 0000000..047587a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test35.c.css @@ -0,0 +1 @@ +/*test*/E::after/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test35.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test35.css new file mode 100644 index 0000000..495cdc4 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test35.css @@ -0,0 +1 @@ +E::after { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test36.c.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test36.c.css new file mode 100644 index 0000000..442dbc9 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test36.c.css @@ -0,0 +1 @@ +/*test*/E.warning/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test36.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test36.css new file mode 100644 index 0000000..97d13bb --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test36.css @@ -0,0 +1 @@ +E.warning { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test37.c.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test37.c.css new file mode 100644 index 0000000..89f7ac1 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test37.c.css @@ -0,0 +1 @@ +/*test*/E#myid/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test37.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test37.css new file mode 100644 index 0000000..d8cd8ef --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test37.css @@ -0,0 +1 @@ +E#myid { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test38.c.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test38.c.css new file mode 100644 index 0000000..5d04e3f --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test38.c.css @@ -0,0 +1 @@ +/*test*/E:not(/*test*/s/*test*/)/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test38.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test38.css new file mode 100644 index 0000000..ca457a5 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test38.css @@ -0,0 +1 @@ +E:not( s ) { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test39.c.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test39.c.css new file mode 100644 index 0000000..89d4a59 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test39.c.css @@ -0,0 +1 @@ +/*test*/E /*test*/F/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test39.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test39.css new file mode 100644 index 0000000..4623bce --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test39.css @@ -0,0 +1 @@ +E F { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test4.c.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test4.c.css new file mode 100644 index 0000000..38ff944 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test4.c.css @@ -0,0 +1 @@ +/*test*/E[/*test*/foo/*test*/=/*test*/"b ar"/*test*/]/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test4.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test4.css new file mode 100644 index 0000000..826ff22 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test4.css @@ -0,0 +1 @@ +E[ foo = "b ar" ] { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test40.c.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test40.c.css new file mode 100644 index 0000000..4751975 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test40.c.css @@ -0,0 +1 @@ +/*test*/E/*test*/>/*test*/F/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test40.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test40.css new file mode 100644 index 0000000..c6a3d4c --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test40.css @@ -0,0 +1 @@ +E > F { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test41.c.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test41.c.css new file mode 100644 index 0000000..8d30a28 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test41.c.css @@ -0,0 +1 @@ +/*test*/E/*test*/+/*test*/F/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test41.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test41.css new file mode 100644 index 0000000..fbcc4dc --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test41.css @@ -0,0 +1 @@ +E + F { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test42.c.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test42.c.css new file mode 100644 index 0000000..ba7468d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test42.c.css @@ -0,0 +1 @@ +/*test*/E/*test*/~/*test*/F/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test42.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test42.css new file mode 100644 index 0000000..60e98ad --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test42.css @@ -0,0 +1 @@ +E ~ F { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test5.c.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test5.c.css new file mode 100644 index 0000000..39d2618 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test5.c.css @@ -0,0 +1 @@ +/*test*/E[/*test*/foo/*test*/~=/*test*/"b ar"/*test*/]/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test5.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test5.css new file mode 100644 index 0000000..fa0f2be --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test5.css @@ -0,0 +1 @@ +E[ foo ~= "b ar" ] { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test6.c.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test6.c.css new file mode 100644 index 0000000..3679c9e --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test6.c.css @@ -0,0 +1 @@ +/*test*/E[/*test*/foo/*test*/^=/*test*/"b ar"/*test*/]/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test6.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test6.css new file mode 100644 index 0000000..dd9bf08 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test6.css @@ -0,0 +1 @@ +E[ foo ^= "b ar" ] { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test7.c.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test7.c.css new file mode 100644 index 0000000..2b6bd15 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test7.c.css @@ -0,0 +1 @@ +/*test*/E[/*test*/foo/*test*/$=/*test*/"b ar"/*test*/]/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test7.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test7.css new file mode 100644 index 0000000..3e4ddb9 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test7.css @@ -0,0 +1 @@ +E[ foo $= "b ar" ] { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test8.c.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test8.c.css new file mode 100644 index 0000000..f4006cd --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test8.c.css @@ -0,0 +1 @@ +/*test*/E[/*test*/foo/*test*/*=/*test*/"b ar"/*test*/]/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test8.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test8.css new file mode 100644 index 0000000..3e8b324 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test8.css @@ -0,0 +1 @@ +E[ foo *= "b ar" ] { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test9.c.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test9.c.css new file mode 100644 index 0000000..6430c0a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test9.c.css @@ -0,0 +1 @@ +/*test*/E[/*test*/foo/*test*/|=/*test*/"e n"/*test*/]/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test9.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test9.css new file mode 100644 index 0000000..69239dc --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.css3.selectors.part2.test9.css @@ -0,0 +1 @@ +E[ foo |= "e n" ] { p : v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.dont.background.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.dont.background.test1.css new file mode 100644 index 0000000..a329dea --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.dont.background.test1.css @@ -0,0 +1,5 @@ +.a { + background-color: green; + color: red; + background: gray +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.dont.background.test2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.dont.background.test2.css new file mode 100644 index 0000000..c83aee5 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.dont.background.test2.css @@ -0,0 +1,12 @@ +.a { + background-color: green; + color: red; + background: black +} +.b { + p: v +} +.a { + background: gray; + background-url: url("test") +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.dont.background.test3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.dont.background.test3.css new file mode 100644 index 0000000..a6798b8 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.dont.background.test3.css @@ -0,0 +1,11 @@ +.a { + background: -webkit-gradient(linear, 0 0, 0 100%, from(rgba(0,0,0,0)), to(rgba(0,0,0,1))); + background: -webkit-linear-gradient(top,rgba(0,0,0,0),rgba(0,0,0,1)); + background: -moz-linear-gradient(top,rgba(0,0,0,0),rgba(0,0,0,1)); + background: -o-linear-gradient(top,rgba(0,0,0,0),rgba(0,0,0,1)); + background: linear-gradient(top,rgba(0,0,0,0),rgba(0,0,0,1)); +} +.b { + background: #FFF; + background: rgba(255,255,255,.5); +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.dont.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.dont.test1.css new file mode 100644 index 0000000..72b7875 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.dont.test1.css @@ -0,0 +1,8 @@ +.a, .b { + color: black; + font-weight: 600 +} + +.b { + color: white +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.initial.background.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.initial.background.test1.css new file mode 100644 index 0000000..14466ad --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.initial.background.test1.css @@ -0,0 +1,9 @@ +.a { + background: none +} +.b { + background: none center +} +.c { + background: url("test.png") transparent none repeat scroll +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.initial.font.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.initial.font.test1.css new file mode 100644 index 0000000..ce33b2f --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.initial.font.test1.css @@ -0,0 +1,12 @@ +.a { + font: normal normal 600 9px/normal Charcoal; +} +.b { + font: normal normal 500 medium/normal Charcoal; +} +.c { + font: normal normal 400 medium Charcoal; +} +.d { + font: normal normal 500 medium/10px Charcoal; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.initial.font.test1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.initial.font.test1.l new file mode 100644 index 0000000..ce33b2f --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.initial.font.test1.l @@ -0,0 +1,12 @@ +.a { + font: normal normal 600 9px/normal Charcoal; +} +.b { + font: normal normal 500 medium/normal Charcoal; +} +.c { + font: normal normal 400 medium Charcoal; +} +.d { + font: normal normal 500 medium/10px Charcoal; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.mess.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.mess.test1.css new file mode 100644 index 0000000..68ea245 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.mess.test1.css @@ -0,0 +1,7 @@ + /* test */ + +.test /* test */ { + /* test */ color /*test*/ : /* test */ 1em /*test*/ ; /*test*/ +} + + /* test */ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.mess.test2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.mess.test2.css new file mode 100644 index 0000000..51e772d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.mess.test2.css @@ -0,0 +1,17 @@ +.empty {} +.a, .a { + padding: 1px; + color: red; + color: red +} +.b { + color: red; + margin-top: 1px; + padding: 2px +} +.b { + margin: 2px +} +.c { + margin: 2px +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.mess.test3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.mess.test3.css new file mode 100644 index 0000000..6185c1d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.mess.test3.css @@ -0,0 +1,12 @@ +// /* +// .a { color: rgb(255, 255, 255) } + +.a { color: red } + +/*test*/ +// */ +/*test*/ + +.b { color: red } + +// something strange diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.mess.test3.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.mess.test3.l new file mode 100644 index 0000000..6185c1d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.mess.test3.l @@ -0,0 +1,12 @@ +// /* +// .a { color: rgb(255, 255, 255) } + +.a { color: red } + +/*test*/ +// */ +/*test*/ + +.b { color: red } + +// something strange diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.background.test3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.background.test3.css new file mode 100644 index 0000000..812753f --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.background.test3.css @@ -0,0 +1,4 @@ +a { + background-size: 100%; + background: gray +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.empty.atrule.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.empty.atrule.test1.css new file mode 100644 index 0000000..0ac900c --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.empty.atrule.test1.css @@ -0,0 +1,3 @@ +.a { p: v } +@test x y {} +.b { p: v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.empty.atrule.test2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.empty.atrule.test2.css new file mode 100644 index 0000000..4ab538b --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.empty.atrule.test2.css @@ -0,0 +1,7 @@ +.a { p: v } +@test x y { + .a { + /*test*/ + } +} +.b { p: v } diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.equal.selectors.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.equal.selectors.test1.css new file mode 100644 index 0000000..ffbaabf --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.equal.selectors.test1.css @@ -0,0 +1,3 @@ +a, a { + p: v +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.equal.selectors.test2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.equal.selectors.test2.css new file mode 100644 index 0000000..099a880 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.equal.selectors.test2.css @@ -0,0 +1,6 @@ +a, b { + p: v; +} +b, a { + p: v; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.equal.selectors.test3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.equal.selectors.test3.css new file mode 100644 index 0000000..8d90ecc --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.equal.selectors.test3.css @@ -0,0 +1,9 @@ +c, a b, a b { + p0: v +} +a b, c, a b { + p1: v; +} +a b, a b, c { + p2: v; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.equal.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.equal.test1.css new file mode 100644 index 0000000..15f47e9 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.equal.test1.css @@ -0,0 +1,6 @@ +a { + p: v; +} +b { + p: v; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.equal.test2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.equal.test2.css new file mode 100644 index 0000000..764a07a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.equal.test2.css @@ -0,0 +1,9 @@ +a { + p: v; +} +b { + p: v; +} +c { + p: v; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.equal.test3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.equal.test3.css new file mode 100644 index 0000000..c368160 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.equal.test3.css @@ -0,0 +1,12 @@ +a { + p0: v; +} +a { + p1: v; +} +b { + p0: v; +} +b { + p1: v; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.equal.test4.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.equal.test4.css new file mode 100644 index 0000000..c86c3e4 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.equal.test4.css @@ -0,0 +1,12 @@ +a { + p0: v; +} +b { + p0: v; +} +a { + p1: v; +} +b { + p1: v; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.equal.test5.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.equal.test5.css new file mode 100644 index 0000000..9fd1b33 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.equal.test5.css @@ -0,0 +1,12 @@ +a { + p: v; +} +b { + p: v; +} +a { + p: v; +} +b { + p: v; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.equal.test6.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.equal.test6.css new file mode 100644 index 0000000..0b24c74 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.equal.test6.css @@ -0,0 +1,9 @@ +a { + p: v0; +} +b { + p: v1; +} +a { + p: v0; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.equal.test7.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.equal.test7.css new file mode 100644 index 0000000..0e78580 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.equal.test7.css @@ -0,0 +1,7 @@ +a,b { + p0: v; + p1: v; +} +b { + p0:v; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.filter.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.filter.test1.css new file mode 100644 index 0000000..18d76e3 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.filter.test1.css @@ -0,0 +1,7 @@ +.a { + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='x', sizingMethod="y"); +} + +.a { + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='y', sizingMethod="z"); +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.margin.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.margin.test1.css new file mode 100644 index 0000000..60320f7 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.margin.test1.css @@ -0,0 +1,5 @@ +a { + margin-top: 1; + color: red; + margin: 2 +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.margin.test2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.margin.test2.css new file mode 100644 index 0000000..4e0d0e3 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.margin.test2.css @@ -0,0 +1,12 @@ +a { + margin-top: 1; + color: red; + margin: 2 +} +b { + p: v +} +a { + margin: 3; + margin-left: 4 +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.margin.test3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.margin.test3.css new file mode 100644 index 0000000..8fb71ef --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.margin.test3.css @@ -0,0 +1,18 @@ +.a { + _margin-top: 1; + _margin: 2; + margin-top: 3; + margin: 4; +} +.b { + *margin-top: 5; + *margin: 6; + margin-top: 7; + margin: 8; +} +.c { + //margin-top: 9; + //margin: 10; + margin-top: 11; + margin: 12; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.merge.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.merge.test1.css new file mode 100644 index 0000000..74d52e8 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.merge.test1.css @@ -0,0 +1,7 @@ +a { + p0: v; + p1: v; +} +b { + p0: v; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.merge.test2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.merge.test2.css new file mode 100644 index 0000000..d75c324 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.merge.test2.css @@ -0,0 +1,7 @@ +a { + p0: v; +} +b { + p0: v; + p1: v; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.merge.test3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.merge.test3.css new file mode 100644 index 0000000..06d3510 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.merge.test3.css @@ -0,0 +1,10 @@ +a { + p0: v; +} +b { + p0: v; + p1: v; +} +c { + p1: v; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.merge.test4.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.merge.test4.css new file mode 100644 index 0000000..e6db993 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.merge.test4.css @@ -0,0 +1,10 @@ +a { + p0: v; +} +bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb { + p0: v; + p1: v; +} +c { + p1: v; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.padding.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.padding.test1.css new file mode 100644 index 0000000..f153878 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.padding.test1.css @@ -0,0 +1,5 @@ +a { + padding-top: 1; + color: red; + padding: 2 +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.padding.test2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.padding.test2.css new file mode 100644 index 0000000..f077e1a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.restructure.padding.test2.css @@ -0,0 +1,12 @@ +a { + padding-top: 1; + color: red; + padding: 2 +} +b { + p: v +} +a { + padding: 3; + padding-left: 4 +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.padding.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.padding.test1.css new file mode 100644 index 0000000..edccf1e --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.padding.test1.css @@ -0,0 +1,14 @@ +a { + margin-top: 1px; + margin-right: 2px; + color: red; + padding-bottom: 1px; + padding-left: 2px; +} +a { + margin-bottom: 3px; + margin-left: 4px; + z-index: 10; + padding-top: 3px; + padding-right: 4px; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.test1.css new file mode 100644 index 0000000..811f1d3 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.test1.css @@ -0,0 +1,12 @@ +a { + margin-top: 1px; +} +b { + margin-right: 2px; +} +c { + margin-bottom: 3px; +} +d { + margin-left: 4px; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.test2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.test2.css new file mode 100644 index 0000000..d27ad06 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.test2.css @@ -0,0 +1,5 @@ +a { + margin-top: 1px; + margin-right: 1px; + margin-bottom: 1px; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.test3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.test3.css new file mode 100644 index 0000000..fe3589e --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.test3.css @@ -0,0 +1,6 @@ +a { + margin-top: 1px; + margin-right: 1px; + margin-bottom: 1px; + margin-left: 1px; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.test4.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.test4.css new file mode 100644 index 0000000..9d750cf --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.test4.css @@ -0,0 +1,31 @@ +a { + margin-top: 1px; + margin-right: 2px; + margin-bottom: 3px; + margin-left: 4px; +} +b { + margin-top: 2px; + margin-right: 1px; + margin-bottom: 1px; + margin-left: 1px; +} +c { + margin-top: 2px; + margin-right: 2px; + margin-bottom: 1px; + margin-left: 1px; +} +d { + margin-top: 1px; + margin-right: 2px; + margin-bottom: 1px; + margin-left: 2px; +} +e { + margin: 5px; + margin-top: 1px; + margin-right: 2px; + margin-bottom: 3px; + margin-left: 4px; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.test5.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.test5.css new file mode 100644 index 0000000..d3b9072 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.test5.css @@ -0,0 +1,11 @@ +a { + margin-top: 1px; + margin-right: 2%; +} +b { + color: red; +} +a { + margin-bottom: auto; + margin-left: 0.00; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.test6.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.test6.css new file mode 100644 index 0000000..d501a03 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.test6.css @@ -0,0 +1,6 @@ +a { + margin-top: 0px !important; + margin-right: 1px !important; + margin-bottom: 2px !important; + margin-left: 3px !important; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.test7.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.test7.css new file mode 100644 index 0000000..fb2f74b --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.test7.css @@ -0,0 +1,6 @@ +a { + margin-top: .0; + margin-right: 0.0; + margin-bottom: 0px; + margin-left: 0 +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.unary.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.unary.test1.css new file mode 100644 index 0000000..d7ea1b0 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.unary.test1.css @@ -0,0 +1,12 @@ +a { + margin-top: -1px; +} +b { + margin-right: -2px; +} +c { + margin-bottom: -3px; +} +d { + margin-left: -4px; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.unary.test2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.unary.test2.css new file mode 100644 index 0000000..5c8893b --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.unary.test2.css @@ -0,0 +1,5 @@ +a { + margin-top: -1px; + margin-right: -1px; + margin-bottom: -1px; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.unary.test3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.unary.test3.css new file mode 100644 index 0000000..7dd2840 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.unary.test3.css @@ -0,0 +1,6 @@ +a { + margin-top: -1px; + margin-right: -1px; + margin-bottom: -1px; + margin-left: -1px; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.unary.test4.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.unary.test4.css new file mode 100644 index 0000000..b9d70d9 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.unary.test4.css @@ -0,0 +1,31 @@ +a { + margin-top: -1px; + margin-right: -2px; + margin-bottom: -3px; + margin-left: -4px; +} +b { + margin-top: -2px; + margin-right: -1px; + margin-bottom: -1px; + margin-left: -1px; +} +c { + margin-top: -2px; + margin-right: -2px; + margin-bottom: -1px; + margin-left: -1px; +} +d { + margin-top: -1px; + margin-right: -2px; + margin-bottom: -1px; + margin-left: -2px; +} +e { + margin: -5px; + margin-top: -1px; + margin-right: -2px; + margin-bottom: -3px; + margin-left: -4px; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.unary.test5.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.unary.test5.css new file mode 100644 index 0000000..9e614d0 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.unary.test5.css @@ -0,0 +1,11 @@ +a { + margin-top: -1px; + margin-right: -2%; +} +b { + color: red; +} +a { + margin-bottom: auto; + margin-left: -0.00; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.unary.test6.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.unary.test6.css new file mode 100644 index 0000000..8872e70 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.unary.test6.css @@ -0,0 +1,6 @@ +a { + margin-top: -0px !important; + margin-right: -1px !important; + margin-bottom: -2px !important; + margin-left: -3px !important; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.unary.test7.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.unary.test7.css new file mode 100644 index 0000000..8d05fc7 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.margin.unary.test7.css @@ -0,0 +1,6 @@ +a { + margin-top: -.0; + margin-right: -0.0; + margin-bottom: -0px; + margin-left: -0 +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.padding.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.padding.test1.css new file mode 100644 index 0000000..227dd6d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.padding.test1.css @@ -0,0 +1,12 @@ +a { + padding-top: 1px; +} +b { + padding-right: 2px; +} +c { + padding-bottom: 3px; +} +d { + padding-left: 4px; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.padding.test2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.padding.test2.css new file mode 100644 index 0000000..b6334f7 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.padding.test2.css @@ -0,0 +1,5 @@ +a { + padding-top: 1px; + padding-right: 1px; + padding-bottom: 1px; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.padding.test3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.padding.test3.css new file mode 100644 index 0000000..72872b3 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.padding.test3.css @@ -0,0 +1,6 @@ +a { + padding-top: 1px; + padding-right: 1px; + padding-bottom: 1px; + padding-left: 1px; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.padding.test4.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.padding.test4.css new file mode 100644 index 0000000..67ff76c --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.padding.test4.css @@ -0,0 +1,31 @@ +a { + padding-top: 1px; + padding-right: 2px; + padding-bottom: 3px; + padding-left: 4px; +} +b { + padding-top: 2px; + padding-right: 1px; + padding-bottom: 1px; + padding-left: 1px; +} +c { + padding-top: 2px; + padding-right: 2px; + padding-bottom: 1px; + padding-left: 1px; +} +d { + padding-top: 1px; + padding-right: 2px; + padding-bottom: 1px; + padding-left: 2px; +} +e { + padding: 5px; + padding-top: 1px; + padding-right: 2px; + padding-bottom: 3px; + padding-left: 4px; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.padding.test5.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.padding.test5.css new file mode 100644 index 0000000..2bef322 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.padding.test5.css @@ -0,0 +1,11 @@ +a { + padding-top: 1px; + padding-right: 2%; +} +b { + color: red; +} +a { + padding-bottom: auto; + padding-left: 0.00; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.padding.test6.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.padding.test6.css new file mode 100644 index 0000000..9de6c1c --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.padding.test6.css @@ -0,0 +1,6 @@ +a { + padding-top: 0px !important; + padding-right: 1px !important; + padding-bottom: 2px !important; + padding-left: 3px !important; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.padding.test7.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.padding.test7.css new file mode 100644 index 0000000..a2168f7 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.shorthand.padding.test7.css @@ -0,0 +1,6 @@ +a { + padding-top: .0; + padding-right: 0.0; + padding-bottom: 0px; + padding-left: 0 +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.simpleselector.test11.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.simpleselector.test11.css new file mode 100644 index 0000000..50986bb --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/compress.simpleselector.test11.css @@ -0,0 +1,3 @@ +*|*:not( * ) { + p:v +} \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue111.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue111.test1.css new file mode 100644 index 0000000..2f2befa --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue111.test1.css @@ -0,0 +1 @@ +body:not([x|x]) {} \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue111.test1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue111.test1.l new file mode 100644 index 0000000..50fe29e --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue111.test1.l @@ -0,0 +1 @@ +body:not([x|x]) {} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue111.test1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue111.test1.p new file mode 100644 index 0000000..7dfb41b --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue111.test1.p @@ -0,0 +1,16 @@ +['stylesheet', + ['ruleset', + ['selector', + ['simpleselector', + ['ident', 'body'], + ['pseudoc', + ['funktion', + ['ident', 'not'], + ['functionBody', + ['simpleselector', + ['attrib', + ['ident', 'x'], + ['attrselector', '|'], + ['ident', 'x']]]]]], + ['s', ' ']]], + ['block']]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue16.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue16.test1.css new file mode 100644 index 0000000..b5ee7a9 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue16.test1.css @@ -0,0 +1,3 @@ +a { + background: url('img/image.png') no-repeat +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test1.css new file mode 100644 index 0000000..c93a1e3 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test1.css @@ -0,0 +1,6 @@ +a { + color:red +} +a:test { + color:red +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test10.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test10.css new file mode 100644 index 0000000..54b1823 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test10.css @@ -0,0 +1,6 @@ +a { + color: red +} +a, x:visited { + color: green +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test11.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test11.css new file mode 100644 index 0000000..4862541 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test11.css @@ -0,0 +1,6 @@ +a { + color: red +} +a, x:hover { + color: green +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test12.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test12.css new file mode 100644 index 0000000..c3e8893 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test12.css @@ -0,0 +1,6 @@ +a { + color: red +} +a, x:active { + color: green +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test13.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test13.css new file mode 100644 index 0000000..4d381ef --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test13.css @@ -0,0 +1,6 @@ +a { + color: red +} +a, x:first-letter { + color: green +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test14.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test14.css new file mode 100644 index 0000000..285d626 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test14.css @@ -0,0 +1,6 @@ +a { + color: red +} +a, x:first-line { + color: green +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test15.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test15.css new file mode 100644 index 0000000..de08945 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test15.css @@ -0,0 +1,6 @@ +a { + color: red +} +a, x::first-letter { + color: green +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test16.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test16.css new file mode 100644 index 0000000..d7667ed --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test16.css @@ -0,0 +1,6 @@ +a { + color: red +} +a, x::first-line { + color: green +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test17.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test17.css new file mode 100644 index 0000000..ac1bff5 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test17.css @@ -0,0 +1,6 @@ +x:before { + color: red +} +y:after { + color: red +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test18.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test18.css new file mode 100644 index 0000000..67cff7d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test18.css @@ -0,0 +1,6 @@ +a,x:before { + color: red +} +b,y:after { + color: red +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test19.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test19.css new file mode 100644 index 0000000..77da970 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test19.css @@ -0,0 +1,6 @@ +a:test, x:before { + color: red +} +a:test, y:after { + color: red +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test2.css new file mode 100644 index 0000000..ce804e4 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test2.css @@ -0,0 +1,6 @@ +a:test { + color:red +} +a:test { + color:red +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test20.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test20.css new file mode 100644 index 0000000..25b7042 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test20.css @@ -0,0 +1,6 @@ +a, b:test { + color: red +} +a, b:test, c:after { + color: red +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test21.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test21.css new file mode 100644 index 0000000..d98d7ce --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test21.css @@ -0,0 +1,3 @@ +:test0, :test1 { + color: red +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test22.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test22.css new file mode 100644 index 0000000..fb13567 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test22.css @@ -0,0 +1,9 @@ +a, x:after { + color: green +} +a { + color: red +} +a, y:before { + color: green +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test23.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test23.css new file mode 100644 index 0000000..e0eb045 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test23.css @@ -0,0 +1,6 @@ +x::first-letter, y:after { + color: red +} +x::first-letter, y:before { + color: red +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test24.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test24.css new file mode 100644 index 0000000..fe32799 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test24.css @@ -0,0 +1,7 @@ +a, x:test { + property: value0 +} + +a, b, x:test { + property: value1 +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test25.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test25.css new file mode 100644 index 0000000..03ff264 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test25.css @@ -0,0 +1,6 @@ +a, x:after + b { + color: red +} +c, x:before + d { + color: red +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test26.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test26.css new file mode 100644 index 0000000..473b908 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test26.css @@ -0,0 +1,6 @@ +a, x:test + b { + color: red +} +a, x:test + c { + color: green +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test27.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test27.css new file mode 100644 index 0000000..29971a8 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test27.css @@ -0,0 +1,6 @@ +a, b, x:test { + color: red +} +a, x:test { + color: green +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test28.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test28.css new file mode 100644 index 0000000..173fd83 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test28.css @@ -0,0 +1,9 @@ +a { + color: red +} +a, :b { + color: red +} +a, :b, :c { + color: red +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test29.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test29.css new file mode 100644 index 0000000..300b4b8 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test29.css @@ -0,0 +1,9 @@ +a, :b, :c { + color: red +} +a, :b { + color: green +} +:c, a, :b { + color: blue +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test3.css new file mode 100644 index 0000000..18d7ac6 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test3.css @@ -0,0 +1,7 @@ +.my { + color: red +} + +.my, x:-vendor-pseudo { + color: green +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test30.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test30.css new file mode 100644 index 0000000..c88efec --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test30.css @@ -0,0 +1,12 @@ +a { + margin-top: 1px; + margin-right: 1px; + margin-bottom: 1px; + margin-left: 1px; +} +a, :b { + margin-top: 2px; + margin-right: 2px; + margin-bottom: 2px; + margin-left: 2px; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test31.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test31.css new file mode 100644 index 0000000..e88fe33 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test31.css @@ -0,0 +1,8 @@ +a, :b { + margin-top: 1px; + margin-right: 1px; +} +a, :b { + margin-bottom: 1px; + margin-left: 1px; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test4.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test4.css new file mode 100644 index 0000000..d3a3ab9 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test4.css @@ -0,0 +1,7 @@ +a:test { + color: red; + property0: test; +} +a:test { + property1: test +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test5.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test5.css new file mode 100644 index 0000000..0fea456 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test5.css @@ -0,0 +1,6 @@ +a, b:test { + color: red +} +b:test, a { + border: none +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test6.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test6.css new file mode 100644 index 0000000..95f917a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test6.css @@ -0,0 +1,10 @@ +:test { + color: red +} +a { + color: green +} +:test { + color: blue; + border: none +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test7.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test7.css new file mode 100644 index 0000000..ea84f83 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test7.css @@ -0,0 +1,6 @@ +a { + color: red +} +a, x:nth-child(2n+1) { + color: green +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test8.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test8.css new file mode 100644 index 0000000..d9f9dee --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test8.css @@ -0,0 +1,6 @@ +a { + color: red +} +a, x::test { + color: green +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test9.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test9.css new file mode 100644 index 0000000..949a423 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue39.test9.css @@ -0,0 +1,6 @@ +a { + color: red +} +a, x:link { + color: green +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue45.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue45.test1.css new file mode 100644 index 0000000..9f15cc3 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue45.test1.css @@ -0,0 +1,2 @@ +.a{margin:0} +.a{margin-top:-1em} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue48.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue48.test1.css new file mode 100644 index 0000000..f3a3b65 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue48.test1.css @@ -0,0 +1,6 @@ +a { + p0: -0; + p1: -0.000; + p2: -0 0 -0; + p3: -0px -0.00px; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue50.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue50.test1.css new file mode 100644 index 0000000..be8873b --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue50.test1.css @@ -0,0 +1,4 @@ +a { + src: x; + src: y +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue50.test2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue50.test2.css new file mode 100644 index 0000000..0824b95 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue50.test2.css @@ -0,0 +1,7 @@ +@font-face { + font-family: 'pictos'; + src: url('../fonts/pictos-web.eot'); /* IE9 Compat Modes */ + src: local('☺'), url(data:application/x-font-woff;charset=utf-8;base64,longbase64encodedstring) format('woff'), url(data:font/truetype;charset=utf-8;base64,otherlongbase64encodedstring) format('truetype'), url('pictos-web.svg#webfontIyfZbseF') format('svg'); + font-weight: normal; + font-style: normal; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue52.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue52.test1.css new file mode 100644 index 0000000..dfced69 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue52.test1.css @@ -0,0 +1 @@ +.a{padding:0 0 1em}.a,.b{padding-bottom:0!important} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue52.test2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue52.test2.css new file mode 100644 index 0000000..f44b371 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue52.test2.css @@ -0,0 +1,6 @@ +.a { + padding:0 0 1em !important +} +.a,.b { + padding-bottom: 0 !important +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue53.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue53.test1.css new file mode 100644 index 0000000..2e74baa --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue53.test1.css @@ -0,0 +1 @@ +.a{margin:0 -1px 0 -2px} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue53.test2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue53.test2.css new file mode 100644 index 0000000..19c938b --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue53.test2.css @@ -0,0 +1 @@ +.a{margin:-1px -2px -3px -4px} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue54.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue54.test1.css new file mode 100644 index 0000000..a902b6a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue54.test1.css @@ -0,0 +1,15 @@ +.a { + background: transparent !important +} +.b { + background: none !important +} +.c { + background: repeat !important +} +.d { + background: scroll !important +} +.e { + background: transparent none repeat scroll !important +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue57.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue57.test1.css new file mode 100644 index 0000000..b3f65ea --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue57.test1.css @@ -0,0 +1,4 @@ +a { + clip: rect(0 0 0 0); + clip: rect(0,0,0,0); +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue57.test2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue57.test2.css new file mode 100644 index 0000000..6d05147 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue57.test2.css @@ -0,0 +1,11 @@ +a { + clip: rect(0 0 0 0); + clip: rect(0,0,0,0); +} +b { + color: red +} +a { + clip: rect(0 0 0 0); + clip: rect(0,0,0,0); +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue71.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue71.test1.css new file mode 100644 index 0000000..0600009 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue71.test1.css @@ -0,0 +1,5 @@ +a { + display: -webkit-box; + display: -moz-box; + display: box; +} \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue76.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue76.test1.css new file mode 100644 index 0000000..e027a65 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue76.test1.css @@ -0,0 +1,5 @@ +.test1{margin-top:0} +.test2{margin-top:100px} +.test1{margin-left:0} +.test1{margin-bottom:0} +.test1{margin-right:0} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue76.test2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue76.test2.css new file mode 100644 index 0000000..fa91cb4 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue76.test2.css @@ -0,0 +1,6 @@ +.test1{margin-top:0} +.test2{margin-top:100px} +.test1{margin-left:0} +.test1{margin-bottom:0} +.test1{margin-right:0} +.test1{margin-top:0} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue76.test3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue76.test3.css new file mode 100644 index 0000000..8f412d3 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue76.test3.css @@ -0,0 +1,9 @@ +a { + margin-top: 10px; +} +b { + color: red; +} +c { + margin-top: 10px; +} \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue76.test4.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue76.test4.css new file mode 100644 index 0000000..4f50951 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue76.test4.css @@ -0,0 +1,18 @@ +a { + margin-top: 1px; + margin-left: 1px; +} +b { + color: red; +} +a { + margin-right: 1px; + margin-bottom: 1px; +} +c { + color: red; +} +a { + margin-top: 2px; + margin-bottom: 2px; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue76.test5.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue76.test5.css new file mode 100644 index 0000000..68a0215 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue76.test5.css @@ -0,0 +1,14 @@ +a { + margin-bottom: 1px; +} +b { + margin-left: 1px; + margin-right: 1px; + margin-top: 1px; +} +c { + margin-bottom: 1px; +} +d { + margin-bottom: 1px; +} \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue78.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue78.test1.css new file mode 100644 index 0000000..f747b09 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue78.test1.css @@ -0,0 +1,7 @@ +.foo { + margin-top: 0 !important; + margin-right: 0 !important; + margin-bottom: 0 !important; + margin-left: 0 !important; + margin-top: 0; +} \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue78.test2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue78.test2.css new file mode 100644 index 0000000..aaff25a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue78.test2.css @@ -0,0 +1,6 @@ +.foo { + margin-top: 0 !important; + margin-right: 0 !important; + margin-bottom: 0 !important; + margin-left: 0 !important; +} \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue78.test3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue78.test3.css new file mode 100644 index 0000000..bd83031 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue78.test3.css @@ -0,0 +1,6 @@ +.foo { + margin-top: 0 !important; + margin-right: 0 !important; + margin-bottom: 0 !important; + margin-top: 0; +} \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue78.test4.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue78.test4.css new file mode 100644 index 0000000..8e6fa51 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue78.test4.css @@ -0,0 +1,8 @@ +.foo { + margin-top: 0 !important; + margin-right: 0 !important; +} +.foo { + margin-bottom: 0 !important; + margin-left: 0 !important; +} \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue79.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue79.test1.css new file mode 100644 index 0000000..f34a7d0 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue79.test1.css @@ -0,0 +1,9 @@ +@font-face { + font-family: 'ptsans'; + src: url('i-font_face_ptsans.woff'), + url('i-font_face_ptsans.ttf'); +} + +.i-font_face_ptsans { + font-family: 'ptsans'; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue79.test2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue79.test2.css new file mode 100644 index 0000000..64068be --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue79.test2.css @@ -0,0 +1,7 @@ +@test { + color: red +} + +.test { + color: red +} \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue81.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue81.test1.css new file mode 100644 index 0000000..d950d6e --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue81.test1.css @@ -0,0 +1,7 @@ +div { + height: -webkit-calc(100% - 30px); + height: -moz-calc(100% - 30px); + height: -ms-calc(100% - 30px); + height: -o-calc(100% - 30px); + height: calc(100% - 30px); +} \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue81.test2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue81.test2.css new file mode 100644 index 0000000..f2740b1 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue81.test2.css @@ -0,0 +1,6 @@ +div { + height: -webkit-calc(100% - 30px); +} +div { + height: -moz-calc(100% - 30px); +} \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue81.test3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue81.test3.css new file mode 100644 index 0000000..29c939c --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue81.test3.css @@ -0,0 +1,8 @@ +a { + height: -webkit-calc(100% - 30px); + height: -moz-calc(100% - 30px); +} +b { + height: -webkit-calc(100% - 30px); + height: -ms-calc(100% - 30px); +} \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue82.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue82.test1.css new file mode 100644 index 0000000..6a03c84 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue82.test1.css @@ -0,0 +1,4 @@ +.foo { + -moz-transition: 0s; + transition: 0s; +} \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue86.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue86.test1.css new file mode 100644 index 0000000..7ee2182 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue86.test1.css @@ -0,0 +1,4 @@ +.ie-test +{ + filter: progid:DXImageTransform.Microsoft.gradient (startColorstr=#33CCCCCC, endColorstr=#33CCCCCC); +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue86.test1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue86.test1.l new file mode 100644 index 0000000..831013a --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue86.test1.l @@ -0,0 +1,4 @@ +.ie-test +{ + filter: progid:DXImageTransform.Microsoft.gradient (startColorstr=#33CCCCCC, endColorstr=#33CCCCCC); +} \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue86.test1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue86.test1.p new file mode 100644 index 0000000..1c20098 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue86.test1.p @@ -0,0 +1,21 @@ +['stylesheet', + ['ruleset', + ['selector', + ['simpleselector', + ['clazz', + ['ident', 'ie-test']], + ['s', ' +']]], + ['block', + ['s', ' + '], + ['filter', + ['property', + ['ident', 'filter']], + ['filterv', + ['progid', + ['s', ' '], + ['raw', 'progid:DXImageTransform.Microsoft.gradient (startColorstr=#33CCCCCC, endColorstr=#33CCCCCC)']]]], + ['decldelim'], + ['s', ' +']]]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue87.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue87.test1.css new file mode 100644 index 0000000..9b47742 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue87.test1.css @@ -0,0 +1,4 @@ +.t +{ + filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40) !important; +} \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue87.test1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue87.test1.l new file mode 100644 index 0000000..9b47742 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue87.test1.l @@ -0,0 +1,4 @@ +.t +{ + filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40) !important; +} \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue87.test1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue87.test1.p new file mode 100644 index 0000000..39dbc9b --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue87.test1.p @@ -0,0 +1,22 @@ +['stylesheet', + ['ruleset', + ['selector', + ['simpleselector', + ['clazz', + ['ident', 't']], + ['s', ' +']]], + ['block', + ['s', ' + '], + ['filter', + ['property', + ['ident', 'filter']], + ['filterv', + ['progid', + ['raw', 'progid:DXImageTransform.Microsoft.Alpha(Opacity=40)'], + ['s', ' ']], + ['important']]], + ['decldelim'], + ['s', ' +']]]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue88.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue88.test1.css new file mode 100644 index 0000000..1be5df0 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue88.test1.css @@ -0,0 +1,7 @@ +.t-1 { + color: red; +} + +.t-01 { + color: blue; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue88.test1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue88.test1.l new file mode 100644 index 0000000..7d66647 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue88.test1.l @@ -0,0 +1,7 @@ +.t-1 { + color: red; +} + +.t-01 { + color: blue; +} \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue88.test1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue88.test1.p new file mode 100644 index 0000000..32f35c3 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue88.test1.p @@ -0,0 +1,40 @@ +['stylesheet', + ['ruleset', + ['selector', + ['simpleselector', + ['clazz', + ['ident', 't-1']], + ['s', ' ']]], + ['block', + ['s', ' + '], + ['declaration', + ['property', + ['ident', 'color']], + ['value', + ['s', ' '], + ['ident', 'red']]], + ['decldelim'], + ['s', ' +']]], + ['s', ' + +'], + ['ruleset', + ['selector', + ['simpleselector', + ['clazz', + ['ident', 't-01']], + ['s', ' ']]], + ['block', + ['s', ' + '], + ['declaration', + ['property', + ['ident', 'color']], + ['value', + ['s', ' '], + ['ident', 'blue']]], + ['decldelim'], + ['s', ' +']]]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue90.test1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue90.test1.css new file mode 100644 index 0000000..636f0b6 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue90.test1.css @@ -0,0 +1,5 @@ +@media test { + @page { + p: v; + } +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue90.test1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue90.test1.l new file mode 100644 index 0000000..e2ed9ab --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue90.test1.l @@ -0,0 +1,5 @@ +@media test { + @page { + p: v; + } +} \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue90.test1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue90.test1.p new file mode 100644 index 0000000..ab454ba --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue90.test1.p @@ -0,0 +1,29 @@ +['stylesheet', + ['atruler', + ['atkeyword', + ['ident', 'media']], + ['atrulerq', + ['s', ' '], + ['ident', 'test'], + ['s', ' ']], + ['atrulers', + ['s', ' + '], + ['atruleb', + ['atkeyword', + ['ident', 'page']], + ['s', ' '], + ['block', + ['s', ' + '], + ['declaration', + ['property', + ['ident', 'p']], + ['value', + ['s', ' '], + ['ident', 'v']]], + ['decldelim'], + ['s', ' + ']]], + ['s', ' +']]]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue90.test2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue90.test2.css new file mode 100644 index 0000000..10206fc --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue90.test2.css @@ -0,0 +1,23 @@ +x { + p:v; +} + +@media test { + a { + p:v; + } + + /* comment */ + + @page { + p: v; + } + + b { + p:v; + } +} + +y { + p:v; +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue90.test2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue90.test2.l new file mode 100644 index 0000000..6cc04b5 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue90.test2.l @@ -0,0 +1,23 @@ +x { + p:v; +} + +@media test { + a { + p:v; + } + + /* comment */ + + @page { + p: v; + } + + b { + p:v; + } +} + +y { + p:v; +} \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue90.test2.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue90.test2.p new file mode 100644 index 0000000..1957669 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/issue90.test2.p @@ -0,0 +1,109 @@ +['stylesheet', + ['ruleset', + ['selector', + ['simpleselector', + ['ident', 'x'], + ['s', ' ']]], + ['block', + ['s', ' + '], + ['declaration', + ['property', + ['ident', 'p']], + ['value', + ['ident', 'v']]], + ['decldelim'], + ['s', ' +']]], + ['s', ' + +'], + ['atruler', + ['atkeyword', + ['ident', 'media']], + ['atrulerq', + ['s', ' '], + ['ident', 'test'], + ['s', ' ']], + ['atrulers', + ['s', ' + '], + ['ruleset', + ['selector', + ['simpleselector', + ['ident', 'a'], + ['s', ' ']]], + ['block', + ['s', ' + '], + ['declaration', + ['property', + ['ident', 'p']], + ['value', + ['ident', 'v']]], + ['decldelim'], + ['s', ' + ']]], + ['s', ' + + '], + ['comment', ' comment '], + ['s', ' + + '], + ['atruleb', + ['atkeyword', + ['ident', 'page']], + ['s', ' '], + ['block', + ['s', ' + '], + ['declaration', + ['property', + ['ident', 'p']], + ['value', + ['s', ' '], + ['ident', 'v']]], + ['decldelim'], + ['s', ' + ']]], + ['s', ' + + '], + ['ruleset', + ['selector', + ['simpleselector', + ['ident', 'b'], + ['s', ' ']]], + ['block', + ['s', ' + '], + ['declaration', + ['property', + ['ident', 'p']], + ['value', + ['ident', 'v']]], + ['decldelim'], + ['s', ' + ']]], + ['s', ' +']]], + ['s', ' + +'], + ['ruleset', + ['selector', + ['simpleselector', + ['ident', 'y'], + ['s', ' ']]], + ['block', + ['s', ' + '], + ['declaration', + ['property', + ['ident', 'p']], + ['value', + ['ident', 'v']]], + ['decldelim'], + ['s', ' +']]]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.0.css new file mode 100644 index 0000000..019f6e7 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.0.css @@ -0,0 +1 @@ +s{p:v} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.0.l new file mode 100644 index 0000000..019f6e7 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.0.l @@ -0,0 +1 @@ +s{p:v} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.0.p new file mode 100644 index 0000000..94c9196 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.0.p @@ -0,0 +1,11 @@ +['stylesheet', + ['ruleset', + ['selector', + ['simpleselector', + ['ident', 's']]], + ['block', + ['declaration', + ['property', + ['ident', 'p']], + ['value', + ['ident', 'v']]]]]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.1.css new file mode 100644 index 0000000..0a01842 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.1.css @@ -0,0 +1 @@ +s0{p0:v0}s1{p1:v1} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.1.l new file mode 100644 index 0000000..0a01842 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.1.l @@ -0,0 +1 @@ +s0{p0:v0}s1{p1:v1} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.1.p new file mode 100644 index 0000000..f8e0149 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.1.p @@ -0,0 +1,21 @@ +['stylesheet', + ['ruleset', + ['selector', + ['simpleselector', + ['ident', 's0']]], + ['block', + ['declaration', + ['property', + ['ident', 'p0']], + ['value', + ['ident', 'v0']]]]], + ['ruleset', + ['selector', + ['simpleselector', + ['ident', 's1']]], + ['block', + ['declaration', + ['property', + ['ident', 'p1']], + ['value', + ['ident', 'v1']]]]]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.2.css new file mode 100644 index 0000000..9275826 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.2.css @@ -0,0 +1 @@ +@test; diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.2.l new file mode 100644 index 0000000..9275826 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.2.l @@ -0,0 +1 @@ +@test; diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.2.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.2.p new file mode 100644 index 0000000..5b8e20b --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.2.p @@ -0,0 +1,4 @@ +['stylesheet', + ['atrules', + ['atkeyword', + ['ident', 'test']]]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.3.css new file mode 100644 index 0000000..88d0edc --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.3.css @@ -0,0 +1 @@ +@test0;@test1; diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.3.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.3.l new file mode 100644 index 0000000..88d0edc --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.3.l @@ -0,0 +1 @@ +@test0;@test1; diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.3.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.3.p new file mode 100644 index 0000000..920459f --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.3.p @@ -0,0 +1,7 @@ +['stylesheet', + ['atrules', + ['atkeyword', + ['ident', 'test0']]], + ['atrules', + ['atkeyword', + ['ident', 'test1']]]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.4.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.4.css new file mode 100644 index 0000000..e8f5935 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.4.css @@ -0,0 +1 @@ +s{p:v}@test; diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.4.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.4.l new file mode 100644 index 0000000..e8f5935 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.4.l @@ -0,0 +1 @@ +s{p:v}@test; diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.4.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.4.p new file mode 100644 index 0000000..b94a5fe --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.4.p @@ -0,0 +1,14 @@ +['stylesheet', + ['ruleset', + ['selector', + ['simpleselector', + ['ident', 's']]], + ['block', + ['declaration', + ['property', + ['ident', 'p']], + ['value', + ['ident', 'v']]]]], + ['atrules', + ['atkeyword', + ['ident', 'test']]]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.c.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.c.0.css new file mode 100644 index 0000000..45dfb60 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.c.0.css @@ -0,0 +1,5 @@ +/* test */ +s { + p: v +} +/* test */ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.c.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.c.0.l new file mode 100644 index 0000000..45dfb60 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.c.0.l @@ -0,0 +1,5 @@ +/* test */ +s { + p: v +} +/* test */ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.c.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.c.0.p new file mode 100644 index 0000000..1b18b1e --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.c.0.p @@ -0,0 +1,23 @@ +['stylesheet', + ['comment', ' test '], + ['s', ' +'], + ['ruleset', + ['selector', + ['simpleselector', + ['ident', 's'], + ['s', ' ']]], + ['block', + ['s', ' + '], + ['declaration', + ['property', + ['ident', 'p']], + ['value', + ['s', ' '], + ['ident', 'v'], + ['s', ' +']]]]], + ['s', ' +'], + ['comment', ' test ']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.s.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.s.0.css new file mode 100644 index 0000000..e255756 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.s.0.css @@ -0,0 +1,3 @@ +s { + p: v +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.s.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.s.0.l new file mode 100644 index 0000000..e255756 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.s.0.l @@ -0,0 +1,3 @@ +s { + p: v +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.s.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.s.0.p new file mode 100644 index 0000000..b8536e0 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.s.0.p @@ -0,0 +1,17 @@ +['stylesheet', + ['ruleset', + ['selector', + ['simpleselector', + ['ident', 's'], + ['s', ' ']]], + ['block', + ['s', ' + '], + ['declaration', + ['property', + ['ident', 'p']], + ['value', + ['s', ' '], + ['ident', 'v'], + ['s', ' +']]]]]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.s.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.s.1.css new file mode 100644 index 0000000..66c13ed --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.s.1.css @@ -0,0 +1,7 @@ +s0 { + p0: v0 +} + +s1 { + p1: v1 +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.s.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.s.1.l new file mode 100644 index 0000000..66c13ed --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.s.1.l @@ -0,0 +1,7 @@ +s0 { + p0: v0 +} + +s1 { + p1: v1 +} diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.s.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.s.1.p new file mode 100644 index 0000000..d97a656 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.s.1.p @@ -0,0 +1,36 @@ +['stylesheet', + ['ruleset', + ['selector', + ['simpleselector', + ['ident', 's0'], + ['s', ' ']]], + ['block', + ['s', ' + '], + ['declaration', + ['property', + ['ident', 'p0']], + ['value', + ['s', ' '], + ['ident', 'v0'], + ['s', ' +']]]]], + ['s', ' + +'], + ['ruleset', + ['selector', + ['simpleselector', + ['ident', 's1'], + ['s', ' ']]], + ['block', + ['s', ' + '], + ['declaration', + ['property', + ['ident', 'p1']], + ['value', + ['s', ' '], + ['ident', 'v1'], + ['s', ' +']]]]]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.s.2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.s.2.css new file mode 100644 index 0000000..992feaa --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.s.2.css @@ -0,0 +1,2 @@ +@test0; +@test1; diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.s.2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.s.2.l new file mode 100644 index 0000000..992feaa --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.s.2.l @@ -0,0 +1,2 @@ +@test0; +@test1; diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.s.2.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.s.2.p new file mode 100644 index 0000000..9680fb4 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.s.2.p @@ -0,0 +1,9 @@ +['stylesheet', + ['atrules', + ['atkeyword', + ['ident', 'test0']]], + ['s', ' +'], + ['atrules', + ['atkeyword', + ['ident', 'test1']]]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.s.3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.s.3.css new file mode 100644 index 0000000..ac16e66 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.s.3.css @@ -0,0 +1,5 @@ +s { + p:v +} + +@test; diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.s.3.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.s.3.l new file mode 100644 index 0000000..ac16e66 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.s.3.l @@ -0,0 +1,5 @@ +s { + p:v +} + +@test; diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.s.3.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.s.3.p new file mode 100644 index 0000000..4066456 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_stylesheet/stylesheet.s.3.p @@ -0,0 +1,22 @@ +['stylesheet', + ['ruleset', + ['selector', + ['simpleselector', + ['ident', 's'], + ['s', ' ']]], + ['block', + ['s', ' + '], + ['declaration', + ['property', + ['ident', 'p']], + ['value', + ['ident', 'v'], + ['s', ' +']]]]], + ['s', ' + +'], + ['atrules', + ['atkeyword', + ['ident', 'test']]]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_unary/unary.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_unary/unary.0.css new file mode 100644 index 0000000..39cdd0d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_unary/unary.0.css @@ -0,0 +1 @@ +- diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_unary/unary.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_unary/unary.0.l new file mode 100644 index 0000000..39cdd0d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_unary/unary.0.l @@ -0,0 +1 @@ +- diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_unary/unary.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_unary/unary.0.p new file mode 100644 index 0000000..4fd26b2 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_unary/unary.0.p @@ -0,0 +1 @@ +['unary', '-'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_unary/unary.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_unary/unary.1.css new file mode 100644 index 0000000..fd38861 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_unary/unary.1.css @@ -0,0 +1 @@ ++ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_unary/unary.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_unary/unary.1.l new file mode 100644 index 0000000..fd38861 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_unary/unary.1.l @@ -0,0 +1 @@ ++ diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_unary/unary.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_unary/unary.1.p new file mode 100644 index 0000000..ebfee93 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_unary/unary.1.p @@ -0,0 +1 @@ +['unary', '+'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_unknown/unknown.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_unknown/unknown.0.css new file mode 100644 index 0000000..8337712 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_unknown/unknown.0.css @@ -0,0 +1 @@ +// diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_unknown/unknown.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_unknown/unknown.0.l new file mode 100644 index 0000000..8337712 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_unknown/unknown.0.l @@ -0,0 +1 @@ +// diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_unknown/unknown.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_unknown/unknown.1.css new file mode 100644 index 0000000..c91289d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_unknown/unknown.1.css @@ -0,0 +1 @@ +// invalid css diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_unknown/unknown.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_unknown/unknown.1.l new file mode 100644 index 0000000..c91289d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_unknown/unknown.1.l @@ -0,0 +1 @@ +// invalid css diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.0.css new file mode 100644 index 0000000..f811ab1 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.0.css @@ -0,0 +1 @@ +url('http://test.com') diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.0.l new file mode 100644 index 0000000..f811ab1 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.0.l @@ -0,0 +1 @@ +url('http://test.com') diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.0.p new file mode 100644 index 0000000..13d0d7d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.0.p @@ -0,0 +1,2 @@ +['uri', + ['string', ''http://test.com'']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.1.css new file mode 100644 index 0000000..69e70fd --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.1.css @@ -0,0 +1 @@ +url(http://test.com) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.1.l new file mode 100644 index 0000000..69e70fd --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.1.l @@ -0,0 +1 @@ +url(http://test.com) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.1.p new file mode 100644 index 0000000..7bf17b2 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.1.p @@ -0,0 +1,2 @@ +['uri', + ['raw', 'http://test.com']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.c.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.c.0.css new file mode 100644 index 0000000..73354cc --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.c.0.css @@ -0,0 +1 @@ +url(/*test*/'http://test.com'/*test*/) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.c.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.c.0.l new file mode 100644 index 0000000..73354cc --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.c.0.l @@ -0,0 +1 @@ +url(/*test*/'http://test.com'/*test*/) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.c.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.c.0.p new file mode 100644 index 0000000..1aa8dcc --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.c.0.p @@ -0,0 +1,4 @@ +['uri', + ['comment', 'test'], + ['string', ''http://test.com''], + ['comment', 'test']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.c.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.c.1.css new file mode 100644 index 0000000..015ba6d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.c.1.css @@ -0,0 +1 @@ +url(/*test*/http://test.com/*test*/) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.c.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.c.1.l new file mode 100644 index 0000000..015ba6d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.c.1.l @@ -0,0 +1 @@ +url(/*test*/http://test.com/*test*/) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.c.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.c.1.p new file mode 100644 index 0000000..4deb785 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.c.1.p @@ -0,0 +1,3 @@ +['uri', + ['comment', 'test'], + ['raw', 'http://test.com/*test*/']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.s.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.s.0.css new file mode 100644 index 0000000..8eaddcc --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.s.0.css @@ -0,0 +1 @@ +url( 'http://test.com' ) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.s.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.s.0.l new file mode 100644 index 0000000..8eaddcc --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.s.0.l @@ -0,0 +1 @@ +url( 'http://test.com' ) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.s.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.s.0.p new file mode 100644 index 0000000..bf7bee1 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.s.0.p @@ -0,0 +1,4 @@ +['uri', + ['s', ' '], + ['string', ''http://test.com''], + ['s', ' ']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.s.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.s.1.css new file mode 100644 index 0000000..e3f5ff5 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.s.1.css @@ -0,0 +1 @@ +url( http://test.com ) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.s.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.s.1.l new file mode 100644 index 0000000..e3f5ff5 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.s.1.l @@ -0,0 +1 @@ +url( http://test.com ) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.s.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.s.1.p new file mode 100644 index 0000000..fbeb6bf --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_uri/uri.s.1.p @@ -0,0 +1,4 @@ +['uri', + ['s', ' '], + ['raw', 'http://test.com'], + ['s', ' ']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.0.css new file mode 100644 index 0000000..587be6b --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.0.css @@ -0,0 +1 @@ +x diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.0.l new file mode 100644 index 0000000..587be6b --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.0.l @@ -0,0 +1 @@ +x diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.0.p new file mode 100644 index 0000000..f1bd750 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.0.p @@ -0,0 +1,2 @@ +['value', + ['ident', 'x']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.1.css new file mode 100644 index 0000000..f599e28 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.1.css @@ -0,0 +1 @@ +10 diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.1.l new file mode 100644 index 0000000..f599e28 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.1.l @@ -0,0 +1 @@ +10 diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.1.p new file mode 100644 index 0000000..cc74188 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.1.p @@ -0,0 +1,2 @@ +['value', + ['number', '10']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.2.css new file mode 100644 index 0000000..4868481 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.2.css @@ -0,0 +1 @@ +test(x) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.2.l new file mode 100644 index 0000000..4868481 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.2.l @@ -0,0 +1 @@ +test(x) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.2.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.2.p new file mode 100644 index 0000000..393c2cf --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.2.p @@ -0,0 +1,5 @@ +['value', + ['funktion', + ['ident', 'test'], + ['functionBody', + ['ident', 'x']]]] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.3.css new file mode 100644 index 0000000..18633bb --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.3.css @@ -0,0 +1 @@ +10 !important diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.3.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.3.l new file mode 100644 index 0000000..18633bb --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.3.l @@ -0,0 +1 @@ +10 !important diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.3.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.3.p new file mode 100644 index 0000000..d1b4144 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.3.p @@ -0,0 +1,4 @@ +['value', + ['number', '10'], + ['s', ' '], + ['important']] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.4.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.4.css new file mode 100644 index 0000000..7b277e1 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.4.css @@ -0,0 +1 @@ +-100% diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.4.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.4.l new file mode 100644 index 0000000..7b277e1 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.4.l @@ -0,0 +1 @@ +-100% diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.4.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.4.p new file mode 100644 index 0000000..0723a61 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.4.p @@ -0,0 +1,4 @@ +['value', + ['unary', '-'], + ['percentage', + ['number', '100']]] \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.dimension.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.dimension.0.css new file mode 100644 index 0000000..be19ea3 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.dimension.0.css @@ -0,0 +1 @@ +0px diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.dimension.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.dimension.0.l new file mode 100644 index 0000000..be19ea3 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.dimension.0.l @@ -0,0 +1 @@ +0px diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.dimension.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.dimension.1.css new file mode 100644 index 0000000..e3b2197 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.dimension.1.css @@ -0,0 +1 @@ +.0px diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.dimension.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.dimension.1.l new file mode 100644 index 0000000..e3b2197 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.dimension.1.l @@ -0,0 +1 @@ +.0px diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.dimension.2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.dimension.2.css new file mode 100644 index 0000000..7bf00ed --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.dimension.2.css @@ -0,0 +1 @@ +0000.000px diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.dimension.2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.dimension.2.l new file mode 100644 index 0000000..7bf00ed --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.dimension.2.l @@ -0,0 +1 @@ +0000.000px diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.rgb.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.rgb.0.css new file mode 100644 index 0000000..e4e98b3 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.rgb.0.css @@ -0,0 +1 @@ +rgb(10, 10, 10) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.rgb.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.rgb.0.l new file mode 100644 index 0000000..e4e98b3 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.rgb.0.l @@ -0,0 +1 @@ +rgb(10, 10, 10) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.rgb.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.rgb.1.css new file mode 100644 index 0000000..7702856 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.rgb.1.css @@ -0,0 +1 @@ +rgb(255,0,0) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.rgb.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.rgb.1.l new file mode 100644 index 0000000..7702856 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.rgb.1.l @@ -0,0 +1 @@ +rgb(255,0,0) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.rgb.2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.rgb.2.css new file mode 100644 index 0000000..59739c0 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.rgb.2.css @@ -0,0 +1 @@ +rgb(10.0,00.00,10%) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.rgb.2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.rgb.2.l new file mode 100644 index 0000000..59739c0 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.rgb.2.l @@ -0,0 +1 @@ +rgb(10.0,00.00,10%) diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.vhash.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.vhash.0.css new file mode 100644 index 0000000..16e940d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.vhash.0.css @@ -0,0 +1 @@ +#ffffff diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.vhash.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.vhash.0.l new file mode 100644 index 0000000..16e940d --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.vhash.0.l @@ -0,0 +1 @@ +#ffffff diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.vhash.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.vhash.1.css new file mode 100644 index 0000000..9b08798 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.vhash.1.css @@ -0,0 +1 @@ +#f00 diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.vhash.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.vhash.1.l new file mode 100644 index 0000000..9b08798 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.vhash.1.l @@ -0,0 +1 @@ +#f00 diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.vhash.2.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.vhash.2.css new file mode 100644 index 0000000..e773ae6 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.vhash.2.css @@ -0,0 +1 @@ +#F0f0C0 diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.vhash.2.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.vhash.2.l new file mode 100644 index 0000000..e773ae6 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.vhash.2.l @@ -0,0 +1 @@ +#F0f0C0 diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.vhash.3.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.vhash.3.css new file mode 100644 index 0000000..6418bd6 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.vhash.3.css @@ -0,0 +1 @@ +#AaBbCc diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.vhash.3.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.vhash.3.l new file mode 100644 index 0000000..6418bd6 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_value/value.vhash.3.l @@ -0,0 +1 @@ +#AaBbCc diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_vhash/vhash.0.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_vhash/vhash.0.css new file mode 100644 index 0000000..1d75cfd --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_vhash/vhash.0.css @@ -0,0 +1 @@ +#100 diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_vhash/vhash.0.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_vhash/vhash.0.l new file mode 100644 index 0000000..1d75cfd --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_vhash/vhash.0.l @@ -0,0 +1 @@ +#100 diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_vhash/vhash.0.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_vhash/vhash.0.p new file mode 100644 index 0000000..87876e3 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_vhash/vhash.0.p @@ -0,0 +1 @@ +['vhash', '100'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_vhash/vhash.1.css b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_vhash/vhash.1.css new file mode 100644 index 0000000..9b84363 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_vhash/vhash.1.css @@ -0,0 +1 @@ +#id diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_vhash/vhash.1.l b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_vhash/vhash.1.l new file mode 100644 index 0000000..9b84363 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_vhash/vhash.1.l @@ -0,0 +1 @@ +#id diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_vhash/vhash.1.p b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_vhash/vhash.1.p new file mode 100644 index 0000000..cc8dba0 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/data/test_vhash/vhash.1.p @@ -0,0 +1 @@ +['vhash', 'id'] diff --git a/node_modules/csscomb/node_modules/gonzales/test/cssp/test.js b/node_modules/csscomb/node_modules/gonzales/test/cssp/test.js new file mode 100644 index 0000000..7a68e0e --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/test/cssp/test.js @@ -0,0 +1,95 @@ +var fs = require('fs'), + srcToCSSP = require('./../../lib/gonzales.cssp.node.js').srcToCSSP, + csspToSrc = require('./../../lib/cssp.translator.node.js').csspToSrc, + d_dir = __dirname + '/data', + d_list = fs.readdirSync(d_dir), + okn = total = 0; + +var funcs = { + 'p': function parse(src, match) { + return treeToString(cleanInfo(srcToCSSP(src, match, true))); + }, + 'l': function translate(src, match) { + return csspToSrc(srcToCSSP(src, match, true), true); + } +}; + +d_list.forEach(function(rule_dir) { + if (/^test/.test(rule_dir)) { + var rule = rule_dir.substring(5), + path = d_dir + '/' + rule_dir + '/', + list = fs.readdirSync(path), + ext, + files = {}, + k, a, b, c, src, t, r; + + list.forEach(function(f) { + var i = f.lastIndexOf('.'); + + if (i !== -1) { + ext = f.substring(i + 1); + k = f.substring(0, i); + if (!(k in files)) files[k] = {}; + files[k][ext] = 1; + } + }); + + for (k in files) { + if (files[k].css) { + src = readFile(path + k + '.css').trim(); + t = '\'' + rule + '\' / \'' + k + '.'; + for (a in funcs) { + if (a in files[k]) { + total++; + r = (((b = funcs[a](src, rule)) == (c = readFile(path + k + '.' + a).trim()))); + r && okn++; + if (!r) { + console.log('FAIL: ' + t + a); + console.log('======= expected'); + console.log(c); + console.log('======= result'); + console.log(b); + } + } + } + } + } + } +}); + +console.log('Total: ' + total + '. Ok: ' + okn + '. Fail: ' + (total - okn)); + +function readFile(path) { + return fs.readFileSync(path).toString(); +} + +function treeToString(tree, level) { + var spaces = dummySpaces(level), + level = level ? level : 0, + s = (level ? '\n' + spaces : '') + '['; + + tree.forEach(function(e) { + s += (Array.isArray(e) ? treeToString(e, level + 1) : ('\'' + e.toString() + '\'')) + ', '; + }); + + return s.substr(0, s.length - 2) + ']'; +} + +function dummySpaces(num) { + return ' '.substr(0, num * 2); +} + +function printTree(tree) { + require('sys').print(treeToString(tree)); +} + +function cleanInfo(tree) { + var r = []; + tree = tree.slice(1); + + tree.forEach(function(e) { + r.push(Array.isArray(e) ? cleanInfo(e) : e); + }); + + return r; +} diff --git a/node_modules/csscomb/node_modules/gonzales/web/cssp.translator.js b/node_modules/csscomb/node_modules/gonzales/web/cssp.translator.js new file mode 100644 index 0000000..11efe40 --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/web/cssp.translator.js @@ -0,0 +1,101 @@ +// version: 1.0.0 + +function csspToSrc(tree, hasInfo) { + + var _m_simple = { + 'unary': 1, 'nth': 1, 'combinator': 1, 'ident': 1, 'number': 1, 's': 1, + 'string': 1, 'attrselector': 1, 'operator': 1, 'raw': 1, 'unknown': 1 + }, + _m_composite = { + 'simpleselector': 1, 'dimension': 1, 'selector': 1, 'property': 1, 'value': 1, + 'filterv': 1, 'progid': 1, 'ruleset': 1, 'atruleb': 1, 'atrulerq': 1, 'atrulers': 1, + 'stylesheet': 1 + }, + _m_primitive = { + 'cdo': 'cdo', 'cdc': 'cdc', 'decldelim': ';', 'namespace': '|', 'delim': ',' + }; + + function _t(tree) { + var t = tree[hasInfo? 1 : 0]; + if (t in _m_primitive) return _m_primitive[t]; + else if (t in _m_simple) return _simple(tree); + else if (t in _m_composite) return _composite(tree); + return _unique[t](tree); + } + + function _composite(t, i) { + var s = ''; + i = i === undefined ? (hasInfo? 2 : 1) : i; + for (; i < t.length; i++) s += _t(t[i]); + return s; + } + + function _simple(t) { + return t[hasInfo? 2 : 1]; + } + + var _unique = { + percentage: function(t) { + return _t(t[hasInfo? 2 : 1]) + '%'; + }, + comment: function (t) { + return '/*' + t[hasInfo? 2 : 1] + '*/'; + }, + clazz: function(t) { + return '.' + _t(t[hasInfo? 2 : 1]); + }, + atkeyword: function(t) { + return '@' + _t(t[hasInfo? 2 : 1]); + }, + shash: function (t) { + return '#' + t[hasInfo? 2 : 1]; + }, + vhash: function(t) { + return '#' + t[hasInfo? 2 : 1]; + }, + attrib: function(t) { + return '[' + _composite(t) + ']'; + }, + important: function(t) { + return '!' + _composite(t) + 'important'; + }, + nthselector: function(t) { + return ':' + _simple(t[hasInfo? 2 : 1]) + '(' + _composite(t, hasInfo? 3 : 2) + ')'; + }, + funktion: function(t) { + return _simple(t[hasInfo? 2 : 1]) + '(' + _composite(t[hasInfo? 3: 2]) + ')'; + }, + declaration: function(t) { + return _t(t[hasInfo? 2 : 1]) + ':' + _t(t[hasInfo? 3 : 2]); + }, + filter: function(t) { + return _t(t[hasInfo? 2 : 1]) + ':' + _t(t[hasInfo? 3 : 2]); + }, + block: function(t) { + return '{' + _composite(t) + '}'; + }, + braces: function(t) { + return t[hasInfo? 2 : 1] + _composite(t, hasInfo? 4 : 3) + t[hasInfo? 3 : 2]; + }, + atrules: function(t) { + return _composite(t) + ';'; + }, + atruler: function(t) { + return _t(t[hasInfo? 2 : 1]) + _t(t[hasInfo? 3 : 2]) + '{' + _t(t[hasInfo? 4 : 3]) + '}'; + }, + pseudoe: function(t) { + return '::' + _t(t[hasInfo? 2 : 1]); + }, + pseudoc: function(t) { + return ':' + _t(t[hasInfo? 2 : 1]); + }, + uri: function(t) { + return 'url(' + _composite(t) + ')'; + }, + functionExpression: function(t) { + return 'expression(' + t[hasInfo? 2 : 1] + ')'; + } + }; + + return _t(tree); +} diff --git a/node_modules/csscomb/node_modules/gonzales/web/gonzales.cssp.web.js b/node_modules/csscomb/node_modules/gonzales/web/gonzales.cssp.web.js new file mode 100644 index 0000000..1e4dabc --- /dev/null +++ b/node_modules/csscomb/node_modules/gonzales/web/gonzales.cssp.web.js @@ -0,0 +1,2294 @@ +var srcToCSSP = (function() { +var TokenType = { + StringSQ: 'StringSQ', + StringDQ: 'StringDQ', + CommentML: 'CommentML', + CommentSL: 'CommentSL', + + Newline: 'Newline', + Space: 'Space', + Tab: 'Tab', + + ExclamationMark: 'ExclamationMark', // ! + QuotationMark: 'QuotationMark', // " + NumberSign: 'NumberSign', // # + DollarSign: 'DollarSign', // $ + PercentSign: 'PercentSign', // % + Ampersand: 'Ampersand', // & + Apostrophe: 'Apostrophe', // ' + LeftParenthesis: 'LeftParenthesis', // ( + RightParenthesis: 'RightParenthesis', // ) + Asterisk: 'Asterisk', // * + PlusSign: 'PlusSign', // + + Comma: 'Comma', // , + HyphenMinus: 'HyphenMinus', // - + FullStop: 'FullStop', // . + Solidus: 'Solidus', // / + Colon: 'Colon', // : + Semicolon: 'Semicolon', // ; + LessThanSign: 'LessThanSign', // < + EqualsSign: 'EqualsSign', // = + GreaterThanSign: 'GreaterThanSign', // > + QuestionMark: 'QuestionMark', // ? + CommercialAt: 'CommercialAt', // @ + LeftSquareBracket: 'LeftSquareBracket', // [ + ReverseSolidus: 'ReverseSolidus', // \ + RightSquareBracket: 'RightSquareBracket', // ] + CircumflexAccent: 'CircumflexAccent', // ^ + LowLine: 'LowLine', // _ + LeftCurlyBracket: 'LeftCurlyBracket', // { + VerticalLine: 'VerticalLine', // | + RightCurlyBracket: 'RightCurlyBracket', // } + Tilde: 'Tilde', // ~ + + Identifier: 'Identifier', + DecimalNumber: 'DecimalNumber' +}; + +var getTokens = (function() { + + var Punctuation, + urlMode = false, + blockMode = 0; + + Punctuation = { + ' ': TokenType.Space, + '\n': TokenType.Newline, + '\r': TokenType.Newline, + '\t': TokenType.Tab, + '!': TokenType.ExclamationMark, + '"': TokenType.QuotationMark, + '#': TokenType.NumberSign, + '$': TokenType.DollarSign, + '%': TokenType.PercentSign, + '&': TokenType.Ampersand, + '\'': TokenType.Apostrophe, + '(': TokenType.LeftParenthesis, + ')': TokenType.RightParenthesis, + '*': TokenType.Asterisk, + '+': TokenType.PlusSign, + ',': TokenType.Comma, + '-': TokenType.HyphenMinus, + '.': TokenType.FullStop, + '/': TokenType.Solidus, + ':': TokenType.Colon, + ';': TokenType.Semicolon, + '<': TokenType.LessThanSign, + '=': TokenType.EqualsSign, + '>': TokenType.GreaterThanSign, + '?': TokenType.QuestionMark, + '@': TokenType.CommercialAt, + '[': TokenType.LeftSquareBracket, + // '\\': TokenType.ReverseSolidus, + ']': TokenType.RightSquareBracket, + '^': TokenType.CircumflexAccent, + '_': TokenType.LowLine, + '{': TokenType.LeftCurlyBracket, + '|': TokenType.VerticalLine, + '}': TokenType.RightCurlyBracket, + '~': TokenType.Tilde + }; + + function isDecimalDigit(c) { + return '0123456789'.indexOf(c) >= 0; + } + + function throwError(message) { + throw message; + } + + var buffer = '', + tokens = [], + pos, + tn = 0, + ln = 1; + + function _getTokens(s) { + if (!s) return []; + + tokens = []; + + var c, cn; + + for (pos = 0; pos < s.length; pos++) { + c = s.charAt(pos); + cn = s.charAt(pos + 1); + + if (c === '/' && cn === '*') { + parseMLComment(s); + } else if (!urlMode && c === '/' && cn === '/') { + if (blockMode > 0) parseIdentifier(s); + else parseSLComment(s); + } else if (c === '"' || c === "'") { + parseString(s, c); + } else if (c === ' ') { + parseSpaces(s) + } else if (c in Punctuation) { + pushToken(Punctuation[c], c); + if (c === '\n' || c === '\r') ln++; + if (c === ')') urlMode = false; + if (c === '{') blockMode++; + if (c === '}') blockMode--; + } else if (isDecimalDigit(c)) { + parseDecimalNumber(s); + } else { + parseIdentifier(s); + } + } + + mark(); + + return tokens; + } + + function pushToken(type, value) { + tokens.push({ tn: tn++, ln: ln, type: type, value: value }); + } + + function parseSpaces(s) { + var start = pos; + + for (; pos < s.length; pos++) { + if (s.charAt(pos) !== ' ') break; + } + + pushToken(TokenType.Space, s.substring(start, pos)); + pos--; + } + + function parseMLComment(s) { + var start = pos; + + for (pos = pos + 2; pos < s.length; pos++) { + if (s.charAt(pos) === '*') { + if (s.charAt(pos + 1) === '/') { + pos++; + break; + } + } + } + + pushToken(TokenType.CommentML, s.substring(start, pos + 1)); + } + + function parseSLComment(s) { + var start = pos; + + for (pos = pos + 2; pos < s.length; pos++) { + if (s.charAt(pos) === '\n' || s.charAt(pos) === '\r') { + pos++; + break; + } + } + + pushToken(TokenType.CommentSL, s.substring(start, pos)); + pos--; + } + + function parseString(s, q) { + var start = pos; + + for (pos = pos + 1; pos < s.length; pos++) { + if (s.charAt(pos) === '\\') pos++; + else if (s.charAt(pos) === q) break; + } + + pushToken(q === '"' ? TokenType.StringDQ : TokenType.StringSQ, s.substring(start, pos + 1)); + } + + function parseDecimalNumber(s) { + var start = pos; + + for (; pos < s.length; pos++) { + if (!isDecimalDigit(s.charAt(pos))) break; + } + + pushToken(TokenType.DecimalNumber, s.substring(start, pos)); + pos--; + } + + function parseIdentifier(s) { + var start = pos; + + while (s.charAt(pos) === '/') pos++; + + for (; pos < s.length; pos++) { + if (s.charAt(pos) === '\\') pos++; + else if (s.charAt(pos) in Punctuation) break; + } + + var ident = s.substring(start, pos); + + urlMode = urlMode || ident === 'url'; + + pushToken(TokenType.Identifier, ident); + pos--; + } + + // ==================================== + // second run + // ==================================== + + function mark() { + var ps = [], // Parenthesis + sbs = [], // SquareBracket + cbs = [], // CurlyBracket + t; + + for (var i = 0; i < tokens.length; i++) { + t = tokens[i]; + switch(t.type) { + case TokenType.LeftParenthesis: + ps.push(i); + break; + case TokenType.RightParenthesis: + if (ps.length) { + t.left = ps.pop(); + tokens[t.left].right = i; + } + break; + case TokenType.LeftSquareBracket: + sbs.push(i); + break; + case TokenType.RightSquareBracket: + if (sbs.length) { + t.left = sbs.pop(); + tokens[t.left].right = i; + } + break; + case TokenType.LeftCurlyBracket: + cbs.push(i); + break; + case TokenType.RightCurlyBracket: + if (cbs.length) { + t.left = cbs.pop(); + tokens[t.left].right = i; + } + break; + } + } + } + + return function(s) { + return _getTokens(s); + }; + +}()); +// version: 1.0.0 + +var getCSSPAST = (function() { + + var tokens, + pos, + failLN = 0, + currentBlockLN = 0, + needInfo = false; + + var CSSPNodeType, + CSSLevel, + CSSPRules; + + CSSPNodeType = { + IdentType: 'ident', + AtkeywordType: 'atkeyword', + StringType: 'string', + ShashType: 'shash', + VhashType: 'vhash', + NumberType: 'number', + PercentageType: 'percentage', + DimensionType: 'dimension', + CdoType: 'cdo', + CdcType: 'cdc', + DecldelimType: 'decldelim', + SType: 's', + AttrselectorType: 'attrselector', + AttribType: 'attrib', + NthType: 'nth', + NthselectorType: 'nthselector', + NamespaceType: 'namespace', + ClazzType: 'clazz', + PseudoeType: 'pseudoe', + PseudocType: 'pseudoc', + DelimType: 'delim', + StylesheetType: 'stylesheet', + AtrulebType: 'atruleb', + AtrulesType: 'atrules', + AtrulerqType: 'atrulerq', + AtrulersType: 'atrulers', + AtrulerType: 'atruler', + BlockType: 'block', + RulesetType: 'ruleset', + CombinatorType: 'combinator', + SimpleselectorType: 'simpleselector', + SelectorType: 'selector', + DeclarationType: 'declaration', + PropertyType: 'property', + ImportantType: 'important', + UnaryType: 'unary', + OperatorType: 'operator', + BracesType: 'braces', + ValueType: 'value', + ProgidType: 'progid', + FiltervType: 'filterv', + FilterType: 'filter', + CommentType: 'comment', + UriType: 'uri', + RawType: 'raw', + FunctionBodyType: 'functionBody', + FunktionType: 'funktion', + FunctionExpressionType: 'functionExpression', + UnknownType: 'unknown' + }; + + CSSPRules = { + 'ident': function() { if (checkIdent(pos)) return getIdent() }, + 'atkeyword': function() { if (checkAtkeyword(pos)) return getAtkeyword() }, + 'string': function() { if (checkString(pos)) return getString() }, + 'shash': function() { if (checkShash(pos)) return getShash() }, + 'vhash': function() { if (checkVhash(pos)) return getVhash() }, + 'number': function() { if (checkNumber(pos)) return getNumber() }, + 'percentage': function() { if (checkPercentage(pos)) return getPercentage() }, + 'dimension': function() { if (checkDimension(pos)) return getDimension() }, +// 'cdo': function() { if (checkCDO()) return getCDO() }, +// 'cdc': function() { if (checkCDC()) return getCDC() }, + 'decldelim': function() { if (checkDecldelim(pos)) return getDecldelim() }, + 's': function() { if (checkS(pos)) return getS() }, + 'attrselector': function() { if (checkAttrselector(pos)) return getAttrselector() }, + 'attrib': function() { if (checkAttrib(pos)) return getAttrib() }, + 'nth': function() { if (checkNth(pos)) return getNth() }, + 'nthselector': function() { if (checkNthselector(pos)) return getNthselector() }, + 'namespace': function() { if (checkNamespace(pos)) return getNamespace() }, + 'clazz': function() { if (checkClazz(pos)) return getClazz() }, + 'pseudoe': function() { if (checkPseudoe(pos)) return getPseudoe() }, + 'pseudoc': function() { if (checkPseudoc(pos)) return getPseudoc() }, + 'delim': function() { if (checkDelim(pos)) return getDelim() }, + 'stylesheet': function() { if (checkStylesheet(pos)) return getStylesheet() }, + 'atruleb': function() { if (checkAtruleb(pos)) return getAtruleb() }, + 'atrules': function() { if (checkAtrules(pos)) return getAtrules() }, + 'atrulerq': function() { if (checkAtrulerq(pos)) return getAtrulerq() }, + 'atrulers': function() { if (checkAtrulers(pos)) return getAtrulers() }, + 'atruler': function() { if (checkAtruler(pos)) return getAtruler() }, + 'block': function() { if (checkBlock(pos)) return getBlock() }, + 'ruleset': function() { if (checkRuleset(pos)) return getRuleset() }, + 'combinator': function() { if (checkCombinator(pos)) return getCombinator() }, + 'simpleselector': function() { if (checkSimpleselector(pos)) return getSimpleSelector() }, + 'selector': function() { if (checkSelector(pos)) return getSelector() }, + 'declaration': function() { if (checkDeclaration(pos)) return getDeclaration() }, + 'property': function() { if (checkProperty(pos)) return getProperty() }, + 'important': function() { if (checkImportant(pos)) return getImportant() }, + 'unary': function() { if (checkUnary(pos)) return getUnary() }, + 'operator': function() { if (checkOperator(pos)) return getOperator() }, + 'braces': function() { if (checkBraces(pos)) return getBraces() }, + 'value': function() { if (checkValue(pos)) return getValue() }, + 'progid': function() { if (checkProgid(pos)) return getProgid() }, + 'filterv': function() { if (checkFilterv(pos)) return getFilterv() }, + 'filter': function() { if (checkFilter(pos)) return getFilter() }, + 'comment': function() { if (checkComment(pos)) return getComment() }, + 'uri': function() { if (checkUri(pos)) return getUri() }, + 'raw': function() { if (checkRaw(pos)) return getRaw() }, + 'funktion': function() { if (checkFunktion(pos)) return getFunktion() }, + 'functionExpression': function() { if (checkFunctionExpression(pos)) return getFunctionExpression() }, + 'unknown': function() { if (checkUnknown(pos)) return getUnknown() } + }; + + function fail(token) { + if (token && token.ln > failLN) failLN = token.ln; + } + + function throwError() { + throw new Error('Please check the validity of the CSS block starting from the line #' + currentBlockLN); + } + + function _getAST(_tokens, rule, _needInfo) { + tokens = _tokens; + needInfo = _needInfo; + pos = 0; + + markSC(); + + return rule ? CSSPRules[rule]() : CSSPRules['stylesheet'](); + } + +//any = braces | string | percentage | dimension | number | uri | functionExpression | funktion | ident | unary + function checkAny(_i) { + return checkBraces(_i) || + checkString(_i) || + checkPercentage(_i) || + checkDimension(_i) || + checkNumber(_i) || + checkUri(_i) || + checkFunctionExpression(_i) || + checkFunktion(_i) || + checkIdent(_i) || + checkUnary(_i); + } + + function getAny() { + if (checkBraces(pos)) return getBraces(); + else if (checkString(pos)) return getString(); + else if (checkPercentage(pos)) return getPercentage(); + else if (checkDimension(pos)) return getDimension(); + else if (checkNumber(pos)) return getNumber(); + else if (checkUri(pos)) return getUri(); + else if (checkFunctionExpression(pos)) return getFunctionExpression(); + else if (checkFunktion(pos)) return getFunktion(); + else if (checkIdent(pos)) return getIdent(); + else if (checkUnary(pos)) return getUnary(); + } + +//atkeyword = '@' ident:x -> [#atkeyword, x] + function checkAtkeyword(_i) { + var l; + + if (tokens[_i++].type !== TokenType.CommercialAt) return fail(tokens[_i - 1]); + + if (l = checkIdent(_i)) return l + 1; + + return fail(tokens[_i]); + } + + function getAtkeyword() { + var startPos = pos; + + pos++; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.AtkeywordType, getIdent()]: + [CSSPNodeType.AtkeywordType, getIdent()]; + } + +//attrib = '[' sc*:s0 ident:x sc*:s1 attrselector:a sc*:s2 (ident | string):y sc*:s3 ']' -> this.concat([#attrib], s0, [x], s1, [a], s2, [y], s3) +// | '[' sc*:s0 ident:x sc*:s1 ']' -> this.concat([#attrib], s0, [x], s1), + function checkAttrib(_i) { + if (tokens[_i].type !== TokenType.LeftSquareBracket) return fail(tokens[_i]); + + if (!tokens[_i].right) return fail(tokens[_i]); + + return tokens[_i].right - _i + 1; + } + + function checkAttrib1(_i) { + var start = _i; + + _i++; + + var l = checkSC(_i); // s0 + + if (l) _i += l; + + if (l = checkIdent(_i)) _i += l; // x + else return fail(tokens[_i]); + + if (l = checkSC(_i)) _i += l; // s1 + + if (l = checkAttrselector(_i)) _i += l; // a + else return fail(tokens[_i]); + + if (l = checkSC(_i)) _i += l; // s2 + + if ((l = checkIdent(_i)) || (l = checkString(_i))) _i += l; // y + else return fail(tokens[_i]); + + if (l = checkSC(_i)) _i += l; // s3 + + if (tokens[_i].type === TokenType.RightSquareBracket) return _i - start; + + return fail(tokens[_i]); + } + + function getAttrib1() { + var startPos = pos; + + pos++; + + var a = (needInfo? [{ ln: tokens[startPos].ln }, CSSPNodeType.AttribType] : [CSSPNodeType.AttribType]) + .concat(getSC()) + .concat([getIdent()]) + .concat(getSC()) + .concat([getAttrselector()]) + .concat(getSC()) + .concat([checkString(pos)? getString() : getIdent()]) + .concat(getSC()); + + pos++; + + return a; + } + + function checkAttrib2(_i) { + var start = _i; + + _i++; + + var l = checkSC(_i); + + if (l) _i += l; + + if (l = checkIdent(_i)) _i += l; + + if (l = checkSC(_i)) _i += l; + + if (tokens[_i].type === TokenType.RightSquareBracket) return _i - start; + + return fail(tokens[_i]); + } + + function getAttrib2() { + var startPos = pos; + + pos++; + + var a = (needInfo? [{ ln: tokens[startPos].ln }, CSSPNodeType.AttribType] : [CSSPNodeType.AttribType]) + .concat(getSC()) + .concat([getIdent()]) + .concat(getSC()); + + pos++; + + return a; + } + + function getAttrib() { + if (checkAttrib1(pos)) return getAttrib1(); + if (checkAttrib2(pos)) return getAttrib2(); + } + +//attrselector = (seq('=') | seq('~=') | seq('^=') | seq('$=') | seq('*=') | seq('|=')):x -> [#attrselector, x] + function checkAttrselector(_i) { + if (tokens[_i].type === TokenType.EqualsSign) return 1; + if (tokens[_i].type === TokenType.VerticalLine && (!tokens[_i + 1] || tokens[_i + 1].type !== TokenType.EqualsSign)) return 1; + + if (!tokens[_i + 1] || tokens[_i + 1].type !== TokenType.EqualsSign) return fail(tokens[_i]); + + switch(tokens[_i].type) { + case TokenType.Tilde: + case TokenType.CircumflexAccent: + case TokenType.DollarSign: + case TokenType.Asterisk: + case TokenType.VerticalLine: + return 2; + } + + return fail(tokens[_i]); + } + + function getAttrselector() { + var startPos = pos, + s = tokens[pos++].value; + + if (tokens[pos] && tokens[pos].type === TokenType.EqualsSign) s += tokens[pos++].value; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.AttrselectorType, s] : + [CSSPNodeType.AttrselectorType, s]; + } + +//atrule = atruler | atruleb | atrules + function checkAtrule(_i) { + var start = _i, + l; + + if (tokens[start].atrule_l !== undefined) return tokens[start].atrule_l; + + if (l = checkAtruler(_i)) tokens[_i].atrule_type = 1; + else if (l = checkAtruleb(_i)) tokens[_i].atrule_type = 2; + else if (l = checkAtrules(_i)) tokens[_i].atrule_type = 3; + else return fail(tokens[start]); + + tokens[start].atrule_l = l; + + return l; + } + + function getAtrule() { + switch (tokens[pos].atrule_type) { + case 1: return getAtruler(); + case 2: return getAtruleb(); + case 3: return getAtrules(); + } + } + +//atruleb = atkeyword:ak tset*:ap block:b -> this.concat([#atruleb, ak], ap, [b]) + function checkAtruleb(_i) { + var start = _i, + l; + + if (l = checkAtkeyword(_i)) _i += l; + else return fail(tokens[_i]); + + if (l = checkTsets(_i)) _i += l; + + if (l = checkBlock(_i)) _i += l; + else return fail(tokens[_i]); + + return _i - start; + } + + function getAtruleb() { + return (needInfo? + [{ ln: tokens[pos].ln }, CSSPNodeType.AtrulebType, getAtkeyword()] : + [CSSPNodeType.AtrulebType, getAtkeyword()]) + .concat(getTsets()) + .concat([getBlock()]); + } + +//atruler = atkeyword:ak atrulerq:x '{' atrulers:y '}' -> [#atruler, ak, x, y] + function checkAtruler(_i) { + var start = _i, + l; + + if (l = checkAtkeyword(_i)) _i += l; + else return fail(tokens[_i]); + + if (l = checkAtrulerq(_i)) _i += l; + + if (_i < tokens.length && tokens[_i].type === TokenType.LeftCurlyBracket) _i++; + else return fail(tokens[_i]); + + if (l = checkAtrulers(_i)) _i += l; + + if (_i < tokens.length && tokens[_i].type === TokenType.RightCurlyBracket) _i++; + else return fail(tokens[_i]); + + return _i - start; + } + + function getAtruler() { + var atruler = needInfo? + [{ ln: tokens[pos].ln }, CSSPNodeType.AtrulerType, getAtkeyword(), getAtrulerq()] : + [CSSPNodeType.AtrulerType, getAtkeyword(), getAtrulerq()]; + + pos++; + + atruler.push(getAtrulers()); + + pos++; + + return atruler; + } + +//atrulerq = tset*:ap -> [#atrulerq].concat(ap) + function checkAtrulerq(_i) { + return checkTsets(_i); + } + + function getAtrulerq() { + return (needInfo? [{ ln: tokens[pos].ln }, CSSPNodeType.AtrulerqType] : [CSSPNodeType.AtrulerqType]).concat(getTsets()); + } + +//atrulers = sc*:s0 ruleset*:r sc*:s1 -> this.concat([#atrulers], s0, r, s1) + function checkAtrulers(_i) { + var start = _i, + l; + + if (l = checkSC(_i)) _i += l; + + while ((l = checkRuleset(_i)) || (l = checkAtrule(_i)) || (l = checkSC(_i))) { + _i += l; + } + + tokens[_i].atrulers_end = 1; + + if (l = checkSC(_i)) _i += l; + + return _i - start; + } + + function getAtrulers() { + var atrulers = (needInfo? [{ ln: tokens[pos].ln }, CSSPNodeType.AtrulersType] : [CSSPNodeType.AtrulersType]).concat(getSC()), + x; + + while (!tokens[pos].atrulers_end) { + if (checkSC(pos)) { + atrulers = atrulers.concat(getSC()); + } else if (checkRuleset(pos)) { + atrulers.push(getRuleset()); + } else { + atrulers.push(getAtrule()); + } + } + + return atrulers.concat(getSC()); + } + +//atrules = atkeyword:ak tset*:ap ';' -> this.concat([#atrules, ak], ap) + function checkAtrules(_i) { + var start = _i, + l; + + if (l = checkAtkeyword(_i)) _i += l; + else return fail(tokens[_i]); + + if (l = checkTsets(_i)) _i += l; + + if (_i >= tokens.length) return _i - start; + + if (tokens[_i].type === TokenType.Semicolon) _i++; + else return fail(tokens[_i]); + + return _i - start; + } + + function getAtrules() { + var atrules = (needInfo? [{ ln: tokens[pos].ln }, CSSPNodeType.AtrulesType, getAtkeyword()] : [CSSPNodeType.AtrulesType, getAtkeyword()]).concat(getTsets()); + + pos++; + + return atrules; + } + +//block = '{' blockdecl*:x '}' -> this.concatContent([#block], x) + function checkBlock(_i) { + if (_i < tokens.length && tokens[_i].type === TokenType.LeftCurlyBracket) return tokens[_i].right - _i + 1; + + return fail(tokens[_i]); + } + + function getBlock() { + var block = needInfo? [{ ln: tokens[pos].ln }, CSSPNodeType.BlockType] : [CSSPNodeType.BlockType], + end = tokens[pos].right; + + pos++; + + while (pos < end) { + if (checkBlockdecl(pos)) block = block.concat(getBlockdecl()); + else throwError(); + } + + pos = end + 1; + + return block; + } + +//blockdecl = sc*:s0 (filter | declaration):x decldelim:y sc*:s1 -> this.concat(s0, [x], [y], s1) +// | sc*:s0 (filter | declaration):x sc*:s1 -> this.concat(s0, [x], s1) +// | sc*:s0 decldelim:x sc*:s1 -> this.concat(s0, [x], s1) +// | sc+:s0 -> s0 + + function checkBlockdecl(_i) { + var l; + + if (l = _checkBlockdecl0(_i)) tokens[_i].bd_type = 1; + else if (l = _checkBlockdecl1(_i)) tokens[_i].bd_type = 2; + else if (l = _checkBlockdecl2(_i)) tokens[_i].bd_type = 3; + else if (l = _checkBlockdecl3(_i)) tokens[_i].bd_type = 4; + else return fail(tokens[_i]); + + return l; + } + + function getBlockdecl() { + switch (tokens[pos].bd_type) { + case 1: return _getBlockdecl0(); + case 2: return _getBlockdecl1(); + case 3: return _getBlockdecl2(); + case 4: return _getBlockdecl3(); + } + } + + //sc*:s0 (filter | declaration):x decldelim:y sc*:s1 -> this.concat(s0, [x], [y], s1) + function _checkBlockdecl0(_i) { + var start = _i, + l; + + if (l = checkSC(_i)) _i += l; + + if (l = checkFilter(_i)) { + tokens[_i].bd_filter = 1; + _i += l; + } else if (l = checkDeclaration(_i)) { + tokens[_i].bd_decl = 1; + _i += l; + } else return fail(tokens[_i]); + + if (_i < tokens.length && (l = checkDecldelim(_i))) _i += l; + else return fail(tokens[_i]); + + if (l = checkSC(_i)) _i += l; + + return _i - start; + } + + function _getBlockdecl0() { + return getSC() + .concat([tokens[pos].bd_filter? getFilter() : getDeclaration()]) + .concat([getDecldelim()]) + .concat(getSC()); + } + + //sc*:s0 (filter | declaration):x sc*:s1 -> this.concat(s0, [x], s1) + function _checkBlockdecl1(_i) { + var start = _i, + l; + + if (l = checkSC(_i)) _i += l; + + if (l = checkFilter(_i)) { + tokens[_i].bd_filter = 1; + _i += l; + } else if (l = checkDeclaration(_i)) { + tokens[_i].bd_decl = 1; + _i += l; + } else return fail(tokens[_i]); + + if (l = checkSC(_i)) _i += l; + + return _i - start; + } + + function _getBlockdecl1() { + return getSC() + .concat([tokens[pos].bd_filter? getFilter() : getDeclaration()]) + .concat(getSC()); + } + + //sc*:s0 decldelim:x sc*:s1 -> this.concat(s0, [x], s1) + function _checkBlockdecl2(_i) { + var start = _i, + l; + + if (l = checkSC(_i)) _i += l; + + if (l = checkDecldelim(_i)) _i += l; + else return fail(tokens[_i]); + + if (l = checkSC(_i)) _i += l; + + return _i - start; + } + + function _getBlockdecl2() { + return getSC() + .concat([getDecldelim()]) + .concat(getSC()); + } + + //sc+:s0 -> s0 + function _checkBlockdecl3(_i) { + return checkSC(_i); + } + + function _getBlockdecl3() { + return getSC(); + } + +//braces = '(' tset*:x ')' -> this.concat([#braces, '(', ')'], x) +// | '[' tset*:x ']' -> this.concat([#braces, '[', ']'], x) + function checkBraces(_i) { + if (_i >= tokens.length || + (tokens[_i].type !== TokenType.LeftParenthesis && + tokens[_i].type !== TokenType.LeftSquareBracket) + ) return fail(tokens[_i]); + + return tokens[_i].right - _i + 1; + } + + function getBraces() { + var startPos = pos, + left = pos, + right = tokens[pos].right; + + pos++; + + var tsets = getTsets(); + + pos++; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.BracesType, tokens[left].value, tokens[right].value].concat(tsets) : + [CSSPNodeType.BracesType, tokens[left].value, tokens[right].value].concat(tsets); + } + + function checkCDC(_i) {} + + function checkCDO(_i) {} + + // node: Clazz + function checkClazz(_i) { + var l; + + if (tokens[_i].clazz_l) return tokens[_i].clazz_l; + + if (tokens[_i].type === TokenType.FullStop) { + if (l = checkIdent(_i + 1)) { + tokens[_i].clazz_l = l + 1; + return l + 1; + } + } + + return fail(tokens[_i]); + } + + function getClazz() { + var startPos = pos; + + pos++; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.ClazzType, getIdent()] : + [CSSPNodeType.ClazzType, getIdent()]; + } + + // node: Combinator + function checkCombinator(_i) { + if (tokens[_i].type === TokenType.PlusSign || + tokens[_i].type === TokenType.GreaterThanSign || + tokens[_i].type === TokenType.Tilde) return 1; + + return fail(tokens[_i]); + } + + function getCombinator() { + return needInfo? + [{ ln: tokens[pos].ln }, CSSPNodeType.CombinatorType, tokens[pos++].value] : + [CSSPNodeType.CombinatorType, tokens[pos++].value]; + } + + // node: Comment + function checkComment(_i) { + if (tokens[_i].type === TokenType.CommentML) return 1; + + return fail(tokens[_i]); + } + + function getComment() { + var startPos = pos, + s = tokens[pos].value.substring(2), + l = s.length; + + if (s.charAt(l - 2) === '*' && s.charAt(l - 1) === '/') s = s.substring(0, l - 2); + + pos++; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.CommentType, s] : + [CSSPNodeType.CommentType, s]; + } + + // declaration = property:x ':' value:y -> [#declaration, x, y] + function checkDeclaration(_i) { + var start = _i, + l; + + if (l = checkProperty(_i)) _i += l; + else return fail(tokens[_i]); + + if (_i < tokens.length && tokens[_i].type === TokenType.Colon) _i++; + else return fail(tokens[_i]); + + if (l = checkValue(_i)) _i += l; + else return fail(tokens[_i]); + + return _i - start; + } + + function getDeclaration() { + var declaration = needInfo? + [{ ln: tokens[pos].ln }, CSSPNodeType.DeclarationType, getProperty()] : + [CSSPNodeType.DeclarationType, getProperty()]; + + pos++; + + declaration.push(getValue()); + + return declaration; + } + + // node: Decldelim + function checkDecldelim(_i) { + if (_i < tokens.length && tokens[_i].type === TokenType.Semicolon) return 1; + + return fail(tokens[_i]); + } + + function getDecldelim() { + var startPos = pos; + + pos++; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.DecldelimType] : + [CSSPNodeType.DecldelimType]; + } + + // node: Delim + function checkDelim(_i) { + if (_i < tokens.length && tokens[_i].type === TokenType.Comma) return 1; + + if (_i >= tokens.length) return fail(tokens[tokens.length - 1]); + + return fail(tokens[_i]); + } + + function getDelim() { + var startPos = pos; + + pos++; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.DelimType] : + [CSSPNodeType.DelimType]; + } + + // node: Dimension + function checkDimension(_i) { + var ln = checkNumber(_i), + li; + + if (!ln || (ln && _i + ln >= tokens.length)) return fail(tokens[_i]); + + if (li = checkNmName2(_i + ln)) return ln + li; + + return fail(tokens[_i]); + } + + function getDimension() { + var startPos = pos, + n = getNumber(), + dimension = needInfo ? + [{ ln: tokens[pos].ln }, CSSPNodeType.IdentType, getNmName2()] : + [CSSPNodeType.IdentType, getNmName2()]; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.DimensionType, n, dimension] : + [CSSPNodeType.DimensionType, n, dimension]; + } + +//filter = filterp:x ':' filterv:y -> [#filter, x, y] + function checkFilter(_i) { + var start = _i, + l; + + if (l = checkFilterp(_i)) _i += l; + else return fail(tokens[_i]); + + if (tokens[_i].type === TokenType.Colon) _i++; + else return fail(tokens[_i]); + + if (l = checkFilterv(_i)) _i += l; + else return fail(tokens[_i]); + + return _i - start; + } + + function getFilter() { + var filter = needInfo? + [{ ln: tokens[pos].ln }, CSSPNodeType.FilterType, getFilterp()] : + [CSSPNodeType.FilterType, getFilterp()]; + + pos++; + + filter.push(getFilterv()); + + return filter; + } + +//filterp = (seq('-filter') | seq('_filter') | seq('*filter') | seq('-ms-filter') | seq('filter')):t sc*:s0 -> this.concat([#property, [#ident, t]], s0) + function checkFilterp(_i) { + var start = _i, + l, + x; + + if (_i < tokens.length) { + if (tokens[_i].value === 'filter') l = 1; + else { + x = joinValues2(_i, 2); + + if (x === '-filter' || x === '_filter' || x === '*filter') l = 2; + else { + x = joinValues2(_i, 4); + + if (x === '-ms-filter') l = 4; + else return fail(tokens[_i]); + } + } + + tokens[start].filterp_l = l; + + _i += l; + + if (checkSC(_i)) _i += l; + + return _i - start; + } + + return fail(tokens[_i]); + } + + function getFilterp() { + var startPos = pos, + x = joinValues2(pos, tokens[pos].filterp_l), + ident = needInfo? [{ ln: tokens[startPos].ln }, CSSPNodeType.IdentType, x] : [CSSPNodeType.IdentType, x]; + + pos += tokens[pos].filterp_l; + + return (needInfo? [{ ln: tokens[startPos].ln }, CSSPNodeType.PropertyType, ident] : [CSSPNodeType.PropertyType, ident]) + .concat(getSC()); + + } + +//filterv = progid+:x -> [#filterv].concat(x) + function checkFilterv(_i) { + var start = _i, + l; + + if (l = checkProgid(_i)) _i += l; + else return fail(tokens[_i]); + + while (l = checkProgid(_i)) { + _i += l; + } + + tokens[start].last_progid = _i; + + if (_i < tokens.length && (l = checkSC(_i))) _i += l; + + if (_i < tokens.length && (l = checkImportant(_i))) _i += l; + + return _i - start; + } + + function getFilterv() { + var filterv = needInfo? [{ ln: tokens[pos].ln }, CSSPNodeType.FiltervType] : [CSSPNodeType.FiltervType], + last_progid = tokens[pos].last_progid; + + while (pos < last_progid) { + filterv.push(getProgid()); + } + + filterv = filterv.concat(checkSC(pos) ? getSC() : []); + + if (pos < tokens.length && checkImportant(pos)) filterv.push(getImportant()); + + return filterv; + } + +//functionExpression = ``expression('' functionExpressionBody*:x ')' -> [#functionExpression, x.join('')], + function checkFunctionExpression(_i) { + var start = _i; + + if (!tokens[_i] || tokens[_i++].value !== 'expression') return fail(tokens[_i - 1]); + + if (!tokens[_i] || tokens[_i].type !== TokenType.LeftParenthesis) return fail(tokens[_i]); + + return tokens[_i].right - start + 1; + } + + function getFunctionExpression() { + var startPos = pos; + + pos++; + + var e = joinValues(pos + 1, tokens[pos].right - 1); + + pos = tokens[pos].right + 1; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.FunctionExpressionType, e] : + [CSSPNodeType.FunctionExpressionType, e]; + } + +//funktion = ident:x '(' functionBody:y ')' -> [#funktion, x, y] + function checkFunktion(_i) { + var start = _i, + l = checkIdent(_i); + + if (!l) return fail(tokens[_i]); + + _i += l; + + if (_i >= tokens.length || tokens[_i].type !== TokenType.LeftParenthesis) return fail(tokens[_i - 1]); + + return tokens[_i].right - start + 1; + } + + function getFunktion() { + var startPos = pos, + ident = getIdent(); + + pos++; + + var body = ident[needInfo? 2 : 1] !== 'not'? + getFunctionBody() : + getNotFunctionBody(); // ok, here we have CSS3 initial draft: http://dev.w3.org/csswg/selectors3/#negation + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.FunktionType, ident, body] : + [CSSPNodeType.FunktionType, ident, body]; + } + + function getFunctionBody() { + var startPos = pos, + body = [], + x; + + while (tokens[pos].type !== TokenType.RightParenthesis) { + if (checkTset(pos)) { + x = getTset(); + if ((needInfo && typeof x[1] === 'string') || typeof x[0] === 'string') body.push(x); + else body = body.concat(x); + } else if (checkClazz(pos)) { + body.push(getClazz()); + } else { + throwError(); + } + } + + pos++; + + return (needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.FunctionBodyType] : + [CSSPNodeType.FunctionBodyType] + ).concat(body); + } + + function getNotFunctionBody() { + var startPos = pos, + body = [], + x; + + while (tokens[pos].type !== TokenType.RightParenthesis) { + if (checkSimpleselector(pos)) { + body.push(getSimpleSelector()); + } else { + throwError(); + } + } + + pos++; + + return (needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.FunctionBodyType] : + [CSSPNodeType.FunctionBodyType] + ).concat(body); + } + + // node: Ident + function checkIdent(_i) { + if (_i >= tokens.length) return fail(tokens[_i]); + + var start = _i, + wasIdent = false; + + if (tokens[_i].type === TokenType.LowLine) return checkIdentLowLine(_i); + + // start char / word + if (tokens[_i].type === TokenType.HyphenMinus || + tokens[_i].type === TokenType.Identifier || + tokens[_i].type === TokenType.DollarSign || + tokens[_i].type === TokenType.Asterisk) _i++; + else return fail(tokens[_i]); + + wasIdent = tokens[_i - 1].type === TokenType.Identifier; + + for (; _i < tokens.length; _i++) { + if (tokens[_i].type !== TokenType.HyphenMinus && + tokens[_i].type !== TokenType.LowLine) { + if (tokens[_i].type !== TokenType.Identifier && + (tokens[_i].type !== TokenType.DecimalNumber || !wasIdent) + ) break; + else wasIdent = true; + } + } + + if (!wasIdent && tokens[start].type !== TokenType.Asterisk) return fail(tokens[_i]); + + tokens[start].ident_last = _i - 1; + + return _i - start; + } + + function checkIdentLowLine(_i) { + var start = _i; + + _i++; + + for (; _i < tokens.length; _i++) { + if (tokens[_i].type !== TokenType.HyphenMinus && + tokens[_i].type !== TokenType.DecimalNumber && + tokens[_i].type !== TokenType.LowLine && + tokens[_i].type !== TokenType.Identifier) break; + } + + tokens[start].ident_last = _i - 1; + + return _i - start; + } + + function getIdent() { + var startPos = pos, + s = joinValues(pos, tokens[pos].ident_last); + + pos = tokens[pos].ident_last + 1; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.IdentType, s] : + [CSSPNodeType.IdentType, s]; + } + +//important = '!' sc*:s0 seq('important') -> [#important].concat(s0) + function checkImportant(_i) { + var start = _i, + l; + + if (tokens[_i++].type !== TokenType.ExclamationMark) return fail(tokens[_i - 1]); + + if (l = checkSC(_i)) _i += l; + + if (tokens[_i].value !== 'important') return fail(tokens[_i]); + + return _i - start + 1; + } + + function getImportant() { + var startPos = pos; + + pos++; + + var sc = getSC(); + + pos++; + + return (needInfo? [{ ln: tokens[startPos].ln }, CSSPNodeType.ImportantType] : [CSSPNodeType.ImportantType]).concat(sc); + } + + // node: Namespace + function checkNamespace(_i) { + if (tokens[_i].type === TokenType.VerticalLine) return 1; + + return fail(tokens[_i]); + } + + function getNamespace() { + var startPos = pos; + + pos++; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.NamespaceType] : + [CSSPNodeType.NamespaceType]; + } + +//nth = (digit | 'n')+:x -> [#nth, x.join('')] +// | (seq('even') | seq('odd')):x -> [#nth, x] + function checkNth(_i) { + return checkNth1(_i) || checkNth2(_i); + } + + function checkNth1(_i) { + var start = _i; + + for (; _i < tokens.length; _i++) { + if (tokens[_i].type !== TokenType.DecimalNumber && tokens[_i].value !== 'n') break; + } + + if (_i !== start) { + tokens[start].nth_last = _i - 1; + return _i - start; + } + + return fail(tokens[_i]); + } + + function getNth() { + var startPos = pos; + + if (tokens[pos].nth_last) { + var n = needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.NthType, joinValues(pos, tokens[pos].nth_last)] : + [CSSPNodeType.NthType, joinValues(pos, tokens[pos].nth_last)]; + + pos = tokens[pos].nth_last + 1; + + return n; + } + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.NthType, tokens[pos++].value] : + [CSSPNodeType.NthType, tokens[pos++].value]; + } + + function checkNth2(_i) { + if (tokens[_i].value === 'even' || tokens[_i].value === 'odd') return 1; + + return fail(tokens[_i]); + } + +//nthf = ':' seq('nth-'):x (seq('child') | seq('last-child') | seq('of-type') | seq('last-of-type')):y -> (x + y) + function checkNthf(_i) { + var start = _i, + l = 0; + + if (tokens[_i++].type !== TokenType.Colon) return fail(tokens[_i - 1]); l++; + + if (tokens[_i++].value !== 'nth' || tokens[_i++].value !== '-') return fail(tokens[_i - 1]); l += 2; + + if ('child' === tokens[_i].value) { + l += 1; + } else if ('last-child' === tokens[_i].value + + tokens[_i + 1].value + + tokens[_i + 2].value) { + l += 3; + } else if ('of-type' === tokens[_i].value + + tokens[_i + 1].value + + tokens[_i + 2].value) { + l += 3; + } else if ('last-of-type' === tokens[_i].value + + tokens[_i + 1].value + + tokens[_i + 2].value + + tokens[_i + 3].value + + tokens[_i + 4].value) { + l += 5; + } else return fail(tokens[_i]); + + tokens[start + 1].nthf_last = start + l - 1; + + return l; + } + + function getNthf() { + pos++; + + var s = joinValues(pos, tokens[pos].nthf_last); + + pos = tokens[pos].nthf_last + 1; + + return s; + } + +//nthselector = nthf:x '(' (sc | unary | nth)*:y ')' -> [#nthselector, [#ident, x]].concat(y) + function checkNthselector(_i) { + var start = _i, + l; + + if (l = checkNthf(_i)) _i += l; + else return fail(tokens[_i]); + + if (tokens[_i].type !== TokenType.LeftParenthesis || !tokens[_i].right) return fail(tokens[_i]); + + l++; + + var rp = tokens[_i++].right; + + while (_i < rp) { + if (l = checkSC(_i)) _i += l; + else if (l = checkUnary(_i)) _i += l; + else if (l = checkNth(_i)) _i += l; + else return fail(tokens[_i]); + } + + return rp - start + 1; + } + + function getNthselector() { + var startPos = pos, + nthf = needInfo? + [{ ln: tokens[pos].ln }, CSSPNodeType.IdentType, getNthf()] : + [CSSPNodeType.IdentType, getNthf()], + ns = needInfo? + [{ ln: tokens[pos].ln }, CSSPNodeType.NthselectorType, nthf] : + [CSSPNodeType.NthselectorType, nthf]; + + pos++; + + while (tokens[pos].type !== TokenType.RightParenthesis) { + if (checkSC(pos)) ns = ns.concat(getSC()); + else if (checkUnary(pos)) ns.push(getUnary()); + else if (checkNth(pos)) ns.push(getNth()); + } + + pos++; + + return ns; + } + + // node: Number + function checkNumber(_i) { + if (_i < tokens.length && tokens[_i].number_l) return tokens[_i].number_l; + + if (_i < tokens.length && tokens[_i].type === TokenType.DecimalNumber && + (!tokens[_i + 1] || + (tokens[_i + 1] && tokens[_i + 1].type !== TokenType.FullStop)) + ) return (tokens[_i].number_l = 1, tokens[_i].number_l); // 10 + + if (_i < tokens.length && + tokens[_i].type === TokenType.DecimalNumber && + tokens[_i + 1] && tokens[_i + 1].type === TokenType.FullStop && + (!tokens[_i + 2] || (tokens[_i + 2].type !== TokenType.DecimalNumber)) + ) return (tokens[_i].number_l = 2, tokens[_i].number_l); // 10. + + if (_i < tokens.length && + tokens[_i].type === TokenType.FullStop && + tokens[_i + 1].type === TokenType.DecimalNumber + ) return (tokens[_i].number_l = 2, tokens[_i].number_l); // .10 + + if (_i < tokens.length && + tokens[_i].type === TokenType.DecimalNumber && + tokens[_i + 1] && tokens[_i + 1].type === TokenType.FullStop && + tokens[_i + 2] && tokens[_i + 2].type === TokenType.DecimalNumber + ) return (tokens[_i].number_l = 3, tokens[_i].number_l); // 10.10 + + return fail(tokens[_i]); + } + + function getNumber() { + var s = '', + startPos = pos, + l = tokens[pos].number_l; + + for (var i = 0; i < l; i++) { + s += tokens[pos + i].value; + } + + pos += l; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.NumberType, s] : + [CSSPNodeType.NumberType, s]; + } + + // node: Operator + function checkOperator(_i) { + if (_i < tokens.length && + (tokens[_i].type === TokenType.Solidus || + tokens[_i].type === TokenType.Comma || + tokens[_i].type === TokenType.Colon || + tokens[_i].type === TokenType.EqualsSign)) return 1; + + return fail(tokens[_i]); + } + + function getOperator() { + return needInfo? + [{ ln: tokens[pos].ln }, CSSPNodeType.OperatorType, tokens[pos++].value] : + [CSSPNodeType.OperatorType, tokens[pos++].value]; + } + + // node: Percentage + function checkPercentage(_i) { + var x = checkNumber(_i); + + if (!x || (x && _i + x >= tokens.length)) return fail(tokens[_i]); + + if (tokens[_i + x].type === TokenType.PercentSign) return x + 1; + + return fail(tokens[_i]); + } + + function getPercentage() { + var startPos = pos, + n = getNumber(); + + pos++; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.PercentageType, n] : + [CSSPNodeType.PercentageType, n]; + } + +//progid = sc*:s0 seq('progid:DXImageTransform.Microsoft.'):x letter+:y '(' (m_string | m_comment | ~')' char)+:z ')' sc*:s1 +// -> this.concat([#progid], s0, [[#raw, x + y.join('') + '(' + z.join('') + ')']], s1), + function checkProgid(_i) { + var start = _i, + l, + x; + + if (l = checkSC(_i)) _i += l; + + if ((x = joinValues2(_i, 6)) === 'progid:DXImageTransform.Microsoft.') { + _start = _i; + _i += 6; + } else return fail(tokens[_i - 1]); + + if (l = checkIdent(_i)) _i += l; + else return fail(tokens[_i]); + + if (l = checkSC(_i)) _i += l; + + if (tokens[_i].type === TokenType.LeftParenthesis) { + tokens[start].progid_end = tokens[_i].right; + _i = tokens[_i].right + 1; + } else return fail(tokens[_i]); + + if (l = checkSC(_i)) _i += l; + + return _i - start; + } + + function getProgid() { + var startPos = pos, + progid_end = tokens[pos].progid_end; + + return (needInfo? [{ ln: tokens[startPos].ln }, CSSPNodeType.ProgidType] : [CSSPNodeType.ProgidType]) + .concat(getSC()) + .concat([_getProgid(progid_end)]) + .concat(getSC()); + } + + function _getProgid(progid_end) { + var startPos = pos, + x = joinValues(pos, progid_end); + + pos = progid_end + 1; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.RawType, x] : + [CSSPNodeType.RawType, x]; + } + +//property = ident:x sc*:s0 -> this.concat([#property, x], s0) + function checkProperty(_i) { + var start = _i, + l; + + if (l = checkIdent(_i)) _i += l; + else return fail(tokens[_i]); + + if (l = checkSC(_i)) _i += l; + return _i - start; + } + + function getProperty() { + var startPos = pos; + + return (needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.PropertyType, getIdent()] : + [CSSPNodeType.PropertyType, getIdent()]) + .concat(getSC()); + } + + function checkPseudo(_i) { + return checkPseudoe(_i) || + checkPseudoc(_i); + } + + function getPseudo() { + if (checkPseudoe(pos)) return getPseudoe(); + if (checkPseudoc(pos)) return getPseudoc(); + } + + function checkPseudoe(_i) { + var l; + + if (tokens[_i++].type !== TokenType.Colon) return fail(tokens[_i - 1]); + + if (tokens[_i++].type !== TokenType.Colon) return fail(tokens[_i - 1]); + + if (l = checkIdent(_i)) return l + 2; + + return fail(tokens[_i]); + } + + function getPseudoe() { + var startPos = pos; + + pos += 2; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.PseudoeType, getIdent()] : + [CSSPNodeType.PseudoeType, getIdent()]; + } + +//pseudoc = ':' (funktion | ident):x -> [#pseudoc, x] + function checkPseudoc(_i) { + var l; + + if (tokens[_i++].type !== TokenType.Colon) return fail(tokens[_i - 1]); + + if ((l = checkFunktion(_i)) || (l = checkIdent(_i))) return l + 1; + + return fail(tokens[_i]); + } + + function getPseudoc() { + var startPos = pos; + + pos++; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.PseudocType, checkFunktion(pos)? getFunktion() : getIdent()] : + [CSSPNodeType.PseudocType, checkFunktion(pos)? getFunktion() : getIdent()]; + } + + //ruleset = selector*:x block:y -> this.concat([#ruleset], x, [y]) + function checkRuleset(_i) { + var start = _i, + l; + + if (tokens[start].ruleset_l !== undefined) return tokens[start].ruleset_l; + + while (l = checkSelector(_i)) { + _i += l; + } + + if (l = checkBlock(_i)) _i += l; + else return fail(tokens[_i]); + + tokens[start].ruleset_l = _i - start; + + return _i - start; + } + + function getRuleset() { + var ruleset = needInfo? [{ ln: tokens[pos].ln }, CSSPNodeType.RulesetType] : [CSSPNodeType.RulesetType]; + + while (!checkBlock(pos)) { + ruleset.push(getSelector()); + } + + ruleset.push(getBlock()); + + return ruleset; + } + + // node: S + function checkS(_i) { + if (tokens[_i].ws) return tokens[_i].ws_last - _i + 1; + + return fail(tokens[_i]); + } + + function getS() { + var startPos = pos, + s = joinValues(pos, tokens[pos].ws_last); + + pos = tokens[pos].ws_last + 1; + + return needInfo? [{ ln: tokens[startPos].ln }, CSSPNodeType.SType, s] : [CSSPNodeType.SType, s]; + } + + function checkSC(_i) { + var l, + lsc = 0; + + while (_i < tokens.length) { + if (!(l = checkS(_i)) && !(l = checkComment(_i))) break; + _i += l; + lsc += l; + } + + if (lsc) return lsc; + + if (_i >= tokens.length) return fail(tokens[tokens.length - 1]); + + return fail(tokens[_i]); + } + + function getSC() { + var sc = []; + + while (pos < tokens.length) { + if (checkS(pos)) sc.push(getS()); + else if (checkComment(pos)) sc.push(getComment()); + else break; + } + + return sc; + } + + //selector = (simpleselector | delim)+:x -> this.concat([#selector], x) + function checkSelector(_i) { + var start = _i, + l; + + if (_i < tokens.length) { + while (l = checkSimpleselector(_i) || checkDelim(_i)) { + _i += l; + } + + tokens[start].selector_end = _i - 1; + + return _i - start; + } + } + + function getSelector() { + var selector = needInfo? [{ ln: tokens[pos].ln }, CSSPNodeType.SelectorType] : [CSSPNodeType.SelectorType], + selector_end = tokens[pos].selector_end; + + while (pos <= selector_end) { + selector.push(checkDelim(pos) ? getDelim() : getSimpleSelector()); + } + + return selector; + } + + // node: Shash + function checkShash(_i) { + if (tokens[_i].type !== TokenType.NumberSign) return fail(tokens[_i]); + + var l = checkNmName(_i + 1); + + if (l) return l + 1; + + return fail(tokens[_i]); + } + + function getShash() { + var startPos = pos; + + pos++; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.ShashType, getNmName()] : + [CSSPNodeType.ShashType, getNmName()]; + } + +//simpleselector = (nthselector | combinator | attrib | pseudo | clazz | shash | any | sc | namespace)+:x -> this.concatContent([#simpleselector], [x]) + function checkSimpleselector(_i) { + var start = _i, + l; + + while (_i < tokens.length) { + if (l = _checkSimpleSelector(_i)) _i += l; + else break; + } + + if (_i - start) return _i - start; + + if (_i >= tokens.length) return fail(tokens[tokens.length - 1]); + + return fail(tokens[_i]); + } + + function _checkSimpleSelector(_i) { + return checkNthselector(_i) || + checkCombinator(_i) || + checkAttrib(_i) || + checkPseudo(_i) || + checkClazz(_i) || + checkShash(_i) || + checkAny(_i) || + checkSC(_i) || + checkNamespace(_i); + } + + function getSimpleSelector() { + var ss = needInfo? [{ ln: tokens[pos].ln }, CSSPNodeType.SimpleselectorType] : [CSSPNodeType.SimpleselectorType], + t; + + while (pos < tokens.length && _checkSimpleSelector(pos)) { + t = _getSimpleSelector(); + + if ((needInfo && typeof t[1] === 'string') || typeof t[0] === 'string') ss.push(t); + else ss = ss.concat(t); + } + + return ss; + } + + function _getSimpleSelector() { + if (checkNthselector(pos)) return getNthselector(); + else if (checkCombinator(pos)) return getCombinator(); + else if (checkAttrib(pos)) return getAttrib(); + else if (checkPseudo(pos)) return getPseudo(); + else if (checkClazz(pos)) return getClazz(); + else if (checkShash(pos)) return getShash(); + else if (checkAny(pos)) return getAny(); + else if (checkSC(pos)) return getSC(); + else if (checkNamespace(pos)) return getNamespace(); + } + + // node: String + function checkString(_i) { + if (_i < tokens.length && + (tokens[_i].type === TokenType.StringSQ || tokens[_i].type === TokenType.StringDQ) + ) return 1; + + return fail(tokens[_i]); + } + + function getString() { + var startPos = pos; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.StringType, tokens[pos++].value] : + [CSSPNodeType.StringType, tokens[pos++].value]; + } + + //stylesheet = (cdo | cdc | sc | statement)*:x -> this.concat([#stylesheet], x) + function checkStylesheet(_i) { + var start = _i, + l; + + while (_i < tokens.length) { + if (l = checkSC(_i)) _i += l; + else { + currentBlockLN = tokens[_i].ln; + if (l = checkAtrule(_i)) _i += l; + else if (l = checkRuleset(_i)) _i += l; + else if (l = checkUnknown(_i)) _i += l; + else throwError(); + } + } + + return _i - start; + } + + function getStylesheet(_i) { + var t, + stylesheet = needInfo? [{ ln: tokens[pos].ln }, CSSPNodeType.StylesheetType] : [CSSPNodeType.StylesheetType]; + + while (pos < tokens.length) { + if (checkSC(pos)) stylesheet = stylesheet.concat(getSC()); + else { + currentBlockLN = tokens[pos].ln; + if (checkRuleset(pos)) stylesheet.push(getRuleset()); + else if (checkAtrule(pos)) stylesheet.push(getAtrule()); + else if (checkUnknown(pos)) stylesheet.push(getUnknown()); + else throwError(); + } + } + + return stylesheet; + } + +//tset = vhash | any | sc | operator + function checkTset(_i) { + return checkVhash(_i) || + checkAny(_i) || + checkSC(_i) || + checkOperator(_i); + } + + function getTset() { + if (checkVhash(pos)) return getVhash(); + else if (checkAny(pos)) return getAny(); + else if (checkSC(pos)) return getSC(); + else if (checkOperator(pos)) return getOperator(); + } + + function checkTsets(_i) { + var start = _i, + l; + + while (l = checkTset(_i)) { + _i += l; + } + + return _i - start; + } + + function getTsets() { + var tsets = [], + x; + + while (x = getTset()) { + if ((needInfo && typeof x[1] === 'string') || typeof x[0] === 'string') tsets.push(x); + else tsets = tsets.concat(x); + } + + return tsets; + } + + // node: Unary + function checkUnary(_i) { + if (_i < tokens.length && + (tokens[_i].type === TokenType.HyphenMinus || + tokens[_i].type === TokenType.PlusSign) + ) return 1; + + return fail(tokens[_i]); + } + + function getUnary() { + var startPos = pos; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.UnaryType, tokens[pos++].value] : + [CSSPNodeType.UnaryType, tokens[pos++].value]; + } + + // node: Unknown + function checkUnknown(_i) { + if (_i < tokens.length && tokens[_i].type === TokenType.CommentSL) return 1; + + return fail(tokens[_i]); + } + + function getUnknown() { + var startPos = pos; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.UnknownType, tokens[pos++].value] : + [CSSPNodeType.UnknownType, tokens[pos++].value]; + } + +// uri = seq('url(') sc*:s0 string:x sc*:s1 ')' -> this.concat([#uri], s0, [x], s1) +// | seq('url(') sc*:s0 (~')' ~m_w char)*:x sc*:s1 ')' -> this.concat([#uri], s0, [[#raw, x.join('')]], s1), + function checkUri(_i) { + var start = _i, + l; + + if (_i < tokens.length && tokens[_i++].value !== 'url') return fail(tokens[_i - 1]); + + if (!tokens[_i] || tokens[_i].type !== TokenType.LeftParenthesis) return fail(tokens[_i]); + + return tokens[_i].right - start + 1; + } + + function getUri() { + var startPos = pos, + uriExcluding = {}; + + pos += 2; + + uriExcluding[TokenType.Space] = 1; + uriExcluding[TokenType.Tab] = 1; + uriExcluding[TokenType.Newline] = 1; + uriExcluding[TokenType.LeftParenthesis] = 1; + uriExcluding[TokenType.RightParenthesis] = 1; + + if (checkUri1(pos)) { + var uri = (needInfo? [{ ln: tokens[startPos].ln }, CSSPNodeType.UriType] : [CSSPNodeType.UriType]) + .concat(getSC()) + .concat([getString()]) + .concat(getSC()); + + pos++; + + return uri; + } else { + var uri = (needInfo? [{ ln: tokens[startPos].ln }, CSSPNodeType.UriType] : [CSSPNodeType.UriType]) + .concat(getSC()), + l = checkExcluding(uriExcluding, pos), + raw = needInfo? + [{ ln: tokens[pos].ln }, CSSPNodeType.RawType, joinValues(pos, pos + l)] : + [CSSPNodeType.RawType, joinValues(pos, pos + l)]; + + uri.push(raw); + + pos += l + 1; + + uri = uri.concat(getSC()); + + pos++; + + return uri; + } + } + + function checkUri1(_i) { + var start = _i, + l = checkSC(_i); + + if (l) _i += l; + + if (tokens[_i].type !== TokenType.StringDQ && tokens[_i].type !== TokenType.StringSQ) return fail(tokens[_i]); + + _i++; + + if (l = checkSC(_i)) _i += l; + + return _i - start; + } + + // value = (sc | vhash | any | block | atkeyword | operator | important)+:x -> this.concat([#value], x) + function checkValue(_i) { + var start = _i, + l; + + while (_i < tokens.length) { + if (l = _checkValue(_i)) _i += l; + else break; + } + + if (_i - start) return _i - start; + + return fail(tokens[_i]); + } + + function _checkValue(_i) { + return checkSC(_i) || + checkVhash(_i) || + checkAny(_i) || + checkBlock(_i) || + checkAtkeyword(_i) || + checkOperator(_i) || + checkImportant(_i); + } + + function getValue() { + var ss = needInfo? [{ ln: tokens[pos].ln }, CSSPNodeType.ValueType] : [CSSPNodeType.ValueType], + t; + + while (pos < tokens.length && _checkValue(pos)) { + t = _getValue(); + + if ((needInfo && typeof t[1] === 'string') || typeof t[0] === 'string') ss.push(t); + else ss = ss.concat(t); + } + + return ss; + } + + function _getValue() { + if (checkSC(pos)) return getSC(); + else if (checkVhash(pos)) return getVhash(); + else if (checkAny(pos)) return getAny(); + else if (checkBlock(pos)) return getBlock(); + else if (checkAtkeyword(pos)) return getAtkeyword(); + else if (checkOperator(pos)) return getOperator(); + else if (checkImportant(pos)) return getImportant(); + } + + // node: Vhash + function checkVhash(_i) { + if (_i >= tokens.length || tokens[_i].type !== TokenType.NumberSign) return fail(tokens[_i]); + + var l = checkNmName2(_i + 1); + + if (l) return l + 1; + + return fail(tokens[_i]); + } + + function getVhash() { + var startPos = pos; + + pos++; + + return needInfo? + [{ ln: tokens[startPos].ln }, CSSPNodeType.VhashType, getNmName2()] : + [CSSPNodeType.VhashType, getNmName2()]; + } + + function checkNmName(_i) { + var start = _i; + + // start char / word + if (tokens[_i].type === TokenType.HyphenMinus || + tokens[_i].type === TokenType.LowLine || + tokens[_i].type === TokenType.Identifier || + tokens[_i].type === TokenType.DecimalNumber) _i++; + else return fail(tokens[_i]); + + for (; _i < tokens.length; _i++) { + if (tokens[_i].type !== TokenType.HyphenMinus && + tokens[_i].type !== TokenType.LowLine && + tokens[_i].type !== TokenType.Identifier && + tokens[_i].type !== TokenType.DecimalNumber) break; + } + + tokens[start].nm_name_last = _i - 1; + + return _i - start; + } + + function getNmName() { + var s = joinValues(pos, tokens[pos].nm_name_last); + + pos = tokens[pos].nm_name_last + 1; + + return s; + } + + function checkNmName2(_i) { + var start = _i; + + if (tokens[_i].type === TokenType.Identifier) return 1; + else if (tokens[_i].type !== TokenType.DecimalNumber) return fail(tokens[_i]); + + _i++; + + if (!tokens[_i] || tokens[_i].type !== TokenType.Identifier) return 1; + + return 2; + } + + function getNmName2() { + var s = tokens[pos].value; + + if (tokens[pos++].type === TokenType.DecimalNumber && + pos < tokens.length && + tokens[pos].type === TokenType.Identifier + ) s += tokens[pos++].value; + + return s; + } + + function checkExcluding(exclude, _i) { + var start = _i; + + while(_i < tokens.length) { + if (exclude[tokens[_i++].type]) break; + } + + return _i - start - 2; + } + + function joinValues(start, finish) { + var s = ''; + + for (var i = start; i < finish + 1; i++) { + s += tokens[i].value; + } + + return s; + } + + function joinValues2(start, num) { + if (start + num - 1 >= tokens.length) return; + + var s = ''; + + for (var i = 0; i < num; i++) { + s += tokens[start + i].value; + } + + return s; + } + + function markSC() { + var ws = -1, // whitespaces + sc = -1, // ws and comments + t; + + for (var i = 0; i < tokens.length; i++) { + t = tokens[i]; + switch (t.type) { + case TokenType.Space: + case TokenType.Tab: + case TokenType.Newline: + t.ws = true; + t.sc = true; + + if (ws === -1) ws = i; + if (sc === -1) sc = i; + + break; + case TokenType.CommentML: + if (ws !== -1) { + tokens[ws].ws_last = i - 1; + ws = -1; + } + + t.sc = true; + + break; + default: + if (ws !== -1) { + tokens[ws].ws_last = i - 1; + ws = -1; + } + + if (sc !== -1) { + tokens[sc].sc_last = i - 1; + sc = -1; + } + } + } + + if (ws !== -1) tokens[ws].ws_last = i - 1; + if (sc !== -1) tokens[sc].sc_last = i - 1; + } + + return function(_tokens, rule, _needInfo) { + return _getAST(_tokens, rule, _needInfo); + } + +}()); + return function(s, rule, _needInfo) { + return getCSSPAST(getTokens(s), rule, _needInfo); + } +}()); diff --git a/node_modules/csscomb/node_modules/minimatch/LICENSE b/node_modules/csscomb/node_modules/minimatch/LICENSE new file mode 100644 index 0000000..05a4010 --- /dev/null +++ b/node_modules/csscomb/node_modules/minimatch/LICENSE @@ -0,0 +1,23 @@ +Copyright 2009, 2010, 2011 Isaac Z. Schlueter. +All rights reserved. + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/csscomb/node_modules/minimatch/README.md b/node_modules/csscomb/node_modules/minimatch/README.md new file mode 100644 index 0000000..6fd07d2 --- /dev/null +++ b/node_modules/csscomb/node_modules/minimatch/README.md @@ -0,0 +1,218 @@ +# minimatch + +A minimal matching utility. + +[![Build Status](https://secure.travis-ci.org/isaacs/minimatch.png)](http://travis-ci.org/isaacs/minimatch) + + +This is the matching library used internally by npm. + +Eventually, it will replace the C binding in node-glob. + +It works by converting glob expressions into JavaScript `RegExp` +objects. + +## Usage + +```javascript +var minimatch = require("minimatch") + +minimatch("bar.foo", "*.foo") // true! +minimatch("bar.foo", "*.bar") // false! +``` + +## Features + +Supports these glob features: + +* Brace Expansion +* Extended glob matching +* "Globstar" `**` matching + +See: + +* `man sh` +* `man bash` +* `man 3 fnmatch` +* `man 5 gitignore` + +### Comparisons to other fnmatch/glob implementations + +While strict compliance with the existing standards is a worthwhile +goal, some discrepancies exist between minimatch and other +implementations, and are intentional. + +If the pattern starts with a `!` character, then it is negated. Set the +`nonegate` flag to suppress this behavior, and treat leading `!` +characters normally. This is perhaps relevant if you wish to start the +pattern with a negative extglob pattern like `!(a|B)`. Multiple `!` +characters at the start of a pattern will negate the pattern multiple +times. + +If a pattern starts with `#`, then it is treated as a comment, and +will not match anything. Use `\#` to match a literal `#` at the +start of a line, or set the `nocomment` flag to suppress this behavior. + +The double-star character `**` is supported by default, unless the +`noglobstar` flag is set. This is supported in the manner of bsdglob +and bash 4.1, where `**` only has special significance if it is the only +thing in a path part. That is, `a/**/b` will match `a/x/y/b`, but +`a/**b` will not. **Note that this is different from the way that `**` is +handled by ruby's `Dir` class.** + +If an escaped pattern has no matches, and the `nonull` flag is set, +then minimatch.match returns the pattern as-provided, rather than +interpreting the character escapes. For example, +`minimatch.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than +`"*a?"`. This is akin to setting the `nullglob` option in bash, except +that it does not resolve escaped pattern characters. + +If brace expansion is not disabled, then it is performed before any +other interpretation of the glob pattern. Thus, a pattern like +`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded +**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are +checked for validity. Since those two are valid, matching proceeds. + + +## Minimatch Class + +Create a minimatch object by instanting the `minimatch.Minimatch` class. + +```javascript +var Minimatch = require("minimatch").Minimatch +var mm = new Minimatch(pattern, options) +``` + +### Properties + +* `pattern` The original pattern the minimatch object represents. +* `options` The options supplied to the constructor. +* `set` A 2-dimensional array of regexp or string expressions. + Each row in the + array corresponds to a brace-expanded pattern. Each item in the row + corresponds to a single path-part. For example, the pattern + `{a,b/c}/d` would expand to a set of patterns like: + + [ [ a, d ] + , [ b, c, d ] ] + + If a portion of the pattern doesn't have any "magic" in it + (that is, it's something like `"foo"` rather than `fo*o?`), then it + will be left as a string rather than converted to a regular + expression. + +* `regexp` Created by the `makeRe` method. A single regular expression + expressing the entire pattern. This is useful in cases where you wish + to use the pattern somewhat like `fnmatch(3)` with `FNM_PATH` enabled. +* `negate` True if the pattern is negated. +* `comment` True if the pattern is a comment. +* `empty` True if the pattern is `""`. + +### Methods + +* `makeRe` Generate the `regexp` member if necessary, and return it. + Will return `false` if the pattern is invalid. +* `match(fname)` Return true if the filename matches the pattern, or + false otherwise. +* `matchOne(fileArray, patternArray, partial)` Take a `/`-split + filename, and match it against a single row in the `regExpSet`. This + method is mainly for internal use, but is exposed so that it can be + used by a glob-walker that needs to avoid excessive filesystem calls. + +All other methods are internal, and will be called as necessary. + +## Functions + +The top-level exported function has a `cache` property, which is an LRU +cache set to store 100 items. So, calling these methods repeatedly +with the same pattern and options will use the same Minimatch object, +saving the cost of parsing it multiple times. + +### minimatch(path, pattern, options) + +Main export. Tests a path against the pattern using the options. + +```javascript +var isJS = minimatch(file, "*.js", { matchBase: true }) +``` + +### minimatch.filter(pattern, options) + +Returns a function that tests its +supplied argument, suitable for use with `Array.filter`. Example: + +```javascript +var javascripts = fileList.filter(minimatch.filter("*.js", {matchBase: true})) +``` + +### minimatch.match(list, pattern, options) + +Match against the list of +files, in the style of fnmatch or glob. If nothing is matched, and +options.nonull is set, then return a list containing the pattern itself. + +```javascript +var javascripts = minimatch.match(fileList, "*.js", {matchBase: true})) +``` + +### minimatch.makeRe(pattern, options) + +Make a regular expression object from the pattern. + +## Options + +All options are `false` by default. + +### debug + +Dump a ton of stuff to stderr. + +### nobrace + +Do not expand `{a,b}` and `{1..3}` brace sets. + +### noglobstar + +Disable `**` matching against multiple folder names. + +### dot + +Allow patterns to match filenames starting with a period, even if +the pattern does not explicitly have a period in that spot. + +Note that by default, `a/**/b` will **not** match `a/.d/b`, unless `dot` +is set. + +### noext + +Disable "extglob" style patterns like `+(a|b)`. + +### nocase + +Perform a case-insensitive match. + +### nonull + +When a match is not found by `minimatch.match`, return a list containing +the pattern itself. When set, an empty list is returned if there are +no matches. + +### matchBase + +If set, then patterns without slashes will be matched +against the basename of the path if it contains slashes. For example, +`a?b` would match the path `/xyz/123/acb`, but not `/xyz/acb/123`. + +### nocomment + +Suppress the behavior of treating `#` at the start of a pattern as a +comment. + +### nonegate + +Suppress the behavior of treating a leading `!` character as negation. + +### flipNegate + +Returns from negate expressions the same as if they were not negated. +(Ie, true on a hit, false on a miss.) diff --git a/node_modules/csscomb/node_modules/minimatch/minimatch.js b/node_modules/csscomb/node_modules/minimatch/minimatch.js new file mode 100644 index 0000000..405746b --- /dev/null +++ b/node_modules/csscomb/node_modules/minimatch/minimatch.js @@ -0,0 +1,1079 @@ +;(function (require, exports, module, platform) { + +if (module) module.exports = minimatch +else exports.minimatch = minimatch + +if (!require) { + require = function (id) { + switch (id) { + case "sigmund": return function sigmund (obj) { + return JSON.stringify(obj) + } + case "path": return { basename: function (f) { + f = f.split(/[\/\\]/) + var e = f.pop() + if (!e) e = f.pop() + return e + }} + case "lru-cache": return function LRUCache () { + // not quite an LRU, but still space-limited. + var cache = {} + var cnt = 0 + this.set = function (k, v) { + cnt ++ + if (cnt >= 100) cache = {} + cache[k] = v + } + this.get = function (k) { return cache[k] } + } + } + } +} + +minimatch.Minimatch = Minimatch + +var LRU = require("lru-cache") + , cache = minimatch.cache = new LRU({max: 100}) + , GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {} + , sigmund = require("sigmund") + +var path = require("path") + // any single thing other than / + // don't need to escape / when using new RegExp() + , qmark = "[^/]" + + // * => any number of characters + , star = qmark + "*?" + + // ** when dots are allowed. Anything goes, except .. and . + // not (^ or / followed by one or two dots followed by $ or /), + // followed by anything, any number of times. + , twoStarDot = "(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?" + + // not a ^ or / followed by a dot, + // followed by anything, any number of times. + , twoStarNoDot = "(?:(?!(?:\\\/|^)\\.).)*?" + + // characters that need to be escaped in RegExp. + , reSpecials = charSet("().*{}+?[]^$\\!") + +// "abc" -> { a:true, b:true, c:true } +function charSet (s) { + return s.split("").reduce(function (set, c) { + set[c] = true + return set + }, {}) +} + +// normalizes slashes. +var slashSplit = /\/+/ + +minimatch.monkeyPatch = monkeyPatch +function monkeyPatch () { + var desc = Object.getOwnPropertyDescriptor(String.prototype, "match") + var orig = desc.value + desc.value = function (p) { + if (p instanceof Minimatch) return p.match(this) + return orig.call(this, p) + } + Object.defineProperty(String.prototype, desc) +} + +minimatch.filter = filter +function filter (pattern, options) { + options = options || {} + return function (p, i, list) { + return minimatch(p, pattern, options) + } +} + +function ext (a, b) { + a = a || {} + b = b || {} + var t = {} + Object.keys(b).forEach(function (k) { + t[k] = b[k] + }) + Object.keys(a).forEach(function (k) { + t[k] = a[k] + }) + return t +} + +minimatch.defaults = function (def) { + if (!def || !Object.keys(def).length) return minimatch + + var orig = minimatch + + var m = function minimatch (p, pattern, options) { + return orig.minimatch(p, pattern, ext(def, options)) + } + + m.Minimatch = function Minimatch (pattern, options) { + return new orig.Minimatch(pattern, ext(def, options)) + } + + return m +} + +Minimatch.defaults = function (def) { + if (!def || !Object.keys(def).length) return Minimatch + return minimatch.defaults(def).Minimatch +} + + +function minimatch (p, pattern, options) { + if (typeof pattern !== "string") { + throw new TypeError("glob pattern string required") + } + + if (!options) options = {} + + // shortcut: comments match nothing. + if (!options.nocomment && pattern.charAt(0) === "#") { + return false + } + + // "" only matches "" + if (pattern.trim() === "") return p === "" + + return new Minimatch(pattern, options).match(p) +} + +function Minimatch (pattern, options) { + if (!(this instanceof Minimatch)) { + return new Minimatch(pattern, options, cache) + } + + if (typeof pattern !== "string") { + throw new TypeError("glob pattern string required") + } + + if (!options) options = {} + pattern = pattern.trim() + + // windows: need to use /, not \ + // On other platforms, \ is a valid (albeit bad) filename char. + if (platform === "win32") { + pattern = pattern.split("\\").join("/") + } + + // lru storage. + // these things aren't particularly big, but walking down the string + // and turning it into a regexp can get pretty costly. + var cacheKey = pattern + "\n" + sigmund(options) + var cached = minimatch.cache.get(cacheKey) + if (cached) return cached + minimatch.cache.set(cacheKey, this) + + this.options = options + this.set = [] + this.pattern = pattern + this.regexp = null + this.negate = false + this.comment = false + this.empty = false + + // make the set of regexps etc. + this.make() +} + +Minimatch.prototype.make = make +function make () { + // don't do it more than once. + if (this._made) return + + var pattern = this.pattern + var options = this.options + + // empty patterns and comments match nothing. + if (!options.nocomment && pattern.charAt(0) === "#") { + this.comment = true + return + } + if (!pattern) { + this.empty = true + return + } + + // step 1: figure out negation, etc. + this.parseNegate() + + // step 2: expand braces + var set = this.globSet = this.braceExpand() + + if (options.debug) console.error(this.pattern, set) + + // step 3: now we have a set, so turn each one into a series of path-portion + // matching patterns. + // These will be regexps, except in the case of "**", which is + // set to the GLOBSTAR object for globstar behavior, + // and will not contain any / characters + set = this.globParts = set.map(function (s) { + return s.split(slashSplit) + }) + + if (options.debug) console.error(this.pattern, set) + + // glob --> regexps + set = set.map(function (s, si, set) { + return s.map(this.parse, this) + }, this) + + if (options.debug) console.error(this.pattern, set) + + // filter out everything that didn't compile properly. + set = set.filter(function (s) { + return -1 === s.indexOf(false) + }) + + if (options.debug) console.error(this.pattern, set) + + this.set = set +} + +Minimatch.prototype.parseNegate = parseNegate +function parseNegate () { + var pattern = this.pattern + , negate = false + , options = this.options + , negateOffset = 0 + + if (options.nonegate) return + + for ( var i = 0, l = pattern.length + ; i < l && pattern.charAt(i) === "!" + ; i ++) { + negate = !negate + negateOffset ++ + } + + if (negateOffset) this.pattern = pattern.substr(negateOffset) + this.negate = negate +} + +// Brace expansion: +// a{b,c}d -> abd acd +// a{b,}c -> abc ac +// a{0..3}d -> a0d a1d a2d a3d +// a{b,c{d,e}f}g -> abg acdfg acefg +// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg +// +// Invalid sets are not expanded. +// a{2..}b -> a{2..}b +// a{b}c -> a{b}c +minimatch.braceExpand = function (pattern, options) { + return new Minimatch(pattern, options).braceExpand() +} + +Minimatch.prototype.braceExpand = braceExpand +function braceExpand (pattern, options) { + options = options || this.options + pattern = typeof pattern === "undefined" + ? this.pattern : pattern + + if (typeof pattern === "undefined") { + throw new Error("undefined pattern") + } + + if (options.nobrace || + !pattern.match(/\{.*\}/)) { + // shortcut. no need to expand. + return [pattern] + } + + var escaping = false + + // examples and comments refer to this crazy pattern: + // a{b,c{d,e},{f,g}h}x{y,z} + // expected: + // abxy + // abxz + // acdxy + // acdxz + // acexy + // acexz + // afhxy + // afhxz + // aghxy + // aghxz + + // everything before the first \{ is just a prefix. + // So, we pluck that off, and work with the rest, + // and then prepend it to everything we find. + if (pattern.charAt(0) !== "{") { + // console.error(pattern) + var prefix = null + for (var i = 0, l = pattern.length; i < l; i ++) { + var c = pattern.charAt(i) + // console.error(i, c) + if (c === "\\") { + escaping = !escaping + } else if (c === "{" && !escaping) { + prefix = pattern.substr(0, i) + break + } + } + + // actually no sets, all { were escaped. + if (prefix === null) { + // console.error("no sets") + return [pattern] + } + + var tail = braceExpand(pattern.substr(i), options) + return tail.map(function (t) { + return prefix + t + }) + } + + // now we have something like: + // {b,c{d,e},{f,g}h}x{y,z} + // walk through the set, expanding each part, until + // the set ends. then, we'll expand the suffix. + // If the set only has a single member, then'll put the {} back + + // first, handle numeric sets, since they're easier + var numset = pattern.match(/^\{(-?[0-9]+)\.\.(-?[0-9]+)\}/) + if (numset) { + // console.error("numset", numset[1], numset[2]) + var suf = braceExpand(pattern.substr(numset[0].length), options) + , start = +numset[1] + , end = +numset[2] + , inc = start > end ? -1 : 1 + , set = [] + for (var i = start; i != (end + inc); i += inc) { + // append all the suffixes + for (var ii = 0, ll = suf.length; ii < ll; ii ++) { + set.push(i + suf[ii]) + } + } + return set + } + + // ok, walk through the set + // We hope, somewhat optimistically, that there + // will be a } at the end. + // If the closing brace isn't found, then the pattern is + // interpreted as braceExpand("\\" + pattern) so that + // the leading \{ will be interpreted literally. + var i = 1 // skip the \{ + , depth = 1 + , set = [] + , member = "" + , sawEnd = false + , escaping = false + + function addMember () { + set.push(member) + member = "" + } + + // console.error("Entering for") + FOR: for (i = 1, l = pattern.length; i < l; i ++) { + var c = pattern.charAt(i) + // console.error("", i, c) + + if (escaping) { + escaping = false + member += "\\" + c + } else { + switch (c) { + case "\\": + escaping = true + continue + + case "{": + depth ++ + member += "{" + continue + + case "}": + depth -- + // if this closes the actual set, then we're done + if (depth === 0) { + addMember() + // pluck off the close-brace + i ++ + break FOR + } else { + member += c + continue + } + + case ",": + if (depth === 1) { + addMember() + } else { + member += c + } + continue + + default: + member += c + continue + } // switch + } // else + } // for + + // now we've either finished the set, and the suffix is + // pattern.substr(i), or we have *not* closed the set, + // and need to escape the leading brace + if (depth !== 0) { + // console.error("didn't close", pattern) + return braceExpand("\\" + pattern, options) + } + + // x{y,z} -> ["xy", "xz"] + // console.error("set", set) + // console.error("suffix", pattern.substr(i)) + var suf = braceExpand(pattern.substr(i), options) + // ["b", "c{d,e}","{f,g}h"] -> + // [["b"], ["cd", "ce"], ["fh", "gh"]] + var addBraces = set.length === 1 + // console.error("set pre-expanded", set) + set = set.map(function (p) { + return braceExpand(p, options) + }) + // console.error("set expanded", set) + + + // [["b"], ["cd", "ce"], ["fh", "gh"]] -> + // ["b", "cd", "ce", "fh", "gh"] + set = set.reduce(function (l, r) { + return l.concat(r) + }) + + if (addBraces) { + set = set.map(function (s) { + return "{" + s + "}" + }) + } + + // now attach the suffixes. + var ret = [] + for (var i = 0, l = set.length; i < l; i ++) { + for (var ii = 0, ll = suf.length; ii < ll; ii ++) { + ret.push(set[i] + suf[ii]) + } + } + return ret +} + +// parse a component of the expanded set. +// At this point, no pattern may contain "/" in it +// so we're going to return a 2d array, where each entry is the full +// pattern, split on '/', and then turned into a regular expression. +// A regexp is made at the end which joins each array with an +// escaped /, and another full one which joins each regexp with |. +// +// Following the lead of Bash 4.1, note that "**" only has special meaning +// when it is the *only* thing in a path portion. Otherwise, any series +// of * is equivalent to a single *. Globstar behavior is enabled by +// default, and can be disabled by setting options.noglobstar. +Minimatch.prototype.parse = parse +var SUBPARSE = {} +function parse (pattern, isSub) { + var options = this.options + + // shortcuts + if (!options.noglobstar && pattern === "**") return GLOBSTAR + if (pattern === "") return "" + + var re = "" + , hasMagic = !!options.nocase + , escaping = false + // ? => one single character + , patternListStack = [] + , plType + , stateChar + , inClass = false + , reClassStart = -1 + , classStart = -1 + // . and .. never match anything that doesn't start with ., + // even when options.dot is set. + , patternStart = pattern.charAt(0) === "." ? "" // anything + // not (start or / followed by . or .. followed by / or end) + : options.dot ? "(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))" + : "(?!\\.)" + + function clearStateChar () { + if (stateChar) { + // we had some state-tracking character + // that wasn't consumed by this pass. + switch (stateChar) { + case "*": + re += star + hasMagic = true + break + case "?": + re += qmark + hasMagic = true + break + default: + re += "\\"+stateChar + break + } + stateChar = false + } + } + + for ( var i = 0, len = pattern.length, c + ; (i < len) && (c = pattern.charAt(i)) + ; i ++ ) { + + if (options.debug) { + console.error("%s\t%s %s %j", pattern, i, re, c) + } + + // skip over any that are escaped. + if (escaping && reSpecials[c]) { + re += "\\" + c + escaping = false + continue + } + + SWITCH: switch (c) { + case "/": + // completely not allowed, even escaped. + // Should already be path-split by now. + return false + + case "\\": + clearStateChar() + escaping = true + continue + + // the various stateChar values + // for the "extglob" stuff. + case "?": + case "*": + case "+": + case "@": + case "!": + if (options.debug) { + console.error("%s\t%s %s %j <-- stateChar", pattern, i, re, c) + } + + // all of those are literals inside a class, except that + // the glob [!a] means [^a] in regexp + if (inClass) { + if (c === "!" && i === classStart + 1) c = "^" + re += c + continue + } + + // if we already have a stateChar, then it means + // that there was something like ** or +? in there. + // Handle the stateChar, then proceed with this one. + clearStateChar() + stateChar = c + // if extglob is disabled, then +(asdf|foo) isn't a thing. + // just clear the statechar *now*, rather than even diving into + // the patternList stuff. + if (options.noext) clearStateChar() + continue + + case "(": + if (inClass) { + re += "(" + continue + } + + if (!stateChar) { + re += "\\(" + continue + } + + plType = stateChar + patternListStack.push({ type: plType + , start: i - 1 + , reStart: re.length }) + // negation is (?:(?!js)[^/]*) + re += stateChar === "!" ? "(?:(?!" : "(?:" + stateChar = false + continue + + case ")": + if (inClass || !patternListStack.length) { + re += "\\)" + continue + } + + hasMagic = true + re += ")" + plType = patternListStack.pop().type + // negation is (?:(?!js)[^/]*) + // The others are (?:) + switch (plType) { + case "!": + re += "[^/]*?)" + break + case "?": + case "+": + case "*": re += plType + case "@": break // the default anyway + } + continue + + case "|": + if (inClass || !patternListStack.length || escaping) { + re += "\\|" + escaping = false + continue + } + + re += "|" + continue + + // these are mostly the same in regexp and glob + case "[": + // swallow any state-tracking char before the [ + clearStateChar() + + if (inClass) { + re += "\\" + c + continue + } + + inClass = true + classStart = i + reClassStart = re.length + re += c + continue + + case "]": + // a right bracket shall lose its special + // meaning and represent itself in + // a bracket expression if it occurs + // first in the list. -- POSIX.2 2.8.3.2 + if (i === classStart + 1 || !inClass) { + re += "\\" + c + escaping = false + continue + } + + // finish up the class. + hasMagic = true + inClass = false + re += c + continue + + default: + // swallow any state char that wasn't consumed + clearStateChar() + + if (escaping) { + // no need + escaping = false + } else if (reSpecials[c] + && !(c === "^" && inClass)) { + re += "\\" + } + + re += c + + } // switch + } // for + + + // handle the case where we left a class open. + // "[abc" is valid, equivalent to "\[abc" + if (inClass) { + // split where the last [ was, and escape it + // this is a huge pita. We now have to re-walk + // the contents of the would-be class to re-translate + // any characters that were passed through as-is + var cs = pattern.substr(classStart + 1) + , sp = this.parse(cs, SUBPARSE) + re = re.substr(0, reClassStart) + "\\[" + sp[0] + hasMagic = hasMagic || sp[1] + } + + // handle the case where we had a +( thing at the *end* + // of the pattern. + // each pattern list stack adds 3 chars, and we need to go through + // and escape any | chars that were passed through as-is for the regexp. + // Go through and escape them, taking care not to double-escape any + // | chars that were already escaped. + var pl + while (pl = patternListStack.pop()) { + var tail = re.slice(pl.reStart + 3) + // maybe some even number of \, then maybe 1 \, followed by a | + tail = tail.replace(/((?:\\{2})*)(\\?)\|/g, function (_, $1, $2) { + if (!$2) { + // the | isn't already escaped, so escape it. + $2 = "\\" + } + + // need to escape all those slashes *again*, without escaping the + // one that we need for escaping the | character. As it works out, + // escaping an even number of slashes can be done by simply repeating + // it exactly after itself. That's why this trick works. + // + // I am sorry that you have to see this. + return $1 + $1 + $2 + "|" + }) + + // console.error("tail=%j\n %s", tail, tail) + var t = pl.type === "*" ? star + : pl.type === "?" ? qmark + : "\\" + pl.type + + hasMagic = true + re = re.slice(0, pl.reStart) + + t + "\\(" + + tail + } + + // handle trailing things that only matter at the very end. + clearStateChar() + if (escaping) { + // trailing \\ + re += "\\\\" + } + + // only need to apply the nodot start if the re starts with + // something that could conceivably capture a dot + var addPatternStart = false + switch (re.charAt(0)) { + case ".": + case "[": + case "(": addPatternStart = true + } + + // if the re is not "" at this point, then we need to make sure + // it doesn't match against an empty path part. + // Otherwise a/* will match a/, which it should not. + if (re !== "" && hasMagic) re = "(?=.)" + re + + if (addPatternStart) re = patternStart + re + + // parsing just a piece of a larger pattern. + if (isSub === SUBPARSE) { + return [ re, hasMagic ] + } + + // skip the regexp for non-magical patterns + // unescape anything in it, though, so that it'll be + // an exact match against a file etc. + if (!hasMagic) { + return globUnescape(pattern) + } + + var flags = options.nocase ? "i" : "" + , regExp = new RegExp("^" + re + "$", flags) + + regExp._glob = pattern + regExp._src = re + + return regExp +} + +minimatch.makeRe = function (pattern, options) { + return new Minimatch(pattern, options || {}).makeRe() +} + +Minimatch.prototype.makeRe = makeRe +function makeRe () { + if (this.regexp || this.regexp === false) return this.regexp + + // at this point, this.set is a 2d array of partial + // pattern strings, or "**". + // + // It's better to use .match(). This function shouldn't + // be used, really, but it's pretty convenient sometimes, + // when you just want to work with a regex. + var set = this.set + + if (!set.length) return this.regexp = false + var options = this.options + + var twoStar = options.noglobstar ? star + : options.dot ? twoStarDot + : twoStarNoDot + , flags = options.nocase ? "i" : "" + + var re = set.map(function (pattern) { + return pattern.map(function (p) { + return (p === GLOBSTAR) ? twoStar + : (typeof p === "string") ? regExpEscape(p) + : p._src + }).join("\\\/") + }).join("|") + + // must match entire pattern + // ending in a * or ** will make it less strict. + re = "^(?:" + re + ")$" + + // can match anything, as long as it's not this. + if (this.negate) re = "^(?!" + re + ").*$" + + try { + return this.regexp = new RegExp(re, flags) + } catch (ex) { + return this.regexp = false + } +} + +minimatch.match = function (list, pattern, options) { + var mm = new Minimatch(pattern, options) + list = list.filter(function (f) { + return mm.match(f) + }) + if (options.nonull && !list.length) { + list.push(pattern) + } + return list +} + +Minimatch.prototype.match = match +function match (f, partial) { + // console.error("match", f, this.pattern) + // short-circuit in the case of busted things. + // comments, etc. + if (this.comment) return false + if (this.empty) return f === "" + + if (f === "/" && partial) return true + + var options = this.options + + // windows: need to use /, not \ + // On other platforms, \ is a valid (albeit bad) filename char. + if (platform === "win32") { + f = f.split("\\").join("/") + } + + // treat the test path as a set of pathparts. + f = f.split(slashSplit) + if (options.debug) { + console.error(this.pattern, "split", f) + } + + // just ONE of the pattern sets in this.set needs to match + // in order for it to be valid. If negating, then just one + // match means that we have failed. + // Either way, return on the first hit. + + var set = this.set + // console.error(this.pattern, "set", set) + + for (var i = 0, l = set.length; i < l; i ++) { + var pattern = set[i] + var hit = this.matchOne(f, pattern, partial) + if (hit) { + if (options.flipNegate) return true + return !this.negate + } + } + + // didn't get any hits. this is success if it's a negative + // pattern, failure otherwise. + if (options.flipNegate) return false + return this.negate +} + +// set partial to true to test if, for example, +// "/a/b" matches the start of "/*/b/*/d" +// Partial means, if you run out of file before you run +// out of pattern, then that's fine, as long as all +// the parts match. +Minimatch.prototype.matchOne = function (file, pattern, partial) { + var options = this.options + + if (options.debug) { + console.error("matchOne", + { "this": this + , file: file + , pattern: pattern }) + } + + if (options.matchBase && pattern.length === 1) { + file = path.basename(file.join("/")).split("/") + } + + if (options.debug) { + console.error("matchOne", file.length, pattern.length) + } + + for ( var fi = 0 + , pi = 0 + , fl = file.length + , pl = pattern.length + ; (fi < fl) && (pi < pl) + ; fi ++, pi ++ ) { + + if (options.debug) { + console.error("matchOne loop") + } + var p = pattern[pi] + , f = file[fi] + + if (options.debug) { + console.error(pattern, p, f) + } + + // should be impossible. + // some invalid regexp stuff in the set. + if (p === false) return false + + if (p === GLOBSTAR) { + if (options.debug) + console.error('GLOBSTAR', [pattern, p, f]) + + // "**" + // a/**/b/**/c would match the following: + // a/b/x/y/z/c + // a/x/y/z/b/c + // a/b/x/b/x/c + // a/b/c + // To do this, take the rest of the pattern after + // the **, and see if it would match the file remainder. + // If so, return success. + // If not, the ** "swallows" a segment, and try again. + // This is recursively awful. + // + // a/**/b/**/c matching a/b/x/y/z/c + // - a matches a + // - doublestar + // - matchOne(b/x/y/z/c, b/**/c) + // - b matches b + // - doublestar + // - matchOne(x/y/z/c, c) -> no + // - matchOne(y/z/c, c) -> no + // - matchOne(z/c, c) -> no + // - matchOne(c, c) yes, hit + var fr = fi + , pr = pi + 1 + if (pr === pl) { + if (options.debug) + console.error('** at the end') + // a ** at the end will just swallow the rest. + // We have found a match. + // however, it will not swallow /.x, unless + // options.dot is set. + // . and .. are *never* matched by **, for explosively + // exponential reasons. + for ( ; fi < fl; fi ++) { + if (file[fi] === "." || file[fi] === ".." || + (!options.dot && file[fi].charAt(0) === ".")) return false + } + return true + } + + // ok, let's see if we can swallow whatever we can. + WHILE: while (fr < fl) { + var swallowee = file[fr] + + if (options.debug) { + console.error('\nglobstar while', + file, fr, pattern, pr, swallowee) + } + + // XXX remove this slice. Just pass the start index. + if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { + if (options.debug) + console.error('globstar found match!', fr, fl, swallowee) + // found a match. + return true + } else { + // can't swallow "." or ".." ever. + // can only swallow ".foo" when explicitly asked. + if (swallowee === "." || swallowee === ".." || + (!options.dot && swallowee.charAt(0) === ".")) { + if (options.debug) + console.error("dot detected!", file, fr, pattern, pr) + break WHILE + } + + // ** swallows a segment, and continue. + if (options.debug) + console.error('globstar swallow a segment, and continue') + fr ++ + } + } + // no match was found. + // However, in partial mode, we can't say this is necessarily over. + // If there's more *pattern* left, then + if (partial) { + // ran out of file + // console.error("\n>>> no match, partial?", file, fr, pattern, pr) + if (fr === fl) return true + } + return false + } + + // something other than ** + // non-magic patterns just have to match exactly + // patterns with magic have been turned into regexps. + var hit + if (typeof p === "string") { + if (options.nocase) { + hit = f.toLowerCase() === p.toLowerCase() + } else { + hit = f === p + } + if (options.debug) { + console.error("string match", p, f, hit) + } + } else { + hit = f.match(p) + if (options.debug) { + console.error("pattern match", p, f, hit) + } + } + + if (!hit) return false + } + + // Note: ending in / means that we'll get a final "" + // at the end of the pattern. This can only match a + // corresponding "" at the end of the file. + // If the file ends in /, then it can only match a + // a pattern that ends in /, unless the pattern just + // doesn't have any more for it. But, a/b/ should *not* + // match "a/b/*", even though "" matches against the + // [^/]*? pattern, except in partial mode, where it might + // simply not be reached yet. + // However, a/b/ should still satisfy a/* + + // now either we fell off the end of the pattern, or we're done. + if (fi === fl && pi === pl) { + // ran out of pattern and filename at the same time. + // an exact hit! + return true + } else if (fi === fl) { + // ran out of file, but still had pattern left. + // this is ok if we're doing the match as part of + // a glob fs traversal. + return partial + } else if (pi === pl) { + // ran out of pattern, still have file left. + // this is only acceptable if we're on the very last + // empty segment of a file with a trailing slash. + // a/* should match a/b/ + var emptyFileEnd = (fi === fl - 1) && (file[fi] === "") + return emptyFileEnd + } + + // should be unreachable. + throw new Error("wtf?") +} + + +// replace stuff like \* with * +function globUnescape (s) { + return s.replace(/\\(.)/g, "$1") +} + + +function regExpEscape (s) { + return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&") +} + +})( typeof require === "function" ? require : null, + this, + typeof module === "object" ? module : null, + typeof process === "object" ? process.platform : "win32" + ) diff --git a/node_modules/csscomb/node_modules/minimatch/node_modules/lru-cache/AUTHORS b/node_modules/csscomb/node_modules/minimatch/node_modules/lru-cache/AUTHORS new file mode 100644 index 0000000..016d7fb --- /dev/null +++ b/node_modules/csscomb/node_modules/minimatch/node_modules/lru-cache/AUTHORS @@ -0,0 +1,8 @@ +# Authors, sorted by whether or not they are me +Isaac Z. Schlueter +Carlos Brito Lage +Marko Mikulicic +Trent Mick +Kevin O'Hara +Marco Rogers +Jesse Dailey diff --git a/node_modules/csscomb/node_modules/minimatch/node_modules/lru-cache/LICENSE b/node_modules/csscomb/node_modules/minimatch/node_modules/lru-cache/LICENSE new file mode 100644 index 0000000..05a4010 --- /dev/null +++ b/node_modules/csscomb/node_modules/minimatch/node_modules/lru-cache/LICENSE @@ -0,0 +1,23 @@ +Copyright 2009, 2010, 2011 Isaac Z. Schlueter. +All rights reserved. + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/csscomb/node_modules/minimatch/node_modules/lru-cache/README.md b/node_modules/csscomb/node_modules/minimatch/node_modules/lru-cache/README.md new file mode 100644 index 0000000..03ee0f9 --- /dev/null +++ b/node_modules/csscomb/node_modules/minimatch/node_modules/lru-cache/README.md @@ -0,0 +1,97 @@ +# lru cache + +A cache object that deletes the least-recently-used items. + +## Usage: + +```javascript +var LRU = require("lru-cache") + , options = { max: 500 + , length: function (n) { return n * 2 } + , dispose: function (key, n) { n.close() } + , maxAge: 1000 * 60 * 60 } + , cache = LRU(options) + , otherCache = LRU(50) // sets just the max size + +cache.set("key", "value") +cache.get("key") // "value" + +cache.reset() // empty the cache +``` + +If you put more stuff in it, then items will fall out. + +If you try to put an oversized thing in it, then it'll fall out right +away. + +## Options + +* `max` The maximum size of the cache, checked by applying the length + function to all values in the cache. Not setting this is kind of + silly, since that's the whole purpose of this lib, but it defaults + to `Infinity`. +* `maxAge` Maximum age in ms. Items are not pro-actively pruned out + as they age, but if you try to get an item that is too old, it'll + drop it and return undefined instead of giving it to you. +* `length` Function that is used to calculate the length of stored + items. If you're storing strings or buffers, then you probably want + to do something like `function(n){return n.length}`. The default is + `function(n){return 1}`, which is fine if you want to store `n` + like-sized things. +* `dispose` Function that is called on items when they are dropped + from the cache. This can be handy if you want to close file + descriptors or do other cleanup tasks when items are no longer + accessible. Called with `key, value`. It's called *before* + actually removing the item from the internal cache, so if you want + to immediately put it back in, you'll have to do that in a + `nextTick` or `setTimeout` callback or it won't do anything. +* `stale` By default, if you set a `maxAge`, it'll only actually pull + stale items out of the cache when you `get(key)`. (That is, it's + not pre-emptively doing a `setTimeout` or anything.) If you set + `stale:true`, it'll return the stale value before deleting it. If + you don't set this, then it'll return `undefined` when you try to + get a stale entry, as if it had already been deleted. + +## API + +* `set(key, value)` +* `get(key) => value` + + Both of these will update the "recently used"-ness of the key. + They do what you think. + +* `peek(key)` + + Returns the key value (or `undefined` if not found) without + updating the "recently used"-ness of the key. + + (If you find yourself using this a lot, you *might* be using the + wrong sort of data structure, but there are some use cases where + it's handy.) + +* `del(key)` + + Deletes a key out of the cache. + +* `reset()` + + Clear the cache entirely, throwing away all values. + +* `has(key)` + + Check if a key is in the cache, without updating the recent-ness + or deleting it for being stale. + +* `forEach(function(value,key,cache), [thisp])` + + Just like `Array.prototype.forEach`. Iterates over all the keys + in the cache, in order of recent-ness. (Ie, more recently used + items are iterated over first.) + +* `keys()` + + Return an array of the keys in the cache. + +* `values()` + + Return an array of the values in the cache. diff --git a/node_modules/csscomb/node_modules/minimatch/node_modules/lru-cache/bench.js b/node_modules/csscomb/node_modules/minimatch/node_modules/lru-cache/bench.js new file mode 100644 index 0000000..9111540 --- /dev/null +++ b/node_modules/csscomb/node_modules/minimatch/node_modules/lru-cache/bench.js @@ -0,0 +1,25 @@ +var LRU = require('lru-cache'); + +var max = +process.argv[2] || 10240; +var more = 102400; + +var cache = LRU({ + max: max, maxAge: 86400e3 +}); + +// fill cache +for (var i = 0; i < max; ++i) { + cache.set(i, {}); +} + +var start = process.hrtime(); + +// adding more items +for ( ; i < max+more; ++i) { + cache.set(i, {}); +} + +var end = process.hrtime(start); +var msecs = end[0] * 1E3 + end[1] / 1E6; + +console.log('adding %d items took %d ms', more, msecs.toPrecision(5)); diff --git a/node_modules/csscomb/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js b/node_modules/csscomb/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js new file mode 100644 index 0000000..49c1dc6 --- /dev/null +++ b/node_modules/csscomb/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js @@ -0,0 +1,263 @@ +;(function () { // closure for web browsers + +if (typeof module === 'object' && module.exports) { + module.exports = LRUCache +} else { + // just set the global for non-node platforms. + this.LRUCache = LRUCache +} + +function hOP (obj, key) { + return Object.prototype.hasOwnProperty.call(obj, key) +} + +function naiveLength () { return 1 } + +function LRUCache (options) { + if (!(this instanceof LRUCache)) { + return new LRUCache(options) + } + + var max + if (typeof options === 'number') { + max = options + options = { max: max } + } + + if (!options) options = {} + + max = options.max + + var lengthCalculator = options.length || naiveLength + + if (typeof lengthCalculator !== "function") { + lengthCalculator = naiveLength + } + + if (!max || !(typeof max === "number") || max <= 0 ) { + // a little bit silly. maybe this should throw? + max = Infinity + } + + var allowStale = options.stale || false + + var maxAge = options.maxAge || null + + var dispose = options.dispose + + var cache = Object.create(null) // hash of items by key + , lruList = Object.create(null) // list of items in order of use recency + , mru = 0 // most recently used + , lru = 0 // least recently used + , length = 0 // number of items in the list + , itemCount = 0 + + + // resize the cache when the max changes. + Object.defineProperty(this, "max", + { set : function (mL) { + if (!mL || !(typeof mL === "number") || mL <= 0 ) mL = Infinity + max = mL + // if it gets above double max, trim right away. + // otherwise, do it whenever it's convenient. + if (length > max) trim() + } + , get : function () { return max } + , enumerable : true + }) + + // resize the cache when the lengthCalculator changes. + Object.defineProperty(this, "lengthCalculator", + { set : function (lC) { + if (typeof lC !== "function") { + lengthCalculator = naiveLength + length = itemCount + for (var key in cache) { + cache[key].length = 1 + } + } else { + lengthCalculator = lC + length = 0 + for (var key in cache) { + cache[key].length = lengthCalculator(cache[key].value) + length += cache[key].length + } + } + + if (length > max) trim() + } + , get : function () { return lengthCalculator } + , enumerable : true + }) + + Object.defineProperty(this, "length", + { get : function () { return length } + , enumerable : true + }) + + + Object.defineProperty(this, "itemCount", + { get : function () { return itemCount } + , enumerable : true + }) + + this.forEach = function (fn, thisp) { + thisp = thisp || this + var i = 0; + for (var k = mru - 1; k >= 0 && i < itemCount; k--) if (lruList[k]) { + i++ + var hit = lruList[k] + if (maxAge && (Date.now() - hit.now > maxAge)) { + del(hit) + if (!allowStale) hit = undefined + } + if (hit) { + fn.call(thisp, hit.value, hit.key, this) + } + } + } + + this.keys = function () { + var keys = new Array(itemCount) + var i = 0 + for (var k = mru - 1; k >= 0 && i < itemCount; k--) if (lruList[k]) { + var hit = lruList[k] + keys[i++] = hit.key + } + return keys + } + + this.values = function () { + var values = new Array(itemCount) + var i = 0 + for (var k = mru - 1; k >= 0 && i < itemCount; k--) if (lruList[k]) { + var hit = lruList[k] + values[i++] = hit.value + } + return values + } + + this.reset = function () { + if (dispose) { + for (var k in cache) { + dispose(k, cache[k].value) + } + } + cache = {} + lruList = {} + lru = 0 + mru = 0 + length = 0 + itemCount = 0 + } + + // Provided for debugging/dev purposes only. No promises whatsoever that + // this API stays stable. + this.dump = function () { + return cache + } + + this.dumpLru = function () { + return lruList + } + + this.set = function (key, value) { + if (hOP(cache, key)) { + // dispose of the old one before overwriting + if (dispose) dispose(key, cache[key].value) + if (maxAge) cache[key].now = Date.now() + cache[key].value = value + this.get(key) + return true + } + + var len = lengthCalculator(value) + var age = maxAge ? Date.now() : 0 + var hit = new Entry(key, value, mru++, len, age) + + // oversized objects fall out of cache automatically. + if (hit.length > max) { + if (dispose) dispose(key, value) + return false + } + + length += hit.length + lruList[hit.lu] = cache[key] = hit + itemCount ++ + + if (length > max) trim() + return true + } + + this.has = function (key) { + if (!hOP(cache, key)) return false + var hit = cache[key] + if (maxAge && (Date.now() - hit.now > maxAge)) { + return false + } + return true + } + + this.get = function (key) { + return get(key, true) + } + + this.peek = function (key) { + return get(key, false) + } + + function get (key, doUse) { + var hit = cache[key] + if (hit) { + if (maxAge && (Date.now() - hit.now > maxAge)) { + del(hit) + if (!allowStale) hit = undefined + } else { + if (doUse) use(hit) + } + if (hit) hit = hit.value + } + return hit + } + + function use (hit) { + shiftLU(hit) + hit.lu = mru ++ + lruList[hit.lu] = hit + } + + this.del = function (key) { + del(cache[key]) + } + + function trim () { + while (lru < mru && length > max) + del(lruList[lru]) + } + + function shiftLU(hit) { + delete lruList[ hit.lu ] + while (lru < mru && !lruList[lru]) lru ++ + } + + function del(hit) { + if (hit) { + if (dispose) dispose(hit.key, hit.value) + length -= hit.length + itemCount -- + delete cache[ hit.key ] + shiftLU(hit) + } + } +} + +// classy, since V8 prefers predictable objects. +function Entry (key, value, mru, len, age) { + this.key = key + this.value = value + this.lu = mru + this.length = len + this.now = age +} + +})() diff --git a/node_modules/csscomb/node_modules/minimatch/node_modules/lru-cache/package.json b/node_modules/csscomb/node_modules/minimatch/node_modules/lru-cache/package.json new file mode 100644 index 0000000..411acad --- /dev/null +++ b/node_modules/csscomb/node_modules/minimatch/node_modules/lru-cache/package.json @@ -0,0 +1,62 @@ +{ + "name": "lru-cache", + "description": "A cache object that deletes the least-recently-used items.", + "version": "2.3.1", + "author": { + "name": "Isaac Z. Schlueter", + "email": "i@izs.me" + }, + "scripts": { + "test": "tap test --gc" + }, + "main": "lib/lru-cache.js", + "repository": { + "type": "git", + "url": "git://github.com/isaacs/node-lru-cache.git" + }, + "devDependencies": { + "tap": "", + "weak": "" + }, + "license": { + "type": "MIT", + "url": "http://github.com/isaacs/node-lru-cache/raw/master/LICENSE" + }, + "contributors": [ + { + "name": "Isaac Z. Schlueter", + "email": "i@izs.me" + }, + { + "name": "Carlos Brito Lage", + "email": "carlos@carloslage.net" + }, + { + "name": "Marko Mikulicic", + "email": "marko.mikulicic@isti.cnr.it" + }, + { + "name": "Trent Mick", + "email": "trentm@gmail.com" + }, + { + "name": "Kevin O'Hara", + "email": "kevinohara80@gmail.com" + }, + { + "name": "Marco Rogers", + "email": "marco.rogers@gmail.com" + }, + { + "name": "Jesse Dailey", + "email": "jesse.dailey@gmail.com" + } + ], + "readme": "# lru cache\n\nA cache object that deletes the least-recently-used items.\n\n## Usage:\n\n```javascript\nvar LRU = require(\"lru-cache\")\n , options = { max: 500\n , length: function (n) { return n * 2 }\n , dispose: function (key, n) { n.close() }\n , maxAge: 1000 * 60 * 60 }\n , cache = LRU(options)\n , otherCache = LRU(50) // sets just the max size\n\ncache.set(\"key\", \"value\")\ncache.get(\"key\") // \"value\"\n\ncache.reset() // empty the cache\n```\n\nIf you put more stuff in it, then items will fall out.\n\nIf you try to put an oversized thing in it, then it'll fall out right\naway.\n\n## Options\n\n* `max` The maximum size of the cache, checked by applying the length\n function to all values in the cache. Not setting this is kind of\n silly, since that's the whole purpose of this lib, but it defaults\n to `Infinity`.\n* `maxAge` Maximum age in ms. Items are not pro-actively pruned out\n as they age, but if you try to get an item that is too old, it'll\n drop it and return undefined instead of giving it to you.\n* `length` Function that is used to calculate the length of stored\n items. If you're storing strings or buffers, then you probably want\n to do something like `function(n){return n.length}`. The default is\n `function(n){return 1}`, which is fine if you want to store `n`\n like-sized things.\n* `dispose` Function that is called on items when they are dropped\n from the cache. This can be handy if you want to close file\n descriptors or do other cleanup tasks when items are no longer\n accessible. Called with `key, value`. It's called *before*\n actually removing the item from the internal cache, so if you want\n to immediately put it back in, you'll have to do that in a\n `nextTick` or `setTimeout` callback or it won't do anything.\n* `stale` By default, if you set a `maxAge`, it'll only actually pull\n stale items out of the cache when you `get(key)`. (That is, it's\n not pre-emptively doing a `setTimeout` or anything.) If you set\n `stale:true`, it'll return the stale value before deleting it. If\n you don't set this, then it'll return `undefined` when you try to\n get a stale entry, as if it had already been deleted.\n\n## API\n\n* `set(key, value)`\n* `get(key) => value`\n\n Both of these will update the \"recently used\"-ness of the key.\n They do what you think.\n\n* `peek(key)`\n\n Returns the key value (or `undefined` if not found) without\n updating the \"recently used\"-ness of the key.\n\n (If you find yourself using this a lot, you *might* be using the\n wrong sort of data structure, but there are some use cases where\n it's handy.)\n\n* `del(key)`\n\n Deletes a key out of the cache.\n\n* `reset()`\n\n Clear the cache entirely, throwing away all values.\n\n* `has(key)`\n\n Check if a key is in the cache, without updating the recent-ness\n or deleting it for being stale.\n\n* `forEach(function(value,key,cache), [thisp])`\n\n Just like `Array.prototype.forEach`. Iterates over all the keys\n in the cache, in order of recent-ness. (Ie, more recently used\n items are iterated over first.)\n\n* `keys()`\n\n Return an array of the keys in the cache.\n\n* `values()`\n\n Return an array of the values in the cache.\n", + "readmeFilename": "README.md", + "bugs": { + "url": "https://github.com/isaacs/node-lru-cache/issues" + }, + "_id": "lru-cache@2.3.1", + "_from": "lru-cache@2" +} diff --git a/node_modules/csscomb/node_modules/minimatch/node_modules/lru-cache/test/basic.js b/node_modules/csscomb/node_modules/minimatch/node_modules/lru-cache/test/basic.js new file mode 100644 index 0000000..70f3f8b --- /dev/null +++ b/node_modules/csscomb/node_modules/minimatch/node_modules/lru-cache/test/basic.js @@ -0,0 +1,329 @@ +var test = require("tap").test + , LRU = require("../") + +test("basic", function (t) { + var cache = new LRU({max: 10}) + cache.set("key", "value") + t.equal(cache.get("key"), "value") + t.equal(cache.get("nada"), undefined) + t.equal(cache.length, 1) + t.equal(cache.max, 10) + t.end() +}) + +test("least recently set", function (t) { + var cache = new LRU(2) + cache.set("a", "A") + cache.set("b", "B") + cache.set("c", "C") + t.equal(cache.get("c"), "C") + t.equal(cache.get("b"), "B") + t.equal(cache.get("a"), undefined) + t.end() +}) + +test("lru recently gotten", function (t) { + var cache = new LRU(2) + cache.set("a", "A") + cache.set("b", "B") + cache.get("a") + cache.set("c", "C") + t.equal(cache.get("c"), "C") + t.equal(cache.get("b"), undefined) + t.equal(cache.get("a"), "A") + t.end() +}) + +test("del", function (t) { + var cache = new LRU(2) + cache.set("a", "A") + cache.del("a") + t.equal(cache.get("a"), undefined) + t.end() +}) + +test("max", function (t) { + var cache = new LRU(3) + + // test changing the max, verify that the LRU items get dropped. + cache.max = 100 + for (var i = 0; i < 100; i ++) cache.set(i, i) + t.equal(cache.length, 100) + for (var i = 0; i < 100; i ++) { + t.equal(cache.get(i), i) + } + cache.max = 3 + t.equal(cache.length, 3) + for (var i = 0; i < 97; i ++) { + t.equal(cache.get(i), undefined) + } + for (var i = 98; i < 100; i ++) { + t.equal(cache.get(i), i) + } + + // now remove the max restriction, and try again. + cache.max = "hello" + for (var i = 0; i < 100; i ++) cache.set(i, i) + t.equal(cache.length, 100) + for (var i = 0; i < 100; i ++) { + t.equal(cache.get(i), i) + } + // should trigger an immediate resize + cache.max = 3 + t.equal(cache.length, 3) + for (var i = 0; i < 97; i ++) { + t.equal(cache.get(i), undefined) + } + for (var i = 98; i < 100; i ++) { + t.equal(cache.get(i), i) + } + t.end() +}) + +test("reset", function (t) { + var cache = new LRU(10) + cache.set("a", "A") + cache.set("b", "B") + cache.reset() + t.equal(cache.length, 0) + t.equal(cache.max, 10) + t.equal(cache.get("a"), undefined) + t.equal(cache.get("b"), undefined) + t.end() +}) + + +// Note: `.dump()` is a debugging tool only. No guarantees are made +// about the format/layout of the response. +test("dump", function (t) { + var cache = new LRU(10) + var d = cache.dump(); + t.equal(Object.keys(d).length, 0, "nothing in dump for empty cache") + cache.set("a", "A") + var d = cache.dump() // { a: { key: "a", value: "A", lu: 0 } } + t.ok(d.a) + t.equal(d.a.key, "a") + t.equal(d.a.value, "A") + t.equal(d.a.lu, 0) + + cache.set("b", "B") + cache.get("b") + d = cache.dump() + t.ok(d.b) + t.equal(d.b.key, "b") + t.equal(d.b.value, "B") + t.equal(d.b.lu, 2) + + t.end() +}) + + +test("basic with weighed length", function (t) { + var cache = new LRU({ + max: 100, + length: function (item) { return item.size } + }) + cache.set("key", {val: "value", size: 50}) + t.equal(cache.get("key").val, "value") + t.equal(cache.get("nada"), undefined) + t.equal(cache.lengthCalculator(cache.get("key")), 50) + t.equal(cache.length, 50) + t.equal(cache.max, 100) + t.end() +}) + + +test("weighed length item too large", function (t) { + var cache = new LRU({ + max: 10, + length: function (item) { return item.size } + }) + t.equal(cache.max, 10) + + // should fall out immediately + cache.set("key", {val: "value", size: 50}) + + t.equal(cache.length, 0) + t.equal(cache.get("key"), undefined) + t.end() +}) + +test("least recently set with weighed length", function (t) { + var cache = new LRU({ + max:8, + length: function (item) { return item.length } + }) + cache.set("a", "A") + cache.set("b", "BB") + cache.set("c", "CCC") + cache.set("d", "DDDD") + t.equal(cache.get("d"), "DDDD") + t.equal(cache.get("c"), "CCC") + t.equal(cache.get("b"), undefined) + t.equal(cache.get("a"), undefined) + t.end() +}) + +test("lru recently gotten with weighed length", function (t) { + var cache = new LRU({ + max: 8, + length: function (item) { return item.length } + }) + cache.set("a", "A") + cache.set("b", "BB") + cache.set("c", "CCC") + cache.get("a") + cache.get("b") + cache.set("d", "DDDD") + t.equal(cache.get("c"), undefined) + t.equal(cache.get("d"), "DDDD") + t.equal(cache.get("b"), "BB") + t.equal(cache.get("a"), "A") + t.end() +}) + +test("set returns proper booleans", function(t) { + var cache = new LRU({ + max: 5, + length: function (item) { return item.length } + }) + + t.equal(cache.set("a", "A"), true) + + // should return false for max exceeded + t.equal(cache.set("b", "donuts"), false) + + t.equal(cache.set("b", "B"), true) + t.equal(cache.set("c", "CCCC"), true) + t.end() +}) + +test("drop the old items", function(t) { + var cache = new LRU({ + max: 5, + maxAge: 50 + }) + + cache.set("a", "A") + + setTimeout(function () { + cache.set("b", "b") + t.equal(cache.get("a"), "A") + }, 25) + + setTimeout(function () { + cache.set("c", "C") + // timed out + t.notOk(cache.get("a")) + }, 60) + + setTimeout(function () { + t.notOk(cache.get("b")) + t.equal(cache.get("c"), "C") + }, 90) + + setTimeout(function () { + t.notOk(cache.get("c")) + t.end() + }, 155) +}) + +test("disposal function", function(t) { + var disposed = false + var cache = new LRU({ + max: 1, + dispose: function (k, n) { + disposed = n + } + }) + + cache.set(1, 1) + cache.set(2, 2) + t.equal(disposed, 1) + cache.set(3, 3) + t.equal(disposed, 2) + cache.reset() + t.equal(disposed, 3) + t.end() +}) + +test("disposal function on too big of item", function(t) { + var disposed = false + var cache = new LRU({ + max: 1, + length: function (k) { + return k.length + }, + dispose: function (k, n) { + disposed = n + } + }) + var obj = [ 1, 2 ] + + t.equal(disposed, false) + cache.set("obj", obj) + t.equal(disposed, obj) + t.end() +}) + +test("has()", function(t) { + var cache = new LRU({ + max: 1, + maxAge: 10 + }) + + cache.set('foo', 'bar') + t.equal(cache.has('foo'), true) + cache.set('blu', 'baz') + t.equal(cache.has('foo'), false) + t.equal(cache.has('blu'), true) + setTimeout(function() { + t.equal(cache.has('blu'), false) + t.end() + }, 15) +}) + +test("stale", function(t) { + var cache = new LRU({ + maxAge: 10, + stale: true + }) + + cache.set('foo', 'bar') + t.equal(cache.get('foo'), 'bar') + t.equal(cache.has('foo'), true) + setTimeout(function() { + t.equal(cache.has('foo'), false) + t.equal(cache.get('foo'), 'bar') + t.equal(cache.get('foo'), undefined) + t.end() + }, 15) +}) + +test("lru update via set", function(t) { + var cache = LRU({ max: 2 }); + + cache.set('foo', 1); + cache.set('bar', 2); + cache.del('bar'); + cache.set('baz', 3); + cache.set('qux', 4); + + t.equal(cache.get('foo'), undefined) + t.equal(cache.get('bar'), undefined) + t.equal(cache.get('baz'), 3) + t.equal(cache.get('qux'), 4) + t.end() +}) + +test("least recently set w/ peek", function (t) { + var cache = new LRU(2) + cache.set("a", "A") + cache.set("b", "B") + t.equal(cache.peek("a"), "A") + cache.set("c", "C") + t.equal(cache.get("c"), "C") + t.equal(cache.get("b"), "B") + t.equal(cache.get("a"), undefined) + t.end() +}) diff --git a/node_modules/csscomb/node_modules/minimatch/node_modules/lru-cache/test/foreach.js b/node_modules/csscomb/node_modules/minimatch/node_modules/lru-cache/test/foreach.js new file mode 100644 index 0000000..eefb80d --- /dev/null +++ b/node_modules/csscomb/node_modules/minimatch/node_modules/lru-cache/test/foreach.js @@ -0,0 +1,52 @@ +var test = require('tap').test +var LRU = require('../') + +test('forEach', function (t) { + var l = new LRU(5) + for (var i = 0; i < 10; i ++) { + l.set(i.toString(), i.toString(2)) + } + + var i = 9 + l.forEach(function (val, key, cache) { + t.equal(cache, l) + t.equal(key, i.toString()) + t.equal(val, i.toString(2)) + i -= 1 + }) + + // get in order of most recently used + l.get(6) + l.get(8) + + var order = [ 8, 6, 9, 7, 5 ] + var i = 0 + + l.forEach(function (val, key, cache) { + var j = order[i ++] + t.equal(cache, l) + t.equal(key, j.toString()) + t.equal(val, j.toString(2)) + }) + + t.end() +}) + +test('keys() and values()', function (t) { + var l = new LRU(5) + for (var i = 0; i < 10; i ++) { + l.set(i.toString(), i.toString(2)) + } + + t.similar(l.keys(), ['9', '8', '7', '6', '5']) + t.similar(l.values(), ['1001', '1000', '111', '110', '101']) + + // get in order of most recently used + l.get(6) + l.get(8) + + t.similar(l.keys(), ['8', '6', '9', '7', '5']) + t.similar(l.values(), ['1000', '110', '1001', '111', '101']) + + t.end() +}) diff --git a/node_modules/csscomb/node_modules/minimatch/node_modules/lru-cache/test/memory-leak.js b/node_modules/csscomb/node_modules/minimatch/node_modules/lru-cache/test/memory-leak.js new file mode 100644 index 0000000..7af45b0 --- /dev/null +++ b/node_modules/csscomb/node_modules/minimatch/node_modules/lru-cache/test/memory-leak.js @@ -0,0 +1,50 @@ +#!/usr/bin/env node --expose_gc + +var weak = require('weak'); +var test = require('tap').test +var LRU = require('../') +var l = new LRU({ max: 10 }) +var refs = 0 +function X() { + refs ++ + weak(this, deref) +} + +function deref() { + refs -- +} + +test('no leaks', function (t) { + // fill up the cache + for (var i = 0; i < 100; i++) { + l.set(i, new X); + // throw some gets in there, too. + if (i % 2 === 0) + l.get(i / 2) + } + + gc() + + var start = process.memoryUsage() + + // capture the memory + var startRefs = refs + + // do it again, but more + for (var i = 0; i < 10000; i++) { + l.set(i, new X); + // throw some gets in there, too. + if (i % 2 === 0) + l.get(i / 2) + } + + gc() + + var end = process.memoryUsage() + t.equal(refs, startRefs, 'no leaky refs') + + console.error('start: %j\n' + + 'end: %j', start, end); + t.pass(); + t.end(); +}) diff --git a/node_modules/csscomb/node_modules/minimatch/node_modules/sigmund/LICENSE b/node_modules/csscomb/node_modules/minimatch/node_modules/sigmund/LICENSE new file mode 100644 index 0000000..0c44ae7 --- /dev/null +++ b/node_modules/csscomb/node_modules/minimatch/node_modules/sigmund/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) Isaac Z. Schlueter ("Author") +All rights reserved. + +The BSD License + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/csscomb/node_modules/minimatch/node_modules/sigmund/README.md b/node_modules/csscomb/node_modules/minimatch/node_modules/sigmund/README.md new file mode 100644 index 0000000..7e36512 --- /dev/null +++ b/node_modules/csscomb/node_modules/minimatch/node_modules/sigmund/README.md @@ -0,0 +1,53 @@ +# sigmund + +Quick and dirty signatures for Objects. + +This is like a much faster `deepEquals` comparison, which returns a +string key suitable for caches and the like. + +## Usage + +```javascript +function doSomething (someObj) { + var key = sigmund(someObj, maxDepth) // max depth defaults to 10 + var cached = cache.get(key) + if (cached) return cached) + + var result = expensiveCalculation(someObj) + cache.set(key, result) + return result +} +``` + +The resulting key will be as unique and reproducible as calling +`JSON.stringify` or `util.inspect` on the object, but is much faster. +In order to achieve this speed, some differences are glossed over. +For example, the object `{0:'foo'}` will be treated identically to the +array `['foo']`. + +Also, just as there is no way to summon the soul from the scribblings +of a cocain-addled psychoanalyst, there is no way to revive the object +from the signature string that sigmund gives you. In fact, it's +barely even readable. + +As with `sys.inspect` and `JSON.stringify`, larger objects will +produce larger signature strings. + +Because sigmund is a bit less strict than the more thorough +alternatives, the strings will be shorter, and also there is a +slightly higher chance for collisions. For example, these objects +have the same signature: + + var obj1 = {a:'b',c:/def/,g:['h','i',{j:'',k:'l'}]} + var obj2 = {a:'b',c:'/def/',g:['h','i','{jkl']} + +Like a good Freudian, sigmund is most effective when you already have +some understanding of what you're looking for. It can help you help +yourself, but you must be willing to do some work as well. + +Cycles are handled, and cyclical objects are silently omitted (though +the key is included in the signature output.) + +The second argument is the maximum depth, which defaults to 10, +because that is the maximum object traversal depth covered by most +insurance carriers. diff --git a/node_modules/csscomb/node_modules/minimatch/node_modules/sigmund/bench.js b/node_modules/csscomb/node_modules/minimatch/node_modules/sigmund/bench.js new file mode 100644 index 0000000..5acfd6d --- /dev/null +++ b/node_modules/csscomb/node_modules/minimatch/node_modules/sigmund/bench.js @@ -0,0 +1,283 @@ +// different ways to id objects +// use a req/res pair, since it's crazy deep and cyclical + +// sparseFE10 and sigmund are usually pretty close, which is to be expected, +// since they are essentially the same algorithm, except that sigmund handles +// regular expression objects properly. + + +var http = require('http') +var util = require('util') +var sigmund = require('./sigmund.js') +var sreq, sres, creq, cres, test + +http.createServer(function (q, s) { + sreq = q + sres = s + sres.end('ok') + this.close(function () { setTimeout(function () { + start() + }, 200) }) +}).listen(1337, function () { + creq = http.get({ port: 1337 }) + creq.on('response', function (s) { cres = s }) +}) + +function start () { + test = [sreq, sres, creq, cres] + // test = sreq + // sreq.sres = sres + // sreq.creq = creq + // sreq.cres = cres + + for (var i in exports.compare) { + console.log(i) + var hash = exports.compare[i]() + console.log(hash) + console.log(hash.length) + console.log('') + } + + require('bench').runMain() +} + +function customWs (obj, md, d) { + d = d || 0 + var to = typeof obj + if (to === 'undefined' || to === 'function' || to === null) return '' + if (d > md || !obj || to !== 'object') return ('' + obj).replace(/[\n ]+/g, '') + + if (Array.isArray(obj)) { + return obj.map(function (i, _, __) { + return customWs(i, md, d + 1) + }).reduce(function (a, b) { return a + b }, '') + } + + var keys = Object.keys(obj) + return keys.map(function (k, _, __) { + return k + ':' + customWs(obj[k], md, d + 1) + }).reduce(function (a, b) { return a + b }, '') +} + +function custom (obj, md, d) { + d = d || 0 + var to = typeof obj + if (to === 'undefined' || to === 'function' || to === null) return '' + if (d > md || !obj || to !== 'object') return '' + obj + + if (Array.isArray(obj)) { + return obj.map(function (i, _, __) { + return custom(i, md, d + 1) + }).reduce(function (a, b) { return a + b }, '') + } + + var keys = Object.keys(obj) + return keys.map(function (k, _, __) { + return k + ':' + custom(obj[k], md, d + 1) + }).reduce(function (a, b) { return a + b }, '') +} + +function sparseFE2 (obj, maxDepth) { + var seen = [] + var soFar = '' + function ch (v, depth) { + if (depth > maxDepth) return + if (typeof v === 'function' || typeof v === 'undefined') return + if (typeof v !== 'object' || !v) { + soFar += v + return + } + if (seen.indexOf(v) !== -1 || depth === maxDepth) return + seen.push(v) + soFar += '{' + Object.keys(v).forEach(function (k, _, __) { + // pseudo-private values. skip those. + if (k.charAt(0) === '_') return + var to = typeof v[k] + if (to === 'function' || to === 'undefined') return + soFar += k + ':' + ch(v[k], depth + 1) + }) + soFar += '}' + } + ch(obj, 0) + return soFar +} + +function sparseFE (obj, maxDepth) { + var seen = [] + var soFar = '' + function ch (v, depth) { + if (depth > maxDepth) return + if (typeof v === 'function' || typeof v === 'undefined') return + if (typeof v !== 'object' || !v) { + soFar += v + return + } + if (seen.indexOf(v) !== -1 || depth === maxDepth) return + seen.push(v) + soFar += '{' + Object.keys(v).forEach(function (k, _, __) { + // pseudo-private values. skip those. + if (k.charAt(0) === '_') return + var to = typeof v[k] + if (to === 'function' || to === 'undefined') return + soFar += k + ch(v[k], depth + 1) + }) + } + ch(obj, 0) + return soFar +} + +function sparse (obj, maxDepth) { + var seen = [] + var soFar = '' + function ch (v, depth) { + if (depth > maxDepth) return + if (typeof v === 'function' || typeof v === 'undefined') return + if (typeof v !== 'object' || !v) { + soFar += v + return + } + if (seen.indexOf(v) !== -1 || depth === maxDepth) return + seen.push(v) + soFar += '{' + for (var k in v) { + // pseudo-private values. skip those. + if (k.charAt(0) === '_') continue + var to = typeof v[k] + if (to === 'function' || to === 'undefined') continue + soFar += k + ch(v[k], depth + 1) + } + } + ch(obj, 0) + return soFar +} + +function noCommas (obj, maxDepth) { + var seen = [] + var soFar = '' + function ch (v, depth) { + if (depth > maxDepth) return + if (typeof v === 'function' || typeof v === 'undefined') return + if (typeof v !== 'object' || !v) { + soFar += v + return + } + if (seen.indexOf(v) !== -1 || depth === maxDepth) return + seen.push(v) + soFar += '{' + for (var k in v) { + // pseudo-private values. skip those. + if (k.charAt(0) === '_') continue + var to = typeof v[k] + if (to === 'function' || to === 'undefined') continue + soFar += k + ':' + ch(v[k], depth + 1) + } + soFar += '}' + } + ch(obj, 0) + return soFar +} + + +function flatten (obj, maxDepth) { + var seen = [] + var soFar = '' + function ch (v, depth) { + if (depth > maxDepth) return + if (typeof v === 'function' || typeof v === 'undefined') return + if (typeof v !== 'object' || !v) { + soFar += v + return + } + if (seen.indexOf(v) !== -1 || depth === maxDepth) return + seen.push(v) + soFar += '{' + for (var k in v) { + // pseudo-private values. skip those. + if (k.charAt(0) === '_') continue + var to = typeof v[k] + if (to === 'function' || to === 'undefined') continue + soFar += k + ':' + ch(v[k], depth + 1) + soFar += ',' + } + soFar += '}' + } + ch(obj, 0) + return soFar +} + +exports.compare = +{ + // 'custom 2': function () { + // return custom(test, 2, 0) + // }, + // 'customWs 2': function () { + // return customWs(test, 2, 0) + // }, + 'JSON.stringify (guarded)': function () { + var seen = [] + return JSON.stringify(test, function (k, v) { + if (typeof v !== 'object' || !v) return v + if (seen.indexOf(v) !== -1) return undefined + seen.push(v) + return v + }) + }, + + 'flatten 10': function () { + return flatten(test, 10) + }, + + // 'flattenFE 10': function () { + // return flattenFE(test, 10) + // }, + + 'noCommas 10': function () { + return noCommas(test, 10) + }, + + 'sparse 10': function () { + return sparse(test, 10) + }, + + 'sparseFE 10': function () { + return sparseFE(test, 10) + }, + + 'sparseFE2 10': function () { + return sparseFE2(test, 10) + }, + + sigmund: function() { + return sigmund(test, 10) + }, + + + // 'util.inspect 1': function () { + // return util.inspect(test, false, 1, false) + // }, + // 'util.inspect undefined': function () { + // util.inspect(test) + // }, + // 'util.inspect 2': function () { + // util.inspect(test, false, 2, false) + // }, + // 'util.inspect 3': function () { + // util.inspect(test, false, 3, false) + // }, + // 'util.inspect 4': function () { + // util.inspect(test, false, 4, false) + // }, + // 'util.inspect Infinity': function () { + // util.inspect(test, false, Infinity, false) + // } +} + +/** results +**/ diff --git a/node_modules/csscomb/node_modules/minimatch/node_modules/sigmund/package.json b/node_modules/csscomb/node_modules/minimatch/node_modules/sigmund/package.json new file mode 100644 index 0000000..ec8e2eb --- /dev/null +++ b/node_modules/csscomb/node_modules/minimatch/node_modules/sigmund/package.json @@ -0,0 +1,41 @@ +{ + "name": "sigmund", + "version": "1.0.0", + "description": "Quick and dirty signatures for Objects.", + "main": "sigmund.js", + "directories": { + "test": "test" + }, + "dependencies": {}, + "devDependencies": { + "tap": "~0.3.0" + }, + "scripts": { + "test": "tap test/*.js", + "bench": "node bench.js" + }, + "repository": { + "type": "git", + "url": "git://github.com/isaacs/sigmund" + }, + "keywords": [ + "object", + "signature", + "key", + "data", + "psychoanalysis" + ], + "author": { + "name": "Isaac Z. Schlueter", + "email": "i@izs.me", + "url": "http://blog.izs.me/" + }, + "license": "BSD", + "readme": "# sigmund\n\nQuick and dirty signatures for Objects.\n\nThis is like a much faster `deepEquals` comparison, which returns a\nstring key suitable for caches and the like.\n\n## Usage\n\n```javascript\nfunction doSomething (someObj) {\n var key = sigmund(someObj, maxDepth) // max depth defaults to 10\n var cached = cache.get(key)\n if (cached) return cached)\n\n var result = expensiveCalculation(someObj)\n cache.set(key, result)\n return result\n}\n```\n\nThe resulting key will be as unique and reproducible as calling\n`JSON.stringify` or `util.inspect` on the object, but is much faster.\nIn order to achieve this speed, some differences are glossed over.\nFor example, the object `{0:'foo'}` will be treated identically to the\narray `['foo']`.\n\nAlso, just as there is no way to summon the soul from the scribblings\nof a cocain-addled psychoanalyst, there is no way to revive the object\nfrom the signature string that sigmund gives you. In fact, it's\nbarely even readable.\n\nAs with `sys.inspect` and `JSON.stringify`, larger objects will\nproduce larger signature strings.\n\nBecause sigmund is a bit less strict than the more thorough\nalternatives, the strings will be shorter, and also there is a\nslightly higher chance for collisions. For example, these objects\nhave the same signature:\n\n var obj1 = {a:'b',c:/def/,g:['h','i',{j:'',k:'l'}]}\n var obj2 = {a:'b',c:'/def/',g:['h','i','{jkl']}\n\nLike a good Freudian, sigmund is most effective when you already have\nsome understanding of what you're looking for. It can help you help\nyourself, but you must be willing to do some work as well.\n\nCycles are handled, and cyclical objects are silently omitted (though\nthe key is included in the signature output.)\n\nThe second argument is the maximum depth, which defaults to 10,\nbecause that is the maximum object traversal depth covered by most\ninsurance carriers.\n", + "readmeFilename": "README.md", + "bugs": { + "url": "https://github.com/isaacs/sigmund/issues" + }, + "_id": "sigmund@1.0.0", + "_from": "sigmund@~1.0.0" +} diff --git a/node_modules/csscomb/node_modules/minimatch/node_modules/sigmund/sigmund.js b/node_modules/csscomb/node_modules/minimatch/node_modules/sigmund/sigmund.js new file mode 100644 index 0000000..82c7ab8 --- /dev/null +++ b/node_modules/csscomb/node_modules/minimatch/node_modules/sigmund/sigmund.js @@ -0,0 +1,39 @@ +module.exports = sigmund +function sigmund (subject, maxSessions) { + maxSessions = maxSessions || 10; + var notes = []; + var analysis = ''; + var RE = RegExp; + + function psychoAnalyze (subject, session) { + if (session > maxSessions) return; + + if (typeof subject === 'function' || + typeof subject === 'undefined') { + return; + } + + if (typeof subject !== 'object' || !subject || + (subject instanceof RE)) { + analysis += subject; + return; + } + + if (notes.indexOf(subject) !== -1 || session === maxSessions) return; + + notes.push(subject); + analysis += '{'; + Object.keys(subject).forEach(function (issue, _, __) { + // pseudo-private values. skip those. + if (issue.charAt(0) === '_') return; + var to = typeof subject[issue]; + if (to === 'function' || to === 'undefined') return; + analysis += issue; + psychoAnalyze(subject[issue], session + 1); + }); + } + psychoAnalyze(subject, 0); + return analysis; +} + +// vim: set softtabstop=4 shiftwidth=4: diff --git a/node_modules/csscomb/node_modules/minimatch/node_modules/sigmund/test/basic.js b/node_modules/csscomb/node_modules/minimatch/node_modules/sigmund/test/basic.js new file mode 100644 index 0000000..50c53a1 --- /dev/null +++ b/node_modules/csscomb/node_modules/minimatch/node_modules/sigmund/test/basic.js @@ -0,0 +1,24 @@ +var test = require('tap').test +var sigmund = require('../sigmund.js') + + +// occasionally there are duplicates +// that's an acceptable edge-case. JSON.stringify and util.inspect +// have some collision potential as well, though less, and collision +// detection is expensive. +var hash = '{abc/def/g{0h1i2{jkl' +var obj1 = {a:'b',c:/def/,g:['h','i',{j:'',k:'l'}]} +var obj2 = {a:'b',c:'/def/',g:['h','i','{jkl']} + +var obj3 = JSON.parse(JSON.stringify(obj1)) +obj3.c = /def/ +obj3.g[2].cycle = obj3 +var cycleHash = '{abc/def/g{0h1i2{jklcycle' + +test('basic', function (t) { + t.equal(sigmund(obj1), hash) + t.equal(sigmund(obj2), hash) + t.equal(sigmund(obj3), cycleHash) + t.end() +}) + diff --git a/node_modules/csscomb/node_modules/minimatch/package.json b/node_modules/csscomb/node_modules/minimatch/package.json new file mode 100644 index 0000000..1e22d74 --- /dev/null +++ b/node_modules/csscomb/node_modules/minimatch/package.json @@ -0,0 +1,43 @@ +{ + "author": { + "name": "Isaac Z. Schlueter", + "email": "i@izs.me", + "url": "http://blog.izs.me" + }, + "name": "minimatch", + "description": "a glob matcher in javascript", + "version": "0.2.12", + "repository": { + "type": "git", + "url": "git://github.com/isaacs/minimatch.git" + }, + "main": "minimatch.js", + "scripts": { + "test": "tap test" + }, + "engines": { + "node": "*" + }, + "dependencies": { + "lru-cache": "2", + "sigmund": "~1.0.0" + }, + "devDependencies": { + "tap": "" + }, + "license": { + "type": "MIT", + "url": "http://github.com/isaacs/minimatch/raw/master/LICENSE" + }, + "readme": "# minimatch\n\nA minimal matching utility.\n\n[![Build Status](https://secure.travis-ci.org/isaacs/minimatch.png)](http://travis-ci.org/isaacs/minimatch)\n\n\nThis is the matching library used internally by npm.\n\nEventually, it will replace the C binding in node-glob.\n\nIt works by converting glob expressions into JavaScript `RegExp`\nobjects.\n\n## Usage\n\n```javascript\nvar minimatch = require(\"minimatch\")\n\nminimatch(\"bar.foo\", \"*.foo\") // true!\nminimatch(\"bar.foo\", \"*.bar\") // false!\n```\n\n## Features\n\nSupports these glob features:\n\n* Brace Expansion\n* Extended glob matching\n* \"Globstar\" `**` matching\n\nSee:\n\n* `man sh`\n* `man bash`\n* `man 3 fnmatch`\n* `man 5 gitignore`\n\n### Comparisons to other fnmatch/glob implementations\n\nWhile strict compliance with the existing standards is a worthwhile\ngoal, some discrepancies exist between minimatch and other\nimplementations, and are intentional.\n\nIf the pattern starts with a `!` character, then it is negated. Set the\n`nonegate` flag to suppress this behavior, and treat leading `!`\ncharacters normally. This is perhaps relevant if you wish to start the\npattern with a negative extglob pattern like `!(a|B)`. Multiple `!`\ncharacters at the start of a pattern will negate the pattern multiple\ntimes.\n\nIf a pattern starts with `#`, then it is treated as a comment, and\nwill not match anything. Use `\\#` to match a literal `#` at the\nstart of a line, or set the `nocomment` flag to suppress this behavior.\n\nThe double-star character `**` is supported by default, unless the\n`noglobstar` flag is set. This is supported in the manner of bsdglob\nand bash 4.1, where `**` only has special significance if it is the only\nthing in a path part. That is, `a/**/b` will match `a/x/y/b`, but\n`a/**b` will not. **Note that this is different from the way that `**` is\nhandled by ruby's `Dir` class.**\n\nIf an escaped pattern has no matches, and the `nonull` flag is set,\nthen minimatch.match returns the pattern as-provided, rather than\ninterpreting the character escapes. For example,\n`minimatch.match([], \"\\\\*a\\\\?\")` will return `\"\\\\*a\\\\?\"` rather than\n`\"*a?\"`. This is akin to setting the `nullglob` option in bash, except\nthat it does not resolve escaped pattern characters.\n\nIf brace expansion is not disabled, then it is performed before any\nother interpretation of the glob pattern. Thus, a pattern like\n`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded\n**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are\nchecked for validity. Since those two are valid, matching proceeds.\n\n\n## Minimatch Class\n\nCreate a minimatch object by instanting the `minimatch.Minimatch` class.\n\n```javascript\nvar Minimatch = require(\"minimatch\").Minimatch\nvar mm = new Minimatch(pattern, options)\n```\n\n### Properties\n\n* `pattern` The original pattern the minimatch object represents.\n* `options` The options supplied to the constructor.\n* `set` A 2-dimensional array of regexp or string expressions.\n Each row in the\n array corresponds to a brace-expanded pattern. Each item in the row\n corresponds to a single path-part. For example, the pattern\n `{a,b/c}/d` would expand to a set of patterns like:\n\n [ [ a, d ]\n , [ b, c, d ] ]\n\n If a portion of the pattern doesn't have any \"magic\" in it\n (that is, it's something like `\"foo\"` rather than `fo*o?`), then it\n will be left as a string rather than converted to a regular\n expression.\n\n* `regexp` Created by the `makeRe` method. A single regular expression\n expressing the entire pattern. This is useful in cases where you wish\n to use the pattern somewhat like `fnmatch(3)` with `FNM_PATH` enabled.\n* `negate` True if the pattern is negated.\n* `comment` True if the pattern is a comment.\n* `empty` True if the pattern is `\"\"`.\n\n### Methods\n\n* `makeRe` Generate the `regexp` member if necessary, and return it.\n Will return `false` if the pattern is invalid.\n* `match(fname)` Return true if the filename matches the pattern, or\n false otherwise.\n* `matchOne(fileArray, patternArray, partial)` Take a `/`-split\n filename, and match it against a single row in the `regExpSet`. This\n method is mainly for internal use, but is exposed so that it can be\n used by a glob-walker that needs to avoid excessive filesystem calls.\n\nAll other methods are internal, and will be called as necessary.\n\n## Functions\n\nThe top-level exported function has a `cache` property, which is an LRU\ncache set to store 100 items. So, calling these methods repeatedly\nwith the same pattern and options will use the same Minimatch object,\nsaving the cost of parsing it multiple times.\n\n### minimatch(path, pattern, options)\n\nMain export. Tests a path against the pattern using the options.\n\n```javascript\nvar isJS = minimatch(file, \"*.js\", { matchBase: true })\n```\n\n### minimatch.filter(pattern, options)\n\nReturns a function that tests its\nsupplied argument, suitable for use with `Array.filter`. Example:\n\n```javascript\nvar javascripts = fileList.filter(minimatch.filter(\"*.js\", {matchBase: true}))\n```\n\n### minimatch.match(list, pattern, options)\n\nMatch against the list of\nfiles, in the style of fnmatch or glob. If nothing is matched, and\noptions.nonull is set, then return a list containing the pattern itself.\n\n```javascript\nvar javascripts = minimatch.match(fileList, \"*.js\", {matchBase: true}))\n```\n\n### minimatch.makeRe(pattern, options)\n\nMake a regular expression object from the pattern.\n\n## Options\n\nAll options are `false` by default.\n\n### debug\n\nDump a ton of stuff to stderr.\n\n### nobrace\n\nDo not expand `{a,b}` and `{1..3}` brace sets.\n\n### noglobstar\n\nDisable `**` matching against multiple folder names.\n\n### dot\n\nAllow patterns to match filenames starting with a period, even if\nthe pattern does not explicitly have a period in that spot.\n\nNote that by default, `a/**/b` will **not** match `a/.d/b`, unless `dot`\nis set.\n\n### noext\n\nDisable \"extglob\" style patterns like `+(a|b)`.\n\n### nocase\n\nPerform a case-insensitive match.\n\n### nonull\n\nWhen a match is not found by `minimatch.match`, return a list containing\nthe pattern itself. When set, an empty list is returned if there are\nno matches.\n\n### matchBase\n\nIf set, then patterns without slashes will be matched\nagainst the basename of the path if it contains slashes. For example,\n`a?b` would match the path `/xyz/123/acb`, but not `/xyz/acb/123`.\n\n### nocomment\n\nSuppress the behavior of treating `#` at the start of a pattern as a\ncomment.\n\n### nonegate\n\nSuppress the behavior of treating a leading `!` character as negation.\n\n### flipNegate\n\nReturns from negate expressions the same as if they were not negated.\n(Ie, true on a hit, false on a miss.)\n", + "readmeFilename": "README.md", + "bugs": { + "url": "https://github.com/isaacs/minimatch/issues" + }, + "_id": "minimatch@0.2.12", + "dist": { + "shasum": "308fb5bc9d1aabe4a0477f812ec820ee5fa8e25d" + }, + "_from": "minimatch@0.2.12", + "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.12.tgz" +} diff --git a/node_modules/csscomb/node_modules/minimatch/test/basic.js b/node_modules/csscomb/node_modules/minimatch/test/basic.js new file mode 100644 index 0000000..ae7ac73 --- /dev/null +++ b/node_modules/csscomb/node_modules/minimatch/test/basic.js @@ -0,0 +1,399 @@ +// http://www.bashcookbook.com/bashinfo/source/bash-1.14.7/tests/glob-test +// +// TODO: Some of these tests do very bad things with backslashes, and will +// most likely fail badly on windows. They should probably be skipped. + +var tap = require("tap") + , globalBefore = Object.keys(global) + , mm = require("../") + , files = [ "a", "b", "c", "d", "abc" + , "abd", "abe", "bb", "bcd" + , "ca", "cb", "dd", "de" + , "bdir/", "bdir/cfile"] + , next = files.concat([ "a-b", "aXb" + , ".x", ".y" ]) + + +var patterns = + [ "http://www.bashcookbook.com/bashinfo/source/bash-1.14.7/tests/glob-test" + , ["a*", ["a", "abc", "abd", "abe"]] + , ["X*", ["X*"], {nonull: true}] + + // allow null glob expansion + , ["X*", []] + + // isaacs: Slightly different than bash/sh/ksh + // \\* is not un-escaped to literal "*" in a failed match, + // but it does make it get treated as a literal star + , ["\\*", ["\\*"], {nonull: true}] + , ["\\**", ["\\**"], {nonull: true}] + , ["\\*\\*", ["\\*\\*"], {nonull: true}] + + , ["b*/", ["bdir/"]] + , ["c*", ["c", "ca", "cb"]] + , ["**", files] + + , ["\\.\\./*/", ["\\.\\./*/"], {nonull: true}] + , ["s/\\..*//", ["s/\\..*//"], {nonull: true}] + + , "legendary larry crashes bashes" + , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/" + , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/"], {nonull: true}] + , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/" + , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/"], {nonull: true}] + + , "character classes" + , ["[a-c]b*", ["abc", "abd", "abe", "bb", "cb"]] + , ["[a-y]*[^c]", ["abd", "abe", "bb", "bcd", + "bdir/", "ca", "cb", "dd", "de"]] + , ["a*[^c]", ["abd", "abe"]] + , function () { files.push("a-b", "aXb") } + , ["a[X-]b", ["a-b", "aXb"]] + , function () { files.push(".x", ".y") } + , ["[^a-c]*", ["d", "dd", "de"]] + , function () { files.push("a*b/", "a*b/ooo") } + , ["a\\*b/*", ["a*b/ooo"]] + , ["a\\*?/*", ["a*b/ooo"]] + , ["*\\\\!*", [], {null: true}, ["echo !7"]] + , ["*\\!*", ["echo !7"], null, ["echo !7"]] + , ["*.\\*", ["r.*"], null, ["r.*"]] + , ["a[b]c", ["abc"]] + , ["a[\\b]c", ["abc"]] + , ["a?c", ["abc"]] + , ["a\\*c", [], {null: true}, ["abc"]] + , ["", [""], { null: true }, [""]] + + , "http://www.opensource.apple.com/source/bash/bash-23/" + + "bash/tests/glob-test" + , function () { files.push("man/", "man/man1/", "man/man1/bash.1") } + , ["*/man*/bash.*", ["man/man1/bash.1"]] + , ["man/man1/bash.1", ["man/man1/bash.1"]] + , ["a***c", ["abc"], null, ["abc"]] + , ["a*****?c", ["abc"], null, ["abc"]] + , ["?*****??", ["abc"], null, ["abc"]] + , ["*****??", ["abc"], null, ["abc"]] + , ["?*****?c", ["abc"], null, ["abc"]] + , ["?***?****c", ["abc"], null, ["abc"]] + , ["?***?****?", ["abc"], null, ["abc"]] + , ["?***?****", ["abc"], null, ["abc"]] + , ["*******c", ["abc"], null, ["abc"]] + , ["*******?", ["abc"], null, ["abc"]] + , ["a*cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]] + , ["a**?**cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]] + , ["a**?**cd**?**??k***", ["abcdecdhjk"], null, ["abcdecdhjk"]] + , ["a**?**cd**?**??***k", ["abcdecdhjk"], null, ["abcdecdhjk"]] + , ["a**?**cd**?**??***k**", ["abcdecdhjk"], null, ["abcdecdhjk"]] + , ["a****c**?**??*****", ["abcdecdhjk"], null, ["abcdecdhjk"]] + , ["[-abc]", ["-"], null, ["-"]] + , ["[abc-]", ["-"], null, ["-"]] + , ["\\", ["\\"], null, ["\\"]] + , ["[\\\\]", ["\\"], null, ["\\"]] + , ["[[]", ["["], null, ["["]] + , ["[", ["["], null, ["["]] + , ["[*", ["[abc"], null, ["[abc"]] + , "a right bracket shall lose its special meaning and\n" + + "represent itself in a bracket expression if it occurs\n" + + "first in the list. -- POSIX.2 2.8.3.2" + , ["[]]", ["]"], null, ["]"]] + , ["[]-]", ["]"], null, ["]"]] + , ["[a-\z]", ["p"], null, ["p"]] + , ["??**********?****?", [], { null: true }, ["abc"]] + , ["??**********?****c", [], { null: true }, ["abc"]] + , ["?************c****?****", [], { null: true }, ["abc"]] + , ["*c*?**", [], { null: true }, ["abc"]] + , ["a*****c*?**", [], { null: true }, ["abc"]] + , ["a********???*******", [], { null: true }, ["abc"]] + , ["[]", [], { null: true }, ["a"]] + , ["[abc", [], { null: true }, ["["]] + + , "nocase tests" + , ["XYZ", ["xYz"], { nocase: true, null: true } + , ["xYz", "ABC", "IjK"]] + , ["ab*", ["ABC"], { nocase: true, null: true } + , ["xYz", "ABC", "IjK"]] + , ["[ia]?[ck]", ["ABC", "IjK"], { nocase: true, null: true } + , ["xYz", "ABC", "IjK"]] + + // [ pattern, [matches], MM opts, files, TAP opts] + , "onestar/twostar" + , ["{/*,*}", [], {null: true}, ["/asdf/asdf/asdf"]] + , ["{/?,*}", ["/a", "bb"], {null: true} + , ["/a", "/b/b", "/a/b/c", "bb"]] + + , "dots should not match unless requested" + , ["**", ["a/b"], {}, ["a/b", "a/.d", ".a/.d"]] + + // .. and . can only match patterns starting with ., + // even when options.dot is set. + , function () { + files = ["a/./b", "a/../b", "a/c/b", "a/.d/b"] + } + , ["a/*/b", ["a/c/b", "a/.d/b"], {dot: true}] + , ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: true}] + , ["a/*/b", ["a/c/b"], {dot:false}] + , ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: false}] + + + // this also tests that changing the options needs + // to change the cache key, even if the pattern is + // the same! + , ["**", ["a/b","a/.d",".a/.d"], { dot: true } + , [ ".a/.d", "a/.d", "a/b"]] + + , "paren sets cannot contain slashes" + , ["*(a/b)", ["*(a/b)"], {nonull: true}, ["a/b"]] + + // brace sets trump all else. + // + // invalid glob pattern. fails on bash4 and bsdglob. + // however, in this implementation, it's easier just + // to do the intuitive thing, and let brace-expansion + // actually come before parsing any extglob patterns, + // like the documentation seems to say. + // + // XXX: if anyone complains about this, either fix it + // or tell them to grow up and stop complaining. + // + // bash/bsdglob says this: + // , ["*(a|{b),c)}", ["*(a|{b),c)}"], {}, ["a", "ab", "ac", "ad"]] + // but we do this instead: + , ["*(a|{b),c)}", ["a", "ab", "ac"], {}, ["a", "ab", "ac", "ad"]] + + // test partial parsing in the presence of comment/negation chars + , ["[!a*", ["[!ab"], {}, ["[!ab", "[ab"]] + , ["[#a*", ["[#ab"], {}, ["[#ab", "[ab"]] + + // like: {a,b|c\\,d\\\|e} except it's unclosed, so it has to be escaped. + , ["+(a|*\\|c\\\\|d\\\\\\|e\\\\\\\\|f\\\\\\\\\\|g" + , ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g"] + , {} + , ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g", "a", "b\\c"]] + + + // crazy nested {,,} and *(||) tests. + , function () { + files = [ "a", "b", "c", "d" + , "ab", "ac", "ad" + , "bc", "cb" + , "bc,d", "c,db", "c,d" + , "d)", "(b|c", "*(b|c" + , "b|c", "b|cc", "cb|c" + , "x(a|b|c)", "x(a|c)" + , "(a|b|c)", "(a|c)"] + } + , ["*(a|{b,c})", ["a", "b", "c", "ab", "ac"]] + , ["{a,*(b|c,d)}", ["a","(b|c", "*(b|c", "d)"]] + // a + // *(b|c) + // *(b|d) + , ["{a,*(b|{c,d})}", ["a","b", "bc", "cb", "c", "d"]] + , ["*(a|{b|c,c})", ["a", "b", "c", "ab", "ac", "bc", "cb"]] + + + // test various flag settings. + , [ "*(a|{b|c,c})", ["x(a|b|c)", "x(a|c)", "(a|b|c)", "(a|c)"] + , { noext: true } ] + , ["a?b", ["x/y/acb", "acb/"], {matchBase: true} + , ["x/y/acb", "acb/", "acb/d/e", "x/y/acb/d"] ] + , ["#*", ["#a", "#b"], {nocomment: true}, ["#a", "#b", "c#d"]] + + + // begin channelling Boole and deMorgan... + , "negation tests" + , function () { + files = ["d", "e", "!ab", "!abc", "a!b", "\\!a"] + } + + // anything that is NOT a* matches. + , ["!a*", ["\\!a", "d", "e", "!ab", "!abc"]] + + // anything that IS !a* matches. + , ["!a*", ["!ab", "!abc"], {nonegate: true}] + + // anything that IS a* matches + , ["!!a*", ["a!b"]] + + // anything that is NOT !a* matches + , ["!\\!a*", ["a!b", "d", "e", "\\!a"]] + + // negation nestled within a pattern + , function () { + files = [ "foo.js" + , "foo.bar" + // can't match this one without negative lookbehind. + , "foo.js.js" + , "blar.js" + , "foo." + , "boo.js.boo" ] + } + , ["*.!(js)", ["foo.bar", "foo.", "boo.js.boo"] ] + + // https://github.com/isaacs/minimatch/issues/5 + , function () { + files = [ 'a/b/.x/c' + , 'a/b/.x/c/d' + , 'a/b/.x/c/d/e' + , 'a/b/.x' + , 'a/b/.x/' + , 'a/.x/b' + , '.x' + , '.x/' + , '.x/a' + , '.x/a/b' + , 'a/.x/b/.x/c' + , '.x/.x' ] + } + , ["**/.x/**", [ '.x/' + , '.x/a' + , '.x/a/b' + , 'a/.x/b' + , 'a/b/.x/' + , 'a/b/.x/c' + , 'a/b/.x/c/d' + , 'a/b/.x/c/d/e' ] ] + + ] + +var regexps = + [ '/^(?:(?=.)a[^/]*?)$/', + '/^(?:(?=.)X[^/]*?)$/', + '/^(?:(?=.)X[^/]*?)$/', + '/^(?:\\*)$/', + '/^(?:(?=.)\\*[^/]*?)$/', + '/^(?:\\*\\*)$/', + '/^(?:(?=.)b[^/]*?\\/)$/', + '/^(?:(?=.)c[^/]*?)$/', + '/^(?:(?:(?!(?:\\/|^)\\.).)*?)$/', + '/^(?:\\.\\.\\/(?!\\.)(?=.)[^/]*?\\/)$/', + '/^(?:s\\/(?=.)\\.\\.[^/]*?\\/)$/', + '/^(?:\\/\\^root:\\/\\{s\\/(?=.)\\^[^:][^/]*?:[^:][^/]*?:\\([^:]\\)[^/]*?\\.[^/]*?\\$\\/1\\/)$/', + '/^(?:\\/\\^root:\\/\\{s\\/(?=.)\\^[^:][^/]*?:[^:][^/]*?:\\([^:]\\)[^/]*?\\.[^/]*?\\$\\/\u0001\\/)$/', + '/^(?:(?!\\.)(?=.)[a-c]b[^/]*?)$/', + '/^(?:(?!\\.)(?=.)[a-y][^/]*?[^c])$/', + '/^(?:(?=.)a[^/]*?[^c])$/', + '/^(?:(?=.)a[X-]b)$/', + '/^(?:(?!\\.)(?=.)[^a-c][^/]*?)$/', + '/^(?:a\\*b\\/(?!\\.)(?=.)[^/]*?)$/', + '/^(?:(?=.)a\\*[^/]\\/(?!\\.)(?=.)[^/]*?)$/', + '/^(?:(?!\\.)(?=.)[^/]*?\\\\\\![^/]*?)$/', + '/^(?:(?!\\.)(?=.)[^/]*?\\![^/]*?)$/', + '/^(?:(?!\\.)(?=.)[^/]*?\\.\\*)$/', + '/^(?:(?=.)a[b]c)$/', + '/^(?:(?=.)a[b]c)$/', + '/^(?:(?=.)a[^/]c)$/', + '/^(?:a\\*c)$/', + 'false', + '/^(?:(?!\\.)(?=.)[^/]*?\\/(?=.)man[^/]*?\\/(?=.)bash\\.[^/]*?)$/', + '/^(?:man\\/man1\\/bash\\.1)$/', + '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?c)$/', + '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]c)$/', + '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/])$/', + '/^(?:(?!\\.)(?=.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/])$/', + '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]c)$/', + '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?c)$/', + '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/])$/', + '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?)$/', + '/^(?:(?!\\.)(?=.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c)$/', + '/^(?:(?!\\.)(?=.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/])$/', + '/^(?:(?=.)a[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k)$/', + '/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k)$/', + '/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k[^/]*?[^/]*?[^/]*?)$/', + '/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k)$/', + '/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k[^/]*?[^/]*?)$/', + '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?)$/', + '/^(?:(?!\\.)(?=.)[-abc])$/', + '/^(?:(?!\\.)(?=.)[abc-])$/', + '/^(?:\\\\)$/', + '/^(?:(?!\\.)(?=.)[\\\\])$/', + '/^(?:(?!\\.)(?=.)[\\[])$/', + '/^(?:\\[)$/', + '/^(?:(?=.)\\[(?!\\.)(?=.)[^/]*?)$/', + '/^(?:(?!\\.)(?=.)[\\]])$/', + '/^(?:(?!\\.)(?=.)[\\]-])$/', + '/^(?:(?!\\.)(?=.)[a-z])$/', + '/^(?:(?!\\.)(?=.)[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/])$/', + '/^(?:(?!\\.)(?=.)[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?c)$/', + '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?)$/', + '/^(?:(?!\\.)(?=.)[^/]*?c[^/]*?[^/][^/]*?[^/]*?)$/', + '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/][^/]*?[^/]*?)$/', + '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?)$/', + '/^(?:\\[\\])$/', + '/^(?:\\[abc)$/', + '/^(?:(?=.)XYZ)$/i', + '/^(?:(?=.)ab[^/]*?)$/i', + '/^(?:(?!\\.)(?=.)[ia][^/][ck])$/i', + '/^(?:\\/(?!\\.)(?=.)[^/]*?|(?!\\.)(?=.)[^/]*?)$/', + '/^(?:\\/(?!\\.)(?=.)[^/]|(?!\\.)(?=.)[^/]*?)$/', + '/^(?:(?:(?!(?:\\/|^)\\.).)*?)$/', + '/^(?:a\\/(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?\\/b)$/', + '/^(?:a\\/(?=.)\\.[^/]*?\\/b)$/', + '/^(?:a\\/(?!\\.)(?=.)[^/]*?\\/b)$/', + '/^(?:a\\/(?=.)\\.[^/]*?\\/b)$/', + '/^(?:(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?)$/', + '/^(?:(?!\\.)(?=.)[^/]*?\\(a\\/b\\))$/', + '/^(?:(?!\\.)(?=.)(?:a|b)*|(?!\\.)(?=.)(?:a|c)*)$/', + '/^(?:(?=.)\\[(?=.)\\!a[^/]*?)$/', + '/^(?:(?=.)\\[(?=.)#a[^/]*?)$/', + '/^(?:(?=.)\\+\\(a\\|[^/]*?\\|c\\\\\\\\\\|d\\\\\\\\\\|e\\\\\\\\\\\\\\\\\\|f\\\\\\\\\\\\\\\\\\|g)$/', + '/^(?:(?!\\.)(?=.)(?:a|b)*|(?!\\.)(?=.)(?:a|c)*)$/', + '/^(?:a|(?!\\.)(?=.)[^/]*?\\(b\\|c|d\\))$/', + '/^(?:a|(?!\\.)(?=.)(?:b|c)*|(?!\\.)(?=.)(?:b|d)*)$/', + '/^(?:(?!\\.)(?=.)(?:a|b|c)*|(?!\\.)(?=.)(?:a|c)*)$/', + '/^(?:(?!\\.)(?=.)[^/]*?\\(a\\|b\\|c\\)|(?!\\.)(?=.)[^/]*?\\(a\\|c\\))$/', + '/^(?:(?=.)a[^/]b)$/', + '/^(?:(?=.)#[^/]*?)$/', + '/^(?!^(?:(?=.)a[^/]*?)$).*$/', + '/^(?:(?=.)\\!a[^/]*?)$/', + '/^(?:(?=.)a[^/]*?)$/', + '/^(?!^(?:(?=.)\\!a[^/]*?)$).*$/', + '/^(?:(?!\\.)(?=.)[^/]*?\\.(?:(?!js)[^/]*?))$/', + '/^(?:(?:(?!(?:\\/|^)\\.).)*?\\/\\.x\\/(?:(?!(?:\\/|^)\\.).)*?)$/' ] +var re = 0; + +tap.test("basic tests", function (t) { + var start = Date.now() + + // [ pattern, [matches], MM opts, files, TAP opts] + patterns.forEach(function (c) { + if (typeof c === "function") return c() + if (typeof c === "string") return t.comment(c) + + var pattern = c[0] + , expect = c[1].sort(alpha) + , options = c[2] || {} + , f = c[3] || files + , tapOpts = c[4] || {} + + // options.debug = true + var m = new mm.Minimatch(pattern, options) + var r = m.makeRe() + var expectRe = regexps[re++] + tapOpts.re = String(r) || JSON.stringify(r) + tapOpts.files = JSON.stringify(f) + tapOpts.pattern = pattern + tapOpts.set = m.set + tapOpts.negated = m.negate + + var actual = mm.match(f, pattern, options) + actual.sort(alpha) + + t.equivalent( actual, expect + , JSON.stringify(pattern) + " " + JSON.stringify(expect) + , tapOpts ) + + t.equal(tapOpts.re, expectRe, tapOpts) + }) + + t.comment("time=" + (Date.now() - start) + "ms") + t.end() +}) + +tap.test("global leak test", function (t) { + var globalAfter = Object.keys(global) + t.equivalent(globalAfter, globalBefore, "no new globals, please") + t.end() +}) + +function alpha (a, b) { + return a > b ? 1 : -1 +} diff --git a/node_modules/csscomb/node_modules/minimatch/test/brace-expand.js b/node_modules/csscomb/node_modules/minimatch/test/brace-expand.js new file mode 100644 index 0000000..7ee278a --- /dev/null +++ b/node_modules/csscomb/node_modules/minimatch/test/brace-expand.js @@ -0,0 +1,33 @@ +var tap = require("tap") + , minimatch = require("../") + +tap.test("brace expansion", function (t) { + // [ pattern, [expanded] ] + ; [ [ "a{b,c{d,e},{f,g}h}x{y,z}" + , [ "abxy" + , "abxz" + , "acdxy" + , "acdxz" + , "acexy" + , "acexz" + , "afhxy" + , "afhxz" + , "aghxy" + , "aghxz" ] ] + , [ "a{1..5}b" + , [ "a1b" + , "a2b" + , "a3b" + , "a4b" + , "a5b" ] ] + , [ "a{b}c", ["a{b}c"] ] + ].forEach(function (tc) { + var p = tc[0] + , expect = tc[1] + t.equivalent(minimatch.braceExpand(p), expect, p) + }) + console.error("ending") + t.end() +}) + + diff --git a/node_modules/csscomb/node_modules/minimatch/test/caching.js b/node_modules/csscomb/node_modules/minimatch/test/caching.js new file mode 100644 index 0000000..0fec4b0 --- /dev/null +++ b/node_modules/csscomb/node_modules/minimatch/test/caching.js @@ -0,0 +1,14 @@ +var Minimatch = require("../minimatch.js").Minimatch +var tap = require("tap") +tap.test("cache test", function (t) { + var mm1 = new Minimatch("a?b") + var mm2 = new Minimatch("a?b") + t.equal(mm1, mm2, "should get the same object") + // the lru should drop it after 100 entries + for (var i = 0; i < 100; i ++) { + new Minimatch("a"+i) + } + mm2 = new Minimatch("a?b") + t.notEqual(mm1, mm2, "cache should have dropped") + t.end() +}) diff --git a/node_modules/csscomb/node_modules/minimatch/test/defaults.js b/node_modules/csscomb/node_modules/minimatch/test/defaults.js new file mode 100644 index 0000000..25f1f60 --- /dev/null +++ b/node_modules/csscomb/node_modules/minimatch/test/defaults.js @@ -0,0 +1,274 @@ +// http://www.bashcookbook.com/bashinfo/source/bash-1.14.7/tests/glob-test +// +// TODO: Some of these tests do very bad things with backslashes, and will +// most likely fail badly on windows. They should probably be skipped. + +var tap = require("tap") + , globalBefore = Object.keys(global) + , mm = require("../") + , files = [ "a", "b", "c", "d", "abc" + , "abd", "abe", "bb", "bcd" + , "ca", "cb", "dd", "de" + , "bdir/", "bdir/cfile"] + , next = files.concat([ "a-b", "aXb" + , ".x", ".y" ]) + +tap.test("basic tests", function (t) { + var start = Date.now() + + // [ pattern, [matches], MM opts, files, TAP opts] + ; [ "http://www.bashcookbook.com/bashinfo" + + "/source/bash-1.14.7/tests/glob-test" + , ["a*", ["a", "abc", "abd", "abe"]] + , ["X*", ["X*"], {nonull: true}] + + // allow null glob expansion + , ["X*", []] + + // isaacs: Slightly different than bash/sh/ksh + // \\* is not un-escaped to literal "*" in a failed match, + // but it does make it get treated as a literal star + , ["\\*", ["\\*"], {nonull: true}] + , ["\\**", ["\\**"], {nonull: true}] + , ["\\*\\*", ["\\*\\*"], {nonull: true}] + + , ["b*/", ["bdir/"]] + , ["c*", ["c", "ca", "cb"]] + , ["**", files] + + , ["\\.\\./*/", ["\\.\\./*/"], {nonull: true}] + , ["s/\\..*//", ["s/\\..*//"], {nonull: true}] + + , "legendary larry crashes bashes" + , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/" + , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/"], {nonull: true}] + , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/" + , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/"], {nonull: true}] + + , "character classes" + , ["[a-c]b*", ["abc", "abd", "abe", "bb", "cb"]] + , ["[a-y]*[^c]", ["abd", "abe", "bb", "bcd", + "bdir/", "ca", "cb", "dd", "de"]] + , ["a*[^c]", ["abd", "abe"]] + , function () { files.push("a-b", "aXb") } + , ["a[X-]b", ["a-b", "aXb"]] + , function () { files.push(".x", ".y") } + , ["[^a-c]*", ["d", "dd", "de"]] + , function () { files.push("a*b/", "a*b/ooo") } + , ["a\\*b/*", ["a*b/ooo"]] + , ["a\\*?/*", ["a*b/ooo"]] + , ["*\\\\!*", [], {null: true}, ["echo !7"]] + , ["*\\!*", ["echo !7"], null, ["echo !7"]] + , ["*.\\*", ["r.*"], null, ["r.*"]] + , ["a[b]c", ["abc"]] + , ["a[\\b]c", ["abc"]] + , ["a?c", ["abc"]] + , ["a\\*c", [], {null: true}, ["abc"]] + , ["", [""], { null: true }, [""]] + + , "http://www.opensource.apple.com/source/bash/bash-23/" + + "bash/tests/glob-test" + , function () { files.push("man/", "man/man1/", "man/man1/bash.1") } + , ["*/man*/bash.*", ["man/man1/bash.1"]] + , ["man/man1/bash.1", ["man/man1/bash.1"]] + , ["a***c", ["abc"], null, ["abc"]] + , ["a*****?c", ["abc"], null, ["abc"]] + , ["?*****??", ["abc"], null, ["abc"]] + , ["*****??", ["abc"], null, ["abc"]] + , ["?*****?c", ["abc"], null, ["abc"]] + , ["?***?****c", ["abc"], null, ["abc"]] + , ["?***?****?", ["abc"], null, ["abc"]] + , ["?***?****", ["abc"], null, ["abc"]] + , ["*******c", ["abc"], null, ["abc"]] + , ["*******?", ["abc"], null, ["abc"]] + , ["a*cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]] + , ["a**?**cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]] + , ["a**?**cd**?**??k***", ["abcdecdhjk"], null, ["abcdecdhjk"]] + , ["a**?**cd**?**??***k", ["abcdecdhjk"], null, ["abcdecdhjk"]] + , ["a**?**cd**?**??***k**", ["abcdecdhjk"], null, ["abcdecdhjk"]] + , ["a****c**?**??*****", ["abcdecdhjk"], null, ["abcdecdhjk"]] + , ["[-abc]", ["-"], null, ["-"]] + , ["[abc-]", ["-"], null, ["-"]] + , ["\\", ["\\"], null, ["\\"]] + , ["[\\\\]", ["\\"], null, ["\\"]] + , ["[[]", ["["], null, ["["]] + , ["[", ["["], null, ["["]] + , ["[*", ["[abc"], null, ["[abc"]] + , "a right bracket shall lose its special meaning and\n" + + "represent itself in a bracket expression if it occurs\n" + + "first in the list. -- POSIX.2 2.8.3.2" + , ["[]]", ["]"], null, ["]"]] + , ["[]-]", ["]"], null, ["]"]] + , ["[a-\z]", ["p"], null, ["p"]] + , ["??**********?****?", [], { null: true }, ["abc"]] + , ["??**********?****c", [], { null: true }, ["abc"]] + , ["?************c****?****", [], { null: true }, ["abc"]] + , ["*c*?**", [], { null: true }, ["abc"]] + , ["a*****c*?**", [], { null: true }, ["abc"]] + , ["a********???*******", [], { null: true }, ["abc"]] + , ["[]", [], { null: true }, ["a"]] + , ["[abc", [], { null: true }, ["["]] + + , "nocase tests" + , ["XYZ", ["xYz"], { nocase: true, null: true } + , ["xYz", "ABC", "IjK"]] + , ["ab*", ["ABC"], { nocase: true, null: true } + , ["xYz", "ABC", "IjK"]] + , ["[ia]?[ck]", ["ABC", "IjK"], { nocase: true, null: true } + , ["xYz", "ABC", "IjK"]] + + // [ pattern, [matches], MM opts, files, TAP opts] + , "onestar/twostar" + , ["{/*,*}", [], {null: true}, ["/asdf/asdf/asdf"]] + , ["{/?,*}", ["/a", "bb"], {null: true} + , ["/a", "/b/b", "/a/b/c", "bb"]] + + , "dots should not match unless requested" + , ["**", ["a/b"], {}, ["a/b", "a/.d", ".a/.d"]] + + // .. and . can only match patterns starting with ., + // even when options.dot is set. + , function () { + files = ["a/./b", "a/../b", "a/c/b", "a/.d/b"] + } + , ["a/*/b", ["a/c/b", "a/.d/b"], {dot: true}] + , ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: true}] + , ["a/*/b", ["a/c/b"], {dot:false}] + , ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: false}] + + + // this also tests that changing the options needs + // to change the cache key, even if the pattern is + // the same! + , ["**", ["a/b","a/.d",".a/.d"], { dot: true } + , [ ".a/.d", "a/.d", "a/b"]] + + , "paren sets cannot contain slashes" + , ["*(a/b)", ["*(a/b)"], {nonull: true}, ["a/b"]] + + // brace sets trump all else. + // + // invalid glob pattern. fails on bash4 and bsdglob. + // however, in this implementation, it's easier just + // to do the intuitive thing, and let brace-expansion + // actually come before parsing any extglob patterns, + // like the documentation seems to say. + // + // XXX: if anyone complains about this, either fix it + // or tell them to grow up and stop complaining. + // + // bash/bsdglob says this: + // , ["*(a|{b),c)}", ["*(a|{b),c)}"], {}, ["a", "ab", "ac", "ad"]] + // but we do this instead: + , ["*(a|{b),c)}", ["a", "ab", "ac"], {}, ["a", "ab", "ac", "ad"]] + + // test partial parsing in the presence of comment/negation chars + , ["[!a*", ["[!ab"], {}, ["[!ab", "[ab"]] + , ["[#a*", ["[#ab"], {}, ["[#ab", "[ab"]] + + // like: {a,b|c\\,d\\\|e} except it's unclosed, so it has to be escaped. + , ["+(a|*\\|c\\\\|d\\\\\\|e\\\\\\\\|f\\\\\\\\\\|g" + , ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g"] + , {} + , ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g", "a", "b\\c"]] + + + // crazy nested {,,} and *(||) tests. + , function () { + files = [ "a", "b", "c", "d" + , "ab", "ac", "ad" + , "bc", "cb" + , "bc,d", "c,db", "c,d" + , "d)", "(b|c", "*(b|c" + , "b|c", "b|cc", "cb|c" + , "x(a|b|c)", "x(a|c)" + , "(a|b|c)", "(a|c)"] + } + , ["*(a|{b,c})", ["a", "b", "c", "ab", "ac"]] + , ["{a,*(b|c,d)}", ["a","(b|c", "*(b|c", "d)"]] + // a + // *(b|c) + // *(b|d) + , ["{a,*(b|{c,d})}", ["a","b", "bc", "cb", "c", "d"]] + , ["*(a|{b|c,c})", ["a", "b", "c", "ab", "ac", "bc", "cb"]] + + + // test various flag settings. + , [ "*(a|{b|c,c})", ["x(a|b|c)", "x(a|c)", "(a|b|c)", "(a|c)"] + , { noext: true } ] + , ["a?b", ["x/y/acb", "acb/"], {matchBase: true} + , ["x/y/acb", "acb/", "acb/d/e", "x/y/acb/d"] ] + , ["#*", ["#a", "#b"], {nocomment: true}, ["#a", "#b", "c#d"]] + + + // begin channelling Boole and deMorgan... + , "negation tests" + , function () { + files = ["d", "e", "!ab", "!abc", "a!b", "\\!a"] + } + + // anything that is NOT a* matches. + , ["!a*", ["\\!a", "d", "e", "!ab", "!abc"]] + + // anything that IS !a* matches. + , ["!a*", ["!ab", "!abc"], {nonegate: true}] + + // anything that IS a* matches + , ["!!a*", ["a!b"]] + + // anything that is NOT !a* matches + , ["!\\!a*", ["a!b", "d", "e", "\\!a"]] + + // negation nestled within a pattern + , function () { + files = [ "foo.js" + , "foo.bar" + // can't match this one without negative lookbehind. + , "foo.js.js" + , "blar.js" + , "foo." + , "boo.js.boo" ] + } + , ["*.!(js)", ["foo.bar", "foo.", "boo.js.boo"] ] + + ].forEach(function (c) { + if (typeof c === "function") return c() + if (typeof c === "string") return t.comment(c) + + var pattern = c[0] + , expect = c[1].sort(alpha) + , options = c[2] || {} + , f = c[3] || files + , tapOpts = c[4] || {} + + // options.debug = true + var Class = mm.defaults(options).Minimatch + var m = new Class(pattern, {}) + var r = m.makeRe() + tapOpts.re = String(r) || JSON.stringify(r) + tapOpts.files = JSON.stringify(f) + tapOpts.pattern = pattern + tapOpts.set = m.set + tapOpts.negated = m.negate + + var actual = mm.match(f, pattern, options) + actual.sort(alpha) + + t.equivalent( actual, expect + , JSON.stringify(pattern) + " " + JSON.stringify(expect) + , tapOpts ) + }) + + t.comment("time=" + (Date.now() - start) + "ms") + t.end() +}) + +tap.test("global leak test", function (t) { + var globalAfter = Object.keys(global) + t.equivalent(globalAfter, globalBefore, "no new globals, please") + t.end() +}) + +function alpha (a, b) { + return a > b ? 1 : -1 +} diff --git a/node_modules/csscomb/node_modules/vow-fs/.travis.yml b/node_modules/csscomb/node_modules/vow-fs/.travis.yml new file mode 100644 index 0000000..bb9e58a --- /dev/null +++ b/node_modules/csscomb/node_modules/vow-fs/.travis.yml @@ -0,0 +1,6 @@ +language: node_js + +node_js: + - 0.6 + - 0.8 + - 0.10 diff --git a/node_modules/csscomb/node_modules/vow-fs/README.md b/node_modules/csscomb/node_modules/vow-fs/README.md new file mode 100644 index 0000000..9c4b23e --- /dev/null +++ b/node_modules/csscomb/node_modules/vow-fs/README.md @@ -0,0 +1,68 @@ +Vow-fs [![Build Status](https://secure.travis-ci.org/dfilatov/vow-fs.png)](http://travis-ci.org/dfilatov/vow-fs) +====== + +[Vow](https://github.com/dfilatov/jspromise)-based file I/O for Node.js + +Requirements +------------ +Vow-fs works with Node.js 0.6, 0.8 and 0.10. + +Getting Started +--------------- +You can install Vow-fs using Node Package Manager (npm): + + npm install vow-fs + +####Usage#### +````javascript +var fs = require('vow-fs'); +```` + +API +--- +####read(path, [encoding=utf8])#### +Returns a promise for the file's content at a given ````path````. +####write(path, data, [encoding=utf8])#### +Writes ````data```` to file at a given ````path````. Returns a promise for the completion of the operation. +####append(path, data, [encoding=utf8])#### +Appends````data```` to file's content at a given ````path````. Returns a promise for the completion of the operation. +####remove(path)#### +Removes a file at a given ````path````. Returns a promise for the completion of the operation. +####copy(sourcePath, targetPath)#### +Copies a file from ````sourcePath```` to ````targetPath````. Returns a promise for the completion of the operation. +####move(sourcePath, targetPath)#### +Moves a file or directory from ````sourcePath```` to ````targetPath````. Returns a promise for the completion of the operation. +####stats(path)#### +Returns a promise for the metadata about the given ````path```` as a [Stats](http://nodejs.org/api/fs.html#fs_class_fs_stats) object. +####exists(path)#### +Returns a promise for whether the given ````path```` exists. +####link(sourcePath, targetPath)#### +Creates a hard link from the ````sourcePath```` to ````targetPath````. +####symLink(sourcePath, targetPath, [type=file])#### +Creates a symbolic link from the ````sourcePath```` to ````targetPath````. +####chown(path, uid, gid)#### +Changes the owner of a given ````path````. +####chmod(path, mode)#### +Changes the mode of a given ````path```` to ````mode````. +####absolute(path)#### +####isFile(path)#### +Returns a promise for whether the given ````path```` is a file. +####isDir(path)#### +Returns a promise for whether the given ````path```` is a directory. +####isSocket(path)#### +Returns a promise for whether the given ````path```` is a socket. +####isSymLink(path)#### +Returns a promise for whether the given ````path```` is a symbolic link. +####makeTmpFile([options])#### +Makes a temporary file. Returns a promise with generated path to file. +The ````options````: + * prefix (absent by default) + * dir (operating system's directory for temp files by default) + * ext (````.tmp```` by default) + +####listDir(path)#### +Returns a promise for a list of files and directories in directory at the given ````path````. +####makeDir(path, [mode=0777], [failIfExist=false])#### +Makes a directory at a given ````path```` and any necessary subdirectories (like ````mkdir -p````). Returns a promise for the completion of the operation. +####removeDir(path)#### +Recursively removes a directory at a given path (like ````remove -rf````). Returns a promise for the completion of the operation. diff --git a/node_modules/csscomb/node_modules/vow-fs/lib/fs.js b/node_modules/csscomb/node_modules/vow-fs/lib/fs.js new file mode 100644 index 0000000..4be59ae --- /dev/null +++ b/node_modules/csscomb/node_modules/vow-fs/lib/fs.js @@ -0,0 +1,349 @@ +/** + * Vow-fs + * + * Copyright (c) 2013 Filatov Dmitry (dfilatov@yandex-team.ru) + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * + * @version 0.2.3 + */ + +var Vow = require('vow'), + Queue = require('vow-queue'), + openFilesQueue = new Queue(), + fs = require('fs'), + path = require('path'), + os = require('os'), + uuid = require('node-uuid'), + slice = Array.prototype.slice, + promisify = function(nodeFn) { + return function() { + var promise = Vow.promise(), + args = slice.call(arguments); + args.push(function(err) { + err? promise.reject(err) : promise.fulfill(arguments[1]); + }); + nodeFn.apply(fs, args); + return promise; + }; + }, + tmpDir = os.tmpdir || os.tmpDir || function() { return '/tmp'; }, + makeDir = promisify(fs.mkdir), + removeDir = promisify(fs.rmdir), + lstat = promisify(fs.lstat), + emfileTimeout = 1, + emfileFixWrapper = function(method, weight) { + var wrapper = function() { + var callArgs = arguments; + return openFilesQueue.enqueue(function() { + return method.apply(vfs, callArgs).then( + function(res) { + emfileTimeout = Math.max(1, emfileTimeout / 2); + return res; + }, + function(err) { + if(err.code === 'EMFILE') { + emfileTimeout++; + return Vow.delay(null, emfileTimeout).then(function() { + return wrapper.apply(vfs, callArgs); + }); + } + else { + throw err; + } + }); + }, weight); + }; + return wrapper; + }, + undef; + +var vfs = module.exports = { + /** + * Read file by given path + * @param {String} path + * @param {String} [encoding=utf8] + * @returns {Vow.promise} + */ + read : emfileFixWrapper(promisify(fs.readFile)), + + /** + * Write data to file by given path + * @param {String} path + * @param {String|Buffer} data + * @param {String} [encoding=utf8] + * @returns {Vow.promise} + */ + write : emfileFixWrapper(promisify(fs.writeFile)), + + /** + * Append data to file by given path + * @param {String} path + * @param {String|Buffer} data + * @param {String} [encoding=utf8] + * @returns {Vow.promise} + */ + append : emfileFixWrapper(promisify(fs.appendFile)), + + /** + * Remove file at given path + * @param {String} pathToRemove + * @returns {Vow.promise} + */ + remove : promisify(fs.unlink), + + /** + * Copy file from sourcePath to targetPath + * @param {String} sourcePath + * @param {String} targetPath + * @returns {Vow.promise} + */ + copy : emfileFixWrapper(function(sourcePath, targetPath) { + return this.isFile(sourcePath).then(function(isFile) { + if(!isFile) { + var err = Error(); + err.errno = 28; + err.code = 'EISDIR'; + err.path = sourcePath; + throw err; + } + + var promise = Vow.promise(), + sourceStream = fs.createReadStream(sourcePath), + errFn = function(err) { + promise.reject(err); + }; + + sourceStream + .on('error', errFn) + .on('open', function() { + var targetStream = fs.createWriteStream(targetPath); + sourceStream.pipe( + targetStream + .on('error', errFn) + .on('close', function() { + promise.fulfill(); + })); + }); + + return promise; + }); + }, 2), + + /** + * Move from sourcePath to targetPath + * @param {String} sourcePath + * @param {String} targetPath + * @returns {Vow.promise} + */ + move : promisify(fs.rename), + + /** + * Extract fs.Stats about a given path + * @param {String} path + * @returns {Vow.promise} + */ + stat : promisify(fs.stat), + + /** + * Test whether or not the given path exists + * @param {String} path + * @returns {Vow.promise} + */ + exists : fs.exists? + function(path) { + var promise = Vow.promise(); + fs.exists(path, function(exists) { + promise.fulfill(exists); + }); + return promise; + } : + function(path) { + var promise = Vow.promise(); + fs.stat(path, function(err) { + promise.fulfill(!err); + }); + return promise; + }, + + /** + * Create a hard link from the sourcePath to targetPath + * @param {String} sourcePath + * @param {String} targetPath + * @returns {Vow.promise} + */ + link : promisify(fs.link), + + /** + * Create a relative symbolic link from the sourcePath to targetPath + * @param {String} sourcePath + * @param {String} targetPath + * @param {String} [type=file] can be either 'dir', 'file', or 'junction' + * @returns {Vow.promise} + */ + symLink : promisify(fs.symlink), + + /** + * Change the owner for a given path using Unix user-id and group-id numbers + * @param {String} path + * @param uid + * @param gid + * @returns {Vow.promise} + */ + chown : promisify(fs.chown), + + /** + * Change the Unix mode for a path. Returns a promise + * @param {String} path + * @param mode + * @returns {Vow.promise} + */ + chmod : promisify(fs.chmod), + + /** + * Normalizes a given path to absolute path + * @param {String} path + * @returns {Vow.promise} + */ + absolute : promisify(fs.realpath), + + /** + * Check whether the given path is a file + * @param {String} path + * @returns {Vow.promise} + */ + isFile : function(path) { + return this.stat(path).then(function(stats) { + return stats.isFile(); + }); + }, + + /** + * Check whether the given path is a directory + * @param {String} path + * @returns {Vow.promise} + */ + isDir : function(path) { + return this.stat(path).then(function(stats) { + return stats.isDirectory(); + }); + }, + + /** + * Check whether the given path is a socket + * @param {String} path + * @returns {Vow.promise} + */ + isSocket : function(path) { + return this.stat(path).then(function(stats) { + return stats.isSocket(); + }); + }, + + /** + * Check whether the given path is a symbolic link + * @param {String} path + * @returns {Vow.promise} + */ + isSymLink : function(path) { + return lstat(path).then(function(stats) { + return stats.isSymbolicLink(); + }); + }, + + /** + * Make a temporary file + * @param {Object} options + * @param {String} [options.prefix] + * @param {String} [options.dir=os.tmpdir()] + * @param {String} [options.ext=tmp] + * @returns {Vow.promise} + */ + makeTmpFile : function(options) { + options || (options = {}); + + var filePath = path.join( + options.dir || tmpDir(), + (options.prefix || '') + uuid.v4() + (options.ext || '.tmp')); + + return vfs.write(filePath, '').then(function() { + return filePath; + }); + }, + + /** + * Read the contents of a directory by given path + * @param {String} path + * @returns {Vow.promise} + */ + listDir : emfileFixWrapper(promisify(fs.readdir)), + + /** + * Make a directory at a given path, recursively creating any branches that doesn't exist + * @param {String} dirPath + * @param [mode=0777] + * @param [failIfExist=false] + * @returns {Vow.promise} + */ + makeDir : function(dirPath, mode, failIfExist) { + if(typeof mode === 'boolean') { + failIfExist = mode; + mode = undef; + } + + var dirName = path.dirname(dirPath), + onFailed = function(e) { + if(e.code !== 'EEXIST' || failIfExist) { + throw e; + } + + return vfs.isDir(dirPath).then(function(isDir) { + if(!isDir) { + throw e; + } + }); + }; + + return vfs.exists(dirName).then(function(exists) { + if(exists) { + return makeDir(dirPath, mode).fail(onFailed); + } + else { + failIfExist = false; + return vfs.makeDir(dirName, mode).then(function() { + return makeDir(dirPath, mode).fail(onFailed); + }); + } + }); + }, + + /** + * Remove directory + * @param {String} dirPath + * @returns {Vow.promise} + */ + removeDir : function(dirPath) { + return vfs.listDir(dirPath) + .then(function(list) { + return list.length && Vow.all( + list.map(function(file) { + var fullPath = path.join(dirPath, file); + return vfs.isFile(fullPath).then(function(isFile) { + return isFile? + vfs.remove(fullPath) : + vfs.removeDir(fullPath); + }); + })); + }) + .then(function() { + return removeDir(dirPath); + }); + }, + + options : function(opts) { + if(typeof opts.openFileLimit !== 'undefined') { + openFilesQueue.params({ weightLimit : opts.openFileLimit }); + } + } +}; diff --git a/node_modules/csscomb/node_modules/vow-fs/node_modules/node-uuid/LICENSE.md b/node_modules/csscomb/node_modules/vow-fs/node_modules/node-uuid/LICENSE.md new file mode 100644 index 0000000..bcdddf9 --- /dev/null +++ b/node_modules/csscomb/node_modules/vow-fs/node_modules/node-uuid/LICENSE.md @@ -0,0 +1,3 @@ +Copyright (c) 2010 Robert Kieffer + +Dual licensed under the [MIT](http://en.wikipedia.org/wiki/MIT_License) and [GPL](http://en.wikipedia.org/wiki/GNU_General_Public_License) licenses. diff --git a/node_modules/csscomb/node_modules/vow-fs/node_modules/node-uuid/README.md b/node_modules/csscomb/node_modules/vow-fs/node_modules/node-uuid/README.md new file mode 100644 index 0000000..d62f7a1 --- /dev/null +++ b/node_modules/csscomb/node_modules/vow-fs/node_modules/node-uuid/README.md @@ -0,0 +1,203 @@ +# node-uuid + +Simple, fast generation of [RFC4122](http://www.ietf.org/rfc/rfc4122.txt) UUIDS. + +Features: + +* Generate RFC4122 version 1 or version 4 UUIDs +* Runs in node.js and all browsers. +* Cryptographically strong random # generation on supporting platforms +* 1.1K minified and gzip'ed (Want something smaller? Check this [crazy shit](https://gist.github.com/982883) out! ) +* [Annotated source code](http://broofa.github.com/node-uuid/docs/uuid.html) + +## Getting Started + +Install it in your browser: + +```html + +``` + +Or in node.js: + +``` +npm install node-uuid +``` + +```javascript +var uuid = require('node-uuid'); +``` + +Then create some ids ... + +```javascript +// Generate a v1 (time-based) id +uuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a' + +// Generate a v4 (random) id +uuid.v4(); // -> '110ec58a-a0f2-4ac4-8393-c866d813b8d1' +``` + +## API + +### uuid.v1([`options` [, `buffer` [, `offset`]]]) + +Generate and return a RFC4122 v1 (timestamp-based) UUID. + +* `options` - (Object) Optional uuid state to apply. Properties may include: + + * `node` - (Array) Node id as Array of 6 bytes (per 4.1.6). Default: Randomly generated ID. See note 1. + * `clockseq` - (Number between 0 - 0x3fff) RFC clock sequence. Default: An internally maintained clockseq is used. + * `msecs` - (Number | Date) Time in milliseconds since unix Epoch. Default: The current time is used. + * `nsecs` - (Number between 0-9999) additional time, in 100-nanosecond units. Ignored if `msecs` is unspecified. Default: internal uuid counter is used, as per 4.2.1.2. + +* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. +* `offset` - (Number) Starting index in `buffer` at which to begin writing. + +Returns `buffer`, if specified, otherwise the string form of the UUID + +Notes: + +1. The randomly generated node id is only guaranteed to stay constant for the lifetime of the current JS runtime. (Future versions of this module may use persistent storage mechanisms to extend this guarantee.) + +Example: Generate string UUID with fully-specified options + +```javascript +uuid.v1({ + node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab], + clockseq: 0x1234, + msecs: new Date('2011-11-01').getTime(), + nsecs: 5678 +}); // -> "710b962e-041c-11e1-9234-0123456789ab" +``` + +Example: In-place generation of two binary IDs + +```javascript +// Generate two ids in an array +var arr = new Array(32); // -> [] +uuid.v1(null, arr, 0); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15] +uuid.v1(null, arr, 16); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15 02 a3 1c b0 14 32 11 e1 85 58 0b 48 8e 4f c1 15] + +// Optionally use uuid.unparse() to get stringify the ids +uuid.unparse(buffer); // -> '02a2ce90-1432-11e1-8558-0b488e4fc115' +uuid.unparse(buffer, 16) // -> '02a31cb0-1432-11e1-8558-0b488e4fc115' +``` + +### uuid.v4([`options` [, `buffer` [, `offset`]]]) + +Generate and return a RFC4122 v4 UUID. + +* `options` - (Object) Optional uuid state to apply. Properties may include: + + * `random` - (Number[16]) Array of 16 numbers (0-255) to use in place of randomly generated values + * `rng` - (Function) Random # generator to use. Set to one of the built-in generators - `uuid.mathRNG` (all platforms), `uuid.nodeRNG` (node.js only), `uuid.whatwgRNG` (WebKit only) - or a custom function that returns an array[16] of byte values. + +* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. +* `offset` - (Number) Starting index in `buffer` at which to begin writing. + +Returns `buffer`, if specified, otherwise the string form of the UUID + +Example: Generate string UUID with fully-specified options + +```javascript +uuid.v4({ + random: [ + 0x10, 0x91, 0x56, 0xbe, 0xc4, 0xfb, 0xc1, 0xea, + 0x71, 0xb4, 0xef, 0xe1, 0x67, 0x1c, 0x58, 0x36 + ] +}); +// -> "109156be-c4fb-41ea-b1b4-efe1671c5836" +``` + +Example: Generate two IDs in a single buffer + +```javascript +var buffer = new Array(32); // (or 'new Buffer' in node.js) +uuid.v4(null, buffer, 0); +uuid.v4(null, buffer, 16); +``` + +### uuid.parse(id[, buffer[, offset]]) +### uuid.unparse(buffer[, offset]) + +Parse and unparse UUIDs + + * `id` - (String) UUID(-like) string + * `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. Default: A new Array or Buffer is used + * `offset` - (Number) Starting index in `buffer` at which to begin writing. Default: 0 + +Example parsing and unparsing a UUID string + +```javascript +var bytes = uuid.parse('797ff043-11eb-11e1-80d6-510998755d10'); // -> +var string = uuid.unparse(bytes); // -> '797ff043-11eb-11e1-80d6-510998755d10' +``` + +### uuid.noConflict() + +(Browsers only) Set `uuid` property back to it's previous value. + +Returns the node-uuid object. + +Example: + +```javascript +var myUuid = uuid.noConflict(); +myUuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a' +``` + +## Deprecated APIs + +Support for the following v1.2 APIs is available in v1.3, but is deprecated and will be removed in the next major version. + +### uuid([format [, buffer [, offset]]]) + +uuid() has become uuid.v4(), and the `format` argument is now implicit in the `buffer` argument. (i.e. if you specify a buffer, the format is assumed to be binary). + +### uuid.BufferClass + +The class of container created when generating binary uuid data if no buffer argument is specified. This is expected to go away, with no replacement API. + +## Testing + +In node.js + +``` +> cd test +> node test.js +``` + +In Browser + +``` +open test/test.html +``` + +### Benchmarking + +Requires node.js + +``` +npm install uuid uuid-js +node benchmark/benchmark.js +``` + +For a more complete discussion of node-uuid performance, please see the `benchmark/README.md` file, and the [benchmark wiki](https://github.com/broofa/node-uuid/wiki/Benchmark) + +For browser performance [checkout the JSPerf tests](http://jsperf.com/node-uuid-performance). + +## Release notes + +v1.4 +* Improved module context detection +* Removed public RNG functions + +v1.3.2: +* Improve tests and handling of v1() options (Issue #24) +* Expose RNG option to allow for perf testing with different generators + +v1.3: +* Support for version 1 ids, thanks to [@ctavan](https://github.com/ctavan)! +* Support for node.js crypto API +* De-emphasizing performance in favor of a) cryptographic quality PRNGs where available and b) more manageable code diff --git a/node_modules/csscomb/node_modules/vow-fs/node_modules/node-uuid/benchmark/README.md b/node_modules/csscomb/node_modules/vow-fs/node_modules/node-uuid/benchmark/README.md new file mode 100644 index 0000000..aaeb2ea --- /dev/null +++ b/node_modules/csscomb/node_modules/vow-fs/node_modules/node-uuid/benchmark/README.md @@ -0,0 +1,53 @@ +# node-uuid Benchmarks + +### Results + +To see the results of our benchmarks visit https://github.com/broofa/node-uuid/wiki/Benchmark + +### Run them yourself + +node-uuid comes with some benchmarks to measure performance of generating UUIDs. These can be run using node.js. node-uuid is being benchmarked against some other uuid modules, that are available through npm namely `uuid` and `uuid-js`. + +To prepare and run the benchmark issue; + +``` +npm install uuid uuid-js +node benchmark/benchmark.js +``` + +You'll see an output like this one: + +``` +# v4 +nodeuuid.v4(): 854700 uuids/second +nodeuuid.v4('binary'): 788643 uuids/second +nodeuuid.v4('binary', buffer): 1336898 uuids/second +uuid(): 479386 uuids/second +uuid('binary'): 582072 uuids/second +uuidjs.create(4): 312304 uuids/second + +# v1 +nodeuuid.v1(): 938086 uuids/second +nodeuuid.v1('binary'): 683060 uuids/second +nodeuuid.v1('binary', buffer): 1644736 uuids/second +uuidjs.create(1): 190621 uuids/second +``` + +* The `uuid()` entries are for Nikhil Marathe's [uuid module](https://bitbucket.org/nikhilm/uuidjs) which is a wrapper around the native libuuid library. +* The `uuidjs()` entries are for Patrick Negri's [uuid-js module](https://github.com/pnegri/uuid-js) which is a pure javascript implementation based on [UUID.js](https://github.com/LiosK/UUID.js) by LiosK. + +If you want to get more reliable results you can run the benchmark multiple times and write the output into a log file: + +``` +for i in {0..9}; do node benchmark/benchmark.js >> benchmark/bench_0.4.12.log; done; +``` + +If you're interested in how performance varies between different node versions, you can issue the above command multiple times. + +You can then use the shell script `bench.sh` provided in this directory to calculate the averages over all benchmark runs and draw a nice plot: + +``` +(cd benchmark/ && ./bench.sh) +``` + +This assumes you have [gnuplot](http://www.gnuplot.info/) and [ImageMagick](http://www.imagemagick.org/) installed. You'll find a nice `bench.png` graph in the `benchmark/` directory then. diff --git a/node_modules/csscomb/node_modules/vow-fs/node_modules/node-uuid/benchmark/bench.gnu b/node_modules/csscomb/node_modules/vow-fs/node_modules/node-uuid/benchmark/bench.gnu new file mode 100644 index 0000000..a342fbb --- /dev/null +++ b/node_modules/csscomb/node_modules/vow-fs/node_modules/node-uuid/benchmark/bench.gnu @@ -0,0 +1,174 @@ +#!/opt/local/bin/gnuplot -persist +# +# +# G N U P L O T +# Version 4.4 patchlevel 3 +# last modified March 2011 +# System: Darwin 10.8.0 +# +# Copyright (C) 1986-1993, 1998, 2004, 2007-2010 +# Thomas Williams, Colin Kelley and many others +# +# gnuplot home: http://www.gnuplot.info +# faq, bugs, etc: type "help seeking-assistance" +# immediate help: type "help" +# plot window: hit 'h' +set terminal postscript eps noenhanced defaultplex \ + leveldefault color colortext \ + solid linewidth 1.2 butt noclip \ + palfuncparam 2000,0.003 \ + "Helvetica" 14 +set output 'bench.eps' +unset clip points +set clip one +unset clip two +set bar 1.000000 front +set border 31 front linetype -1 linewidth 1.000 +set xdata +set ydata +set zdata +set x2data +set y2data +set timefmt x "%d/%m/%y,%H:%M" +set timefmt y "%d/%m/%y,%H:%M" +set timefmt z "%d/%m/%y,%H:%M" +set timefmt x2 "%d/%m/%y,%H:%M" +set timefmt y2 "%d/%m/%y,%H:%M" +set timefmt cb "%d/%m/%y,%H:%M" +set boxwidth +set style fill empty border +set style rectangle back fc lt -3 fillstyle solid 1.00 border lt -1 +set style circle radius graph 0.02, first 0, 0 +set dummy x,y +set format x "% g" +set format y "% g" +set format x2 "% g" +set format y2 "% g" +set format z "% g" +set format cb "% g" +set angles radians +unset grid +set key title "" +set key outside left top horizontal Right noreverse enhanced autotitles columnhead nobox +set key noinvert samplen 4 spacing 1 width 0 height 0 +set key maxcolumns 2 maxrows 0 +unset label +unset arrow +set style increment default +unset style line +set style line 1 linetype 1 linewidth 2.000 pointtype 1 pointsize default pointinterval 0 +unset style arrow +set style histogram clustered gap 2 title offset character 0, 0, 0 +unset logscale +set offsets graph 0.05, 0.15, 0, 0 +set pointsize 1.5 +set pointintervalbox 1 +set encoding default +unset polar +unset parametric +unset decimalsign +set view 60, 30, 1, 1 +set samples 100, 100 +set isosamples 10, 10 +set surface +unset contour +set clabel '%8.3g' +set mapping cartesian +set datafile separator whitespace +unset hidden3d +set cntrparam order 4 +set cntrparam linear +set cntrparam levels auto 5 +set cntrparam points 5 +set size ratio 0 1,1 +set origin 0,0 +set style data points +set style function lines +set xzeroaxis linetype -2 linewidth 1.000 +set yzeroaxis linetype -2 linewidth 1.000 +set zzeroaxis linetype -2 linewidth 1.000 +set x2zeroaxis linetype -2 linewidth 1.000 +set y2zeroaxis linetype -2 linewidth 1.000 +set ticslevel 0.5 +set mxtics default +set mytics default +set mztics default +set mx2tics default +set my2tics default +set mcbtics default +set xtics border in scale 1,0.5 mirror norotate offset character 0, 0, 0 +set xtics norangelimit +set xtics () +set ytics border in scale 1,0.5 mirror norotate offset character 0, 0, 0 +set ytics autofreq norangelimit +set ztics border in scale 1,0.5 nomirror norotate offset character 0, 0, 0 +set ztics autofreq norangelimit +set nox2tics +set noy2tics +set cbtics border in scale 1,0.5 mirror norotate offset character 0, 0, 0 +set cbtics autofreq norangelimit +set title "" +set title offset character 0, 0, 0 font "" norotate +set timestamp bottom +set timestamp "" +set timestamp offset character 0, 0, 0 font "" norotate +set rrange [ * : * ] noreverse nowriteback # (currently [8.98847e+307:-8.98847e+307] ) +set autoscale rfixmin +set autoscale rfixmax +set trange [ * : * ] noreverse nowriteback # (currently [-5.00000:5.00000] ) +set autoscale tfixmin +set autoscale tfixmax +set urange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] ) +set autoscale ufixmin +set autoscale ufixmax +set vrange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] ) +set autoscale vfixmin +set autoscale vfixmax +set xlabel "" +set xlabel offset character 0, 0, 0 font "" textcolor lt -1 norotate +set x2label "" +set x2label offset character 0, 0, 0 font "" textcolor lt -1 norotate +set xrange [ * : * ] noreverse nowriteback # (currently [-0.150000:3.15000] ) +set autoscale xfixmin +set autoscale xfixmax +set x2range [ * : * ] noreverse nowriteback # (currently [0.00000:3.00000] ) +set autoscale x2fixmin +set autoscale x2fixmax +set ylabel "" +set ylabel offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270 +set y2label "" +set y2label offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270 +set yrange [ 0.00000 : 1.90000e+06 ] noreverse nowriteback # (currently [:] ) +set autoscale yfixmin +set autoscale yfixmax +set y2range [ * : * ] noreverse nowriteback # (currently [0.00000:1.90000e+06] ) +set autoscale y2fixmin +set autoscale y2fixmax +set zlabel "" +set zlabel offset character 0, 0, 0 font "" textcolor lt -1 norotate +set zrange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] ) +set autoscale zfixmin +set autoscale zfixmax +set cblabel "" +set cblabel offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270 +set cbrange [ * : * ] noreverse nowriteback # (currently [8.98847e+307:-8.98847e+307] ) +set autoscale cbfixmin +set autoscale cbfixmax +set zero 1e-08 +set lmargin -1 +set bmargin -1 +set rmargin -1 +set tmargin -1 +set pm3d explicit at s +set pm3d scansautomatic +set pm3d interpolate 1,1 flush begin noftriangles nohidden3d corners2color mean +set palette positive nops_allcF maxcolors 0 gamma 1.5 color model RGB +set palette rgbformulae 7, 5, 15 +set colorbox default +set colorbox vertical origin screen 0.9, 0.2, 0 size screen 0.05, 0.6, 0 front bdefault +set loadpath +set fontpath +set fit noerrorvariables +GNUTERM = "aqua" +plot 'bench_results.txt' using 2:xticlabel(1) w lp lw 2, '' using 3:xticlabel(1) w lp lw 2, '' using 4:xticlabel(1) w lp lw 2, '' using 5:xticlabel(1) w lp lw 2, '' using 6:xticlabel(1) w lp lw 2, '' using 7:xticlabel(1) w lp lw 2, '' using 8:xticlabel(1) w lp lw 2, '' using 9:xticlabel(1) w lp lw 2 +# EOF diff --git a/node_modules/csscomb/node_modules/vow-fs/node_modules/node-uuid/benchmark/bench.sh b/node_modules/csscomb/node_modules/vow-fs/node_modules/node-uuid/benchmark/bench.sh new file mode 100755 index 0000000..d870a0c --- /dev/null +++ b/node_modules/csscomb/node_modules/vow-fs/node_modules/node-uuid/benchmark/bench.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +# for a given node version run: +# for i in {0..9}; do node benchmark.js >> bench_0.6.2.log; done; + +PATTERNS=('nodeuuid.v1()' "nodeuuid.v1('binary'," 'nodeuuid.v4()' "nodeuuid.v4('binary'," "uuid()" "uuid('binary')" 'uuidjs.create(1)' 'uuidjs.create(4)' '140byte') +FILES=(node_uuid_v1_string node_uuid_v1_buf node_uuid_v4_string node_uuid_v4_buf libuuid_v4_string libuuid_v4_binary uuidjs_v1_string uuidjs_v4_string 140byte_es) +INDICES=(2 3 2 3 2 2 2 2 2) +VERSIONS=$( ls bench_*.log | sed -e 's/^bench_\([0-9\.]*\)\.log/\1/' | tr "\\n" " " ) +TMPJOIN="tmp_join" +OUTPUT="bench_results.txt" + +for I in ${!FILES[*]}; do + F=${FILES[$I]} + P=${PATTERNS[$I]} + INDEX=${INDICES[$I]} + echo "version $F" > $F + for V in $VERSIONS; do + (VAL=$( grep "$P" bench_$V.log | LC_ALL=en_US awk '{ sum += $'$INDEX' } END { print sum/NR }' ); echo $V $VAL) >> $F + done + if [ $I == 0 ]; then + cat $F > $TMPJOIN + else + join $TMPJOIN $F > $OUTPUT + cp $OUTPUT $TMPJOIN + fi + rm $F +done + +rm $TMPJOIN + +gnuplot bench.gnu +convert -density 200 -resize 800x560 -flatten bench.eps bench.png +rm bench.eps diff --git a/node_modules/csscomb/node_modules/vow-fs/node_modules/node-uuid/benchmark/benchmark-native.c b/node_modules/csscomb/node_modules/vow-fs/node_modules/node-uuid/benchmark/benchmark-native.c new file mode 100644 index 0000000..dbfc75f --- /dev/null +++ b/node_modules/csscomb/node_modules/vow-fs/node_modules/node-uuid/benchmark/benchmark-native.c @@ -0,0 +1,34 @@ +/* +Test performance of native C UUID generation + +To Compile: cc -luuid benchmark-native.c -o benchmark-native +*/ + +#include +#include +#include +#include + +int main() { + uuid_t myid; + char buf[36+1]; + int i; + struct timeval t; + double start, finish; + + gettimeofday(&t, NULL); + start = t.tv_sec + t.tv_usec/1e6; + + int n = 2e5; + for (i = 0; i < n; i++) { + uuid_generate(myid); + uuid_unparse(myid, buf); + } + + gettimeofday(&t, NULL); + finish = t.tv_sec + t.tv_usec/1e6; + double dur = finish - start; + + printf("%d uuids/sec", (int)(n/dur)); + return 0; +} diff --git a/node_modules/csscomb/node_modules/vow-fs/node_modules/node-uuid/benchmark/benchmark.js b/node_modules/csscomb/node_modules/vow-fs/node_modules/node-uuid/benchmark/benchmark.js new file mode 100644 index 0000000..40e6efb --- /dev/null +++ b/node_modules/csscomb/node_modules/vow-fs/node_modules/node-uuid/benchmark/benchmark.js @@ -0,0 +1,84 @@ +try { + var nodeuuid = require('../uuid'); +} catch (e) { + console.error('node-uuid require failed - skipping tests'); +} + +try { + var uuid = require('uuid'); +} catch (e) { + console.error('uuid require failed - skipping tests'); +} + +try { + var uuidjs = require('uuid-js'); +} catch (e) { + console.error('uuid-js require failed - skipping tests'); +} + +var N = 5e5; + +function rate(msg, t) { + console.log(msg + ': ' + + (N / (Date.now() - t) * 1e3 | 0) + + ' uuids/second'); +} + +console.log('# v4'); + +// node-uuid - string form +if (nodeuuid) { + for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4(); + rate('nodeuuid.v4() - using node.js crypto RNG', t); + + for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4({rng: nodeuuid.mathRNG}); + rate('nodeuuid.v4() - using Math.random() RNG', t); + + for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4('binary'); + rate('nodeuuid.v4(\'binary\')', t); + + var buffer = new nodeuuid.BufferClass(16); + for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4('binary', buffer); + rate('nodeuuid.v4(\'binary\', buffer)', t); +} + +// libuuid - string form +if (uuid) { + for (var i = 0, t = Date.now(); i < N; i++) uuid(); + rate('uuid()', t); + + for (var i = 0, t = Date.now(); i < N; i++) uuid('binary'); + rate('uuid(\'binary\')', t); +} + +// uuid-js - string form +if (uuidjs) { + for (var i = 0, t = Date.now(); i < N; i++) uuidjs.create(4); + rate('uuidjs.create(4)', t); +} + +// 140byte.es +for (var i = 0, t = Date.now(); i < N; i++) 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g,function(s,r){r=Math.random()*16|0;return (s=='x'?r:r&0x3|0x8).toString(16)}); +rate('140byte.es_v4', t); + +console.log(''); +console.log('# v1'); + +// node-uuid - v1 string form +if (nodeuuid) { + for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1(); + rate('nodeuuid.v1()', t); + + for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1('binary'); + rate('nodeuuid.v1(\'binary\')', t); + + var buffer = new nodeuuid.BufferClass(16); + for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1('binary', buffer); + rate('nodeuuid.v1(\'binary\', buffer)', t); +} + +// uuid-js - v1 string form +if (uuidjs) { + for (var i = 0, t = Date.now(); i < N; i++) uuidjs.create(1); + rate('uuidjs.create(1)', t); +} diff --git a/node_modules/csscomb/node_modules/vow-fs/node_modules/node-uuid/package.json b/node_modules/csscomb/node_modules/vow-fs/node_modules/node-uuid/package.json new file mode 100644 index 0000000..3c5dd10 --- /dev/null +++ b/node_modules/csscomb/node_modules/vow-fs/node_modules/node-uuid/package.json @@ -0,0 +1,38 @@ +{ + "name": "node-uuid", + "description": "Rigorous implementation of RFC4122 (v1 and v4) UUIDs.", + "url": "http://github.com/broofa/node-uuid", + "keywords": [ + "uuid", + "guid", + "rfc4122" + ], + "author": { + "name": "Robert Kieffer", + "email": "robert@broofa.com" + }, + "contributors": [ + { + "name": "Christoph Tavan", + "email": "dev@tavan.de" + } + ], + "lib": ".", + "main": "./uuid.js", + "repository": { + "type": "git", + "url": "https://github.com/broofa/node-uuid.git" + }, + "version": "1.4.0", + "readme": "# node-uuid\n\nSimple, fast generation of [RFC4122](http://www.ietf.org/rfc/rfc4122.txt) UUIDS.\n\nFeatures:\n\n* Generate RFC4122 version 1 or version 4 UUIDs\n* Runs in node.js and all browsers.\n* Cryptographically strong random # generation on supporting platforms\n* 1.1K minified and gzip'ed (Want something smaller? Check this [crazy shit](https://gist.github.com/982883) out! )\n* [Annotated source code](http://broofa.github.com/node-uuid/docs/uuid.html)\n\n## Getting Started\n\nInstall it in your browser:\n\n```html\n\n```\n\nOr in node.js:\n\n```\nnpm install node-uuid\n```\n\n```javascript\nvar uuid = require('node-uuid');\n```\n\nThen create some ids ...\n\n```javascript\n// Generate a v1 (time-based) id\nuuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a'\n\n// Generate a v4 (random) id\nuuid.v4(); // -> '110ec58a-a0f2-4ac4-8393-c866d813b8d1'\n```\n\n## API\n\n### uuid.v1([`options` [, `buffer` [, `offset`]]])\n\nGenerate and return a RFC4122 v1 (timestamp-based) UUID.\n\n* `options` - (Object) Optional uuid state to apply. Properties may include:\n\n * `node` - (Array) Node id as Array of 6 bytes (per 4.1.6). Default: Randomly generated ID. See note 1.\n * `clockseq` - (Number between 0 - 0x3fff) RFC clock sequence. Default: An internally maintained clockseq is used.\n * `msecs` - (Number | Date) Time in milliseconds since unix Epoch. Default: The current time is used.\n * `nsecs` - (Number between 0-9999) additional time, in 100-nanosecond units. Ignored if `msecs` is unspecified. Default: internal uuid counter is used, as per 4.2.1.2.\n\n* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written.\n* `offset` - (Number) Starting index in `buffer` at which to begin writing.\n\nReturns `buffer`, if specified, otherwise the string form of the UUID\n\nNotes:\n\n1. The randomly generated node id is only guaranteed to stay constant for the lifetime of the current JS runtime. (Future versions of this module may use persistent storage mechanisms to extend this guarantee.)\n\nExample: Generate string UUID with fully-specified options\n\n```javascript\nuuid.v1({\n node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab],\n clockseq: 0x1234,\n msecs: new Date('2011-11-01').getTime(),\n nsecs: 5678\n}); // -> \"710b962e-041c-11e1-9234-0123456789ab\"\n```\n\nExample: In-place generation of two binary IDs\n\n```javascript\n// Generate two ids in an array\nvar arr = new Array(32); // -> []\nuuid.v1(null, arr, 0); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15]\nuuid.v1(null, arr, 16); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15 02 a3 1c b0 14 32 11 e1 85 58 0b 48 8e 4f c1 15]\n\n// Optionally use uuid.unparse() to get stringify the ids\nuuid.unparse(buffer); // -> '02a2ce90-1432-11e1-8558-0b488e4fc115'\nuuid.unparse(buffer, 16) // -> '02a31cb0-1432-11e1-8558-0b488e4fc115'\n```\n\n### uuid.v4([`options` [, `buffer` [, `offset`]]])\n\nGenerate and return a RFC4122 v4 UUID.\n\n* `options` - (Object) Optional uuid state to apply. Properties may include:\n\n * `random` - (Number[16]) Array of 16 numbers (0-255) to use in place of randomly generated values\n * `rng` - (Function) Random # generator to use. Set to one of the built-in generators - `uuid.mathRNG` (all platforms), `uuid.nodeRNG` (node.js only), `uuid.whatwgRNG` (WebKit only) - or a custom function that returns an array[16] of byte values.\n\n* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written.\n* `offset` - (Number) Starting index in `buffer` at which to begin writing.\n\nReturns `buffer`, if specified, otherwise the string form of the UUID\n\nExample: Generate string UUID with fully-specified options\n\n```javascript\nuuid.v4({\n random: [\n 0x10, 0x91, 0x56, 0xbe, 0xc4, 0xfb, 0xc1, 0xea,\n 0x71, 0xb4, 0xef, 0xe1, 0x67, 0x1c, 0x58, 0x36\n ]\n});\n// -> \"109156be-c4fb-41ea-b1b4-efe1671c5836\"\n```\n\nExample: Generate two IDs in a single buffer\n\n```javascript\nvar buffer = new Array(32); // (or 'new Buffer' in node.js)\nuuid.v4(null, buffer, 0);\nuuid.v4(null, buffer, 16);\n```\n\n### uuid.parse(id[, buffer[, offset]])\n### uuid.unparse(buffer[, offset])\n\nParse and unparse UUIDs\n\n * `id` - (String) UUID(-like) string\n * `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. Default: A new Array or Buffer is used\n * `offset` - (Number) Starting index in `buffer` at which to begin writing. Default: 0\n\nExample parsing and unparsing a UUID string\n\n```javascript\nvar bytes = uuid.parse('797ff043-11eb-11e1-80d6-510998755d10'); // -> \nvar string = uuid.unparse(bytes); // -> '797ff043-11eb-11e1-80d6-510998755d10'\n```\n\n### uuid.noConflict()\n\n(Browsers only) Set `uuid` property back to it's previous value.\n\nReturns the node-uuid object.\n\nExample:\n\n```javascript\nvar myUuid = uuid.noConflict();\nmyUuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a'\n```\n\n## Deprecated APIs\n\nSupport for the following v1.2 APIs is available in v1.3, but is deprecated and will be removed in the next major version.\n\n### uuid([format [, buffer [, offset]]])\n\nuuid() has become uuid.v4(), and the `format` argument is now implicit in the `buffer` argument. (i.e. if you specify a buffer, the format is assumed to be binary).\n\n### uuid.BufferClass\n\nThe class of container created when generating binary uuid data if no buffer argument is specified. This is expected to go away, with no replacement API.\n\n## Testing\n\nIn node.js\n\n```\n> cd test\n> node test.js\n```\n\nIn Browser\n\n```\nopen test/test.html\n```\n\n### Benchmarking\n\nRequires node.js\n\n```\nnpm install uuid uuid-js\nnode benchmark/benchmark.js\n```\n\nFor a more complete discussion of node-uuid performance, please see the `benchmark/README.md` file, and the [benchmark wiki](https://github.com/broofa/node-uuid/wiki/Benchmark)\n\nFor browser performance [checkout the JSPerf tests](http://jsperf.com/node-uuid-performance).\n\n## Release notes\n\nv1.4\n* Improved module context detection\n* Removed public RNG functions\n\nv1.3.2:\n* Improve tests and handling of v1() options (Issue #24)\n* Expose RNG option to allow for perf testing with different generators\n\nv1.3:\n* Support for version 1 ids, thanks to [@ctavan](https://github.com/ctavan)!\n* Support for node.js crypto API\n* De-emphasizing performance in favor of a) cryptographic quality PRNGs where available and b) more manageable code\n", + "readmeFilename": "README.md", + "bugs": { + "url": "https://github.com/broofa/node-uuid/issues" + }, + "_id": "node-uuid@1.4.0", + "dist": { + "shasum": "b1e83a08049e7c88875189903b43c36512a4e9c7" + }, + "_from": "node-uuid@1.4.0", + "_resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.0.tgz" +} diff --git a/node_modules/csscomb/node_modules/vow-fs/node_modules/node-uuid/test/compare_v1.js b/node_modules/csscomb/node_modules/vow-fs/node_modules/node-uuid/test/compare_v1.js new file mode 100644 index 0000000..05af822 --- /dev/null +++ b/node_modules/csscomb/node_modules/vow-fs/node_modules/node-uuid/test/compare_v1.js @@ -0,0 +1,63 @@ +var assert = require('assert'), + nodeuuid = require('../uuid'), + uuidjs = require('uuid-js'), + libuuid = require('uuid').generate, + util = require('util'), + exec = require('child_process').exec, + os = require('os'); + +// On Mac Os X / macports there's only the ossp-uuid package that provides uuid +// On Linux there's uuid-runtime which provides uuidgen +var uuidCmd = os.type() === 'Darwin' ? 'uuid -1' : 'uuidgen -t'; + +function compare(ids) { + console.log(ids); + for (var i = 0; i < ids.length; i++) { + var id = ids[i].split('-'); + id = [id[2], id[1], id[0]].join(''); + ids[i] = id; + } + var sorted = ([].concat(ids)).sort(); + + if (sorted.toString() !== ids.toString()) { + console.log('Warning: sorted !== ids'); + } else { + console.log('everything in order!'); + } +} + +// Test time order of v1 uuids +var ids = []; +while (ids.length < 10e3) ids.push(nodeuuid.v1()); + +var max = 10; +console.log('node-uuid:'); +ids = []; +for (var i = 0; i < max; i++) ids.push(nodeuuid.v1()); +compare(ids); + +console.log(''); +console.log('uuidjs:'); +ids = []; +for (var i = 0; i < max; i++) ids.push(uuidjs.create(1).toString()); +compare(ids); + +console.log(''); +console.log('libuuid:'); +ids = []; +var count = 0; +var last = function() { + compare(ids); +} +var cb = function(err, stdout, stderr) { + ids.push(stdout.substring(0, stdout.length-1)); + count++; + if (count < max) { + return next(); + } + last(); +}; +var next = function() { + exec(uuidCmd, cb); +}; +next(); diff --git a/node_modules/csscomb/node_modules/vow-fs/node_modules/node-uuid/test/test.html b/node_modules/csscomb/node_modules/vow-fs/node_modules/node-uuid/test/test.html new file mode 100644 index 0000000..d80326e --- /dev/null +++ b/node_modules/csscomb/node_modules/vow-fs/node_modules/node-uuid/test/test.html @@ -0,0 +1,17 @@ + + + + + + + + + diff --git a/node_modules/csscomb/node_modules/vow-fs/node_modules/node-uuid/test/test.js b/node_modules/csscomb/node_modules/vow-fs/node_modules/node-uuid/test/test.js new file mode 100644 index 0000000..2469225 --- /dev/null +++ b/node_modules/csscomb/node_modules/vow-fs/node_modules/node-uuid/test/test.js @@ -0,0 +1,228 @@ +if (!this.uuid) { + // node.js + uuid = require('../uuid'); +} + +// +// x-platform log/assert shims +// + +function _log(msg, type) { + type = type || 'log'; + + if (typeof(document) != 'undefined') { + document.write('
' + msg.replace(/\n/g, '
') + '
'); + } + if (typeof(console) != 'undefined') { + var color = { + log: '\033[39m', + warn: '\033[33m', + error: '\033[31m' + }; + console[type](color[type] + msg + color.log); + } +} + +function log(msg) {_log(msg, 'log');} +function warn(msg) {_log(msg, 'warn');} +function error(msg) {_log(msg, 'error');} + +function assert(res, msg) { + if (!res) { + error('FAIL: ' + msg); + } else { + log('Pass: ' + msg); + } +} + +// +// Unit tests +// + +// Verify ordering of v1 ids created with explicit times +var TIME = 1321644961388; // 2011-11-18 11:36:01.388-08:00 + +function compare(name, ids) { + ids = ids.map(function(id) { + return id.split('-').reverse().join('-'); + }).sort(); + var sorted = ([].concat(ids)).sort(); + + assert(sorted.toString() == ids.toString(), name + ' have expected order'); +} + +// Verify ordering of v1 ids created using default behavior +compare('uuids with current time', [ + uuid.v1(), + uuid.v1(), + uuid.v1(), + uuid.v1(), + uuid.v1() +]); + +// Verify ordering of v1 ids created with explicit times +compare('uuids with time option', [ + uuid.v1({msecs: TIME - 10*3600*1000}), + uuid.v1({msecs: TIME - 1}), + uuid.v1({msecs: TIME}), + uuid.v1({msecs: TIME + 1}), + uuid.v1({msecs: TIME + 28*24*3600*1000}) +]); + +assert( + uuid.v1({msecs: TIME}) != uuid.v1({msecs: TIME}), + 'IDs created at same msec are different' +); + +// Verify throw if too many ids created +var thrown = false; +try { + uuid.v1({msecs: TIME, nsecs: 10000}); +} catch (e) { + thrown = true; +} +assert(thrown, 'Exception thrown when > 10K ids created in 1 ms'); + +// Verify clock regression bumps clockseq +var uidt = uuid.v1({msecs: TIME}); +var uidtb = uuid.v1({msecs: TIME - 1}); +assert( + parseInt(uidtb.split('-')[3], 16) - parseInt(uidt.split('-')[3], 16) === 1, + 'Clock regression by msec increments the clockseq' +); + +// Verify clock regression bumps clockseq +var uidtn = uuid.v1({msecs: TIME, nsecs: 10}); +var uidtnb = uuid.v1({msecs: TIME, nsecs: 9}); +assert( + parseInt(uidtnb.split('-')[3], 16) - parseInt(uidtn.split('-')[3], 16) === 1, + 'Clock regression by nsec increments the clockseq' +); + +// Verify explicit options produce expected id +var id = uuid.v1({ + msecs: 1321651533573, + nsecs: 5432, + clockseq: 0x385c, + node: [ 0x61, 0xcd, 0x3c, 0xbb, 0x32, 0x10 ] +}); +assert(id == 'd9428888-122b-11e1-b85c-61cd3cbb3210', 'Explicit options produce expected id'); + +// Verify adjacent ids across a msec boundary are 1 time unit apart +var u0 = uuid.v1({msecs: TIME, nsecs: 9999}); +var u1 = uuid.v1({msecs: TIME + 1, nsecs: 0}); + +var before = u0.split('-')[0], after = u1.split('-')[0]; +var dt = parseInt(after, 16) - parseInt(before, 16); +assert(dt === 1, 'Ids spanning 1ms boundary are 100ns apart'); + +// +// Test parse/unparse +// + +id = '00112233445566778899aabbccddeeff'; +assert(uuid.unparse(uuid.parse(id.substr(0,10))) == + '00112233-4400-0000-0000-000000000000', 'Short parse'); +assert(uuid.unparse(uuid.parse('(this is the uuid -> ' + id + id)) == + '00112233-4455-6677-8899-aabbccddeeff', 'Dirty parse'); + +// +// Perf tests +// + +var generators = { + v1: uuid.v1, + v4: uuid.v4 +}; + +var UUID_FORMAT = { + v1: /[0-9a-f]{8}-[0-9a-f]{4}-1[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/i, + v4: /[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/i +}; + +var N = 1e4; + +// Get %'age an actual value differs from the ideal value +function divergence(actual, ideal) { + return Math.round(100*100*(actual - ideal)/ideal)/100; +} + +function rate(msg, t) { + log(msg + ': ' + (N / (Date.now() - t) * 1e3 | 0) + ' uuids\/second'); +} + +for (var version in generators) { + var counts = {}, max = 0; + var generator = generators[version]; + var format = UUID_FORMAT[version]; + + log('\nSanity check ' + N + ' ' + version + ' uuids'); + for (var i = 0, ok = 0; i < N; i++) { + id = generator(); + if (!format.test(id)) { + throw Error(id + ' is not a valid UUID string'); + } + + if (id != uuid.unparse(uuid.parse(id))) { + assert(fail, id + ' is not a valid id'); + } + + // Count digits for our randomness check + if (version == 'v4') { + var digits = id.replace(/-/g, '').split(''); + for (var j = digits.length-1; j >= 0; j--) { + var c = digits[j]; + max = Math.max(max, counts[c] = (counts[c] || 0) + 1); + } + } + } + + // Check randomness for v4 UUIDs + if (version == 'v4') { + // Limit that we get worried about randomness. (Purely empirical choice, this!) + var limit = 2*100*Math.sqrt(1/N); + + log('\nChecking v4 randomness. Distribution of Hex Digits (% deviation from ideal)'); + + for (var i = 0; i < 16; i++) { + var c = i.toString(16); + var bar = '', n = counts[c], p = Math.round(n/max*100|0); + + // 1-3,5-8, and D-F: 1:16 odds over 30 digits + var ideal = N*30/16; + if (i == 4) { + // 4: 1:1 odds on 1 digit, plus 1:16 odds on 30 digits + ideal = N*(1 + 30/16); + } else if (i >= 8 && i <= 11) { + // 8-B: 1:4 odds on 1 digit, plus 1:16 odds on 30 digits + ideal = N*(1/4 + 30/16); + } else { + // Otherwise: 1:16 odds on 30 digits + ideal = N*30/16; + } + var d = divergence(n, ideal); + + // Draw bar using UTF squares (just for grins) + var s = n/max*50 | 0; + while (s--) bar += '='; + + assert(Math.abs(d) < limit, c + ' |' + bar + '| ' + counts[c] + ' (' + d + '% < ' + limit + '%)'); + } + } +} + +// Perf tests +for (var version in generators) { + log('\nPerformance testing ' + version + ' UUIDs'); + var generator = generators[version]; + var buf = new uuid.BufferClass(16); + + for (var i = 0, t = Date.now(); i < N; i++) generator(); + rate('uuid.' + version + '()', t); + + for (var i = 0, t = Date.now(); i < N; i++) generator('binary'); + rate('uuid.' + version + '(\'binary\')', t); + + for (var i = 0, t = Date.now(); i < N; i++) generator('binary', buf); + rate('uuid.' + version + '(\'binary\', buffer)', t); +} diff --git a/node_modules/csscomb/node_modules/vow-fs/node_modules/node-uuid/uuid.js b/node_modules/csscomb/node_modules/vow-fs/node_modules/node-uuid/uuid.js new file mode 100644 index 0000000..4795b9d --- /dev/null +++ b/node_modules/csscomb/node_modules/vow-fs/node_modules/node-uuid/uuid.js @@ -0,0 +1,245 @@ +// uuid.js +// +// (c) 2010-2012 Robert Kieffer +// MIT License +// https://github.com/broofa/node-uuid +(function() { + var _global = this; + + // Unique ID creation requires a high quality random # generator. We feature + // detect to determine the best RNG source, normalizing to a function that + // returns 128-bits of randomness, since that's what's usually required + var _rng; + + // Node.js crypto-based RNG - http://nodejs.org/docs/v0.6.2/api/crypto.html + // + // Moderately fast, high quality + if (typeof(require) == 'function') { + try { + var _rb = require('crypto').randomBytes; + _rng = _rb && function() {return _rb(16);}; + } catch(e) {} + } + + if (!_rng && _global.crypto && crypto.getRandomValues) { + // WHATWG crypto-based RNG - http://wiki.whatwg.org/wiki/Crypto + // + // Moderately fast, high quality + var _rnds8 = new Uint8Array(16); + _rng = function whatwgRNG() { + crypto.getRandomValues(_rnds8); + return _rnds8; + }; + } + + if (!_rng) { + // Math.random()-based (RNG) + // + // If all else fails, use Math.random(). It's fast, but is of unspecified + // quality. + var _rnds = new Array(16); + _rng = function() { + for (var i = 0, r; i < 16; i++) { + if ((i & 0x03) === 0) r = Math.random() * 0x100000000; + _rnds[i] = r >>> ((i & 0x03) << 3) & 0xff; + } + + return _rnds; + }; + } + + // Buffer class to use + var BufferClass = typeof(Buffer) == 'function' ? Buffer : Array; + + // Maps for number <-> hex string conversion + var _byteToHex = []; + var _hexToByte = {}; + for (var i = 0; i < 256; i++) { + _byteToHex[i] = (i + 0x100).toString(16).substr(1); + _hexToByte[_byteToHex[i]] = i; + } + + // **`parse()` - Parse a UUID into it's component bytes** + function parse(s, buf, offset) { + var i = (buf && offset) || 0, ii = 0; + + buf = buf || []; + s.toLowerCase().replace(/[0-9a-f]{2}/g, function(oct) { + if (ii < 16) { // Don't overflow! + buf[i + ii++] = _hexToByte[oct]; + } + }); + + // Zero out remaining bytes if string was short + while (ii < 16) { + buf[i + ii++] = 0; + } + + return buf; + } + + // **`unparse()` - Convert UUID byte array (ala parse()) into a string** + function unparse(buf, offset) { + var i = offset || 0, bth = _byteToHex; + return bth[buf[i++]] + bth[buf[i++]] + + bth[buf[i++]] + bth[buf[i++]] + '-' + + bth[buf[i++]] + bth[buf[i++]] + '-' + + bth[buf[i++]] + bth[buf[i++]] + '-' + + bth[buf[i++]] + bth[buf[i++]] + '-' + + bth[buf[i++]] + bth[buf[i++]] + + bth[buf[i++]] + bth[buf[i++]] + + bth[buf[i++]] + bth[buf[i++]]; + } + + // **`v1()` - Generate time-based UUID** + // + // Inspired by https://github.com/LiosK/UUID.js + // and http://docs.python.org/library/uuid.html + + // random #'s we need to init node and clockseq + var _seedBytes = _rng(); + + // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) + var _nodeId = [ + _seedBytes[0] | 0x01, + _seedBytes[1], _seedBytes[2], _seedBytes[3], _seedBytes[4], _seedBytes[5] + ]; + + // Per 4.2.2, randomize (14 bit) clockseq + var _clockseq = (_seedBytes[6] << 8 | _seedBytes[7]) & 0x3fff; + + // Previous uuid creation time + var _lastMSecs = 0, _lastNSecs = 0; + + // See https://github.com/broofa/node-uuid for API details + function v1(options, buf, offset) { + var i = buf && offset || 0; + var b = buf || []; + + options = options || {}; + + var clockseq = options.clockseq != null ? options.clockseq : _clockseq; + + // UUID timestamps are 100 nano-second units since the Gregorian epoch, + // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so + // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' + // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. + var msecs = options.msecs != null ? options.msecs : new Date().getTime(); + + // Per 4.2.1.2, use count of uuid's generated during the current clock + // cycle to simulate higher resolution clock + var nsecs = options.nsecs != null ? options.nsecs : _lastNSecs + 1; + + // Time since last uuid creation (in msecs) + var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000; + + // Per 4.2.1.2, Bump clockseq on clock regression + if (dt < 0 && options.clockseq == null) { + clockseq = clockseq + 1 & 0x3fff; + } + + // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new + // time interval + if ((dt < 0 || msecs > _lastMSecs) && options.nsecs == null) { + nsecs = 0; + } + + // Per 4.2.1.2 Throw error if too many uuids are requested + if (nsecs >= 10000) { + throw new Error('uuid.v1(): Can\'t create more than 10M uuids/sec'); + } + + _lastMSecs = msecs; + _lastNSecs = nsecs; + _clockseq = clockseq; + + // Per 4.1.4 - Convert from unix epoch to Gregorian epoch + msecs += 12219292800000; + + // `time_low` + var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; + b[i++] = tl >>> 24 & 0xff; + b[i++] = tl >>> 16 & 0xff; + b[i++] = tl >>> 8 & 0xff; + b[i++] = tl & 0xff; + + // `time_mid` + var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff; + b[i++] = tmh >>> 8 & 0xff; + b[i++] = tmh & 0xff; + + // `time_high_and_version` + b[i++] = tmh >>> 24 & 0xf | 0x10; // include version + b[i++] = tmh >>> 16 & 0xff; + + // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) + b[i++] = clockseq >>> 8 | 0x80; + + // `clock_seq_low` + b[i++] = clockseq & 0xff; + + // `node` + var node = options.node || _nodeId; + for (var n = 0; n < 6; n++) { + b[i + n] = node[n]; + } + + return buf ? buf : unparse(b); + } + + // **`v4()` - Generate random UUID** + + // See https://github.com/broofa/node-uuid for API details + function v4(options, buf, offset) { + // Deprecated - 'format' argument, as supported in v1.2 + var i = buf && offset || 0; + + if (typeof(options) == 'string') { + buf = options == 'binary' ? new BufferClass(16) : null; + options = null; + } + options = options || {}; + + var rnds = options.random || (options.rng || _rng)(); + + // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` + rnds[6] = (rnds[6] & 0x0f) | 0x40; + rnds[8] = (rnds[8] & 0x3f) | 0x80; + + // Copy bytes to buffer, if provided + if (buf) { + for (var ii = 0; ii < 16; ii++) { + buf[i + ii] = rnds[ii]; + } + } + + return buf || unparse(rnds); + } + + // Export public API + var uuid = v4; + uuid.v1 = v1; + uuid.v4 = v4; + uuid.parse = parse; + uuid.unparse = unparse; + uuid.BufferClass = BufferClass; + + if (_global.define && define.amd) { + // Publish as AMD module + define(function() {return uuid;}); + } else if (typeof(module) != 'undefined' && module.exports) { + // Publish as node.js module + module.exports = uuid; + } else { + // Publish as global (in browsers) + var _previousRoot = _global.uuid; + + // **`noConflict()` - (browser only) to reset global 'uuid' var** + uuid.noConflict = function() { + _global.uuid = _previousRoot; + return uuid; + }; + + _global.uuid = uuid; + } +}()); diff --git a/node_modules/csscomb/node_modules/vow-fs/node_modules/vow-queue/.jscs.json b/node_modules/csscomb/node_modules/vow-fs/node_modules/vow-queue/.jscs.json new file mode 100644 index 0000000..836df69 --- /dev/null +++ b/node_modules/csscomb/node_modules/vow-fs/node_modules/vow-queue/.jscs.json @@ -0,0 +1,21 @@ +{ + "requireMultipleVarDecl": true, + "requireCurlyBraces": ["if", "else", "for", "while", "do"], + "disallowLeftStickedOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!==", ">", ">=", "<", "<="], + "disallowRightStickedOperators": ["?", "+", "/", "*", ":", "=", "==", "===", "!=", "!==", ">", ">=", "<", "<="], + "requireRightStickedOperators": ["!"], + "requireLeftStickedOperators": [","], + "disallowKeywords": ["with"], + "disallowMulipleLineBreaks": true, + "disallowKeywordsOnNewLine": ["else"], + "requireAlignedObjectValues": "skipWithLineBreak", + "validateJSDoc": { + "checkParamNames": true, + "requireParamTypes": true + }, + "excludeFiles": [ + "node_modules", + "lib-cov", + "html-report" + ] +} diff --git a/node_modules/csscomb/node_modules/vow-fs/node_modules/vow-queue/.jshintignore b/node_modules/csscomb/node_modules/vow-fs/node_modules/vow-queue/.jshintignore new file mode 100644 index 0000000..a8d9442 --- /dev/null +++ b/node_modules/csscomb/node_modules/vow-fs/node_modules/vow-queue/.jshintignore @@ -0,0 +1,3 @@ +node_modules +lib-cov +html-report diff --git a/node_modules/csscomb/node_modules/vow-fs/node_modules/vow-queue/.jshintrc b/node_modules/csscomb/node_modules/vow-fs/node_modules/vow-queue/.jshintrc new file mode 100644 index 0000000..00d16ec --- /dev/null +++ b/node_modules/csscomb/node_modules/vow-fs/node_modules/vow-queue/.jshintrc @@ -0,0 +1,11 @@ +{ + "expr" : true, + "undef" : true, + "predef" : ["require", "exports", "module", "process", "describe", "it", "beforeEach", "afterEach"], + "boss" : true, + "sub" : true, + "supernew" : true, + "loopfunc" : true, + "onecase" : true, + "quotmark" : "single" +} diff --git a/node_modules/csscomb/node_modules/vow-fs/node_modules/vow-queue/.travis.yml b/node_modules/csscomb/node_modules/vow-fs/node_modules/vow-queue/.travis.yml new file mode 100644 index 0000000..bfb5528 --- /dev/null +++ b/node_modules/csscomb/node_modules/vow-fs/node_modules/vow-queue/.travis.yml @@ -0,0 +1,5 @@ +language: node_js + +node_js: + - "0.10" + - "0.8" diff --git a/node_modules/csscomb/node_modules/vow-fs/node_modules/vow-queue/CHANGELOG.md b/node_modules/csscomb/node_modules/vow-fs/node_modules/vow-queue/CHANGELOG.md new file mode 100644 index 0000000..c6b005a --- /dev/null +++ b/node_modules/csscomb/node_modules/vow-fs/node_modules/vow-queue/CHANGELOG.md @@ -0,0 +1,2 @@ +Version 0.0.1: + * Initial release. diff --git a/node_modules/csscomb/node_modules/vow-fs/node_modules/vow-queue/CONTRIBUTION.md b/node_modules/csscomb/node_modules/vow-fs/node_modules/vow-queue/CONTRIBUTION.md new file mode 100644 index 0000000..2d18c8d --- /dev/null +++ b/node_modules/csscomb/node_modules/vow-fs/node_modules/vow-queue/CONTRIBUTION.md @@ -0,0 +1,29 @@ +Contribution Guide +================== + +This document describes some points about contribution process for vow-queue package. + +The maintainer of the project is Dmitry Filatov (dfilatov@yandex-team.ru). + +The project is being developed within community. Maintainer merges pull-requests, fixes critical bugs. + +Pull-requests +------------- + +If you fixed or added something useful to the project, you can send pull-request. +It will be reviewed by maintainer and accepted, or commented for rework, or declined. + +Bugs +---- + +If you found an error, mistype or any other flawback in the project, please report about it using github-issues. +The more details you provide, the easier it can be reproduced and the faster can be fixed. +Unfortunately, sometimes the bug can be only reproduced in your project or in your environment, +so maintainers cannot reproduce it. In this case we believe you can fix the bug and send us the fix. + +Features +-------- + +It you've got an idea about a new feature, it's most likely that you have do implement it on your own. +If you cannot implement the feature, but it is very important, you can add a task in github-issues, +but expect it be declined by the maintainer. diff --git a/node_modules/csscomb/node_modules/vow-fs/node_modules/vow-queue/LICENSE b/node_modules/csscomb/node_modules/vow-fs/node_modules/vow-queue/LICENSE new file mode 100644 index 0000000..c791e45 --- /dev/null +++ b/node_modules/csscomb/node_modules/vow-fs/node_modules/vow-queue/LICENSE @@ -0,0 +1,22 @@ +(The MIT License) + +Copyright (c) 2013 Dmitry Filatov and other contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/csscomb/node_modules/vow-fs/node_modules/vow-queue/Makefile b/node_modules/csscomb/node_modules/vow-fs/node_modules/vow-queue/Makefile new file mode 100644 index 0000000..85ecdbe --- /dev/null +++ b/node_modules/csscomb/node_modules/vow-fs/node_modules/vow-queue/Makefile @@ -0,0 +1,32 @@ +BIN = ./node_modules/.bin +MOCHA = $(BIN)/mocha +ISTANBUL = $(BIN)/istanbul +JSHINT = $(BIN)/jshint +JSCS = $(BIN)/jscs + +.PHONY: test +test: + $(MOCHA) -u bdd -R spec --recursive + +.PHONY: validate +validate: lint test + +.PHONY: clean +clean: + -rm -rf lib-cov + -rm -rf html-report + +.PHONY: lib-cov +lib-cov: clean + $(ISTANBUL) instrument --output lib-cov --no-compact --variable global.__coverage__ lib + +.PHONY: coverage +coverage: lib-cov + VOW_QUEUE_COVERAGE=1 $(MOCHA) -u bdd --reporter mocha-istanbul + @echo + @echo Open html-report/index.html file in your browser + +.PHONY: lint +lint: + $(JSHINT) . + $(JSCS) . diff --git a/node_modules/csscomb/node_modules/vow-fs/node_modules/vow-queue/README.md b/node_modules/csscomb/node_modules/vow-fs/node_modules/vow-queue/README.md new file mode 100644 index 0000000..45b7a56 --- /dev/null +++ b/node_modules/csscomb/node_modules/vow-fs/node_modules/vow-queue/README.md @@ -0,0 +1,39 @@ +vow-queue +=============== + +Simple queue with weights and priorities + +Installation +------------ + +Vow-queue can be installed using `npm`: + +``` +npm install vow-queue +``` + +Usage +----- + +````javascript +var Queue = require('vow-queue'), + queue = new Queue({ weightLimit : 10 }); + +queue.enqueue(function() { // simple function + return 2 * 2; +}); + +queue.enqueue(function() { // function returns a promise + // do job + return promise; +}); + +queue.enqueue( // task with custom priority and weight + function() { + // do job + }, + { + priority : 3, // this task will be started before the previous two + weight : 5 + }); +```` diff --git a/node_modules/csscomb/node_modules/vow-fs/node_modules/vow-queue/lib/queue.js b/node_modules/csscomb/node_modules/vow-fs/node_modules/vow-queue/lib/queue.js new file mode 100644 index 0000000..606b651 --- /dev/null +++ b/node_modules/csscomb/node_modules/vow-fs/node_modules/vow-queue/lib/queue.js @@ -0,0 +1,132 @@ +/** + * Vow-queue + * + * Copyright (c) 2013 Filatov Dmitry (dfilatov@yandex-team.ru) + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * + * @version 0.0.1 + */ + +var vow = require('vow'), + extend = function() { + var res = {}; + + for(var i = 0, len = arguments.length; i < len; i++) { + var obj = arguments[i]; + if(obj) { + for(var key in obj) { + obj.hasOwnProperty(key) && (res[key] = obj[key]); + } + } + } + + return res; + }, + + DEFAULT_QUEUE_PARAMS = { + weightLimit : 100 + }, + DEFAULT_TASK_PARAMS = { + weight : 1, + priority : 1 + }, + + Queue = module.exports = function(params) { + this._pendingTasks = []; + this._params = extend(DEFAULT_QUEUE_PARAMS, params); + this._curWeight = 0; + this._isRunScheduled = false; + }; + +Queue.prototype = { + /** + * Add task to queue + * @param {Function} taskFn + * @param {Object} [taskParams] + * @param {Number} [taskParams.weight=1] + * @param {Number} [taskParams.priority=1] + * @return {vow.promise} + */ + enqueue : function(taskFn, taskParams) { + var task = { + fn : taskFn, + params : extend(DEFAULT_TASK_PARAMS, taskParams), + promise : vow.promise() + }; + + if(task.params.weight > this._params.weightLimit) { + throw Error('task with weight ' + + task.params.weight + + ' couldn\'t be executed in queue with weight limit of ' + + this._params.weightLimit); + } + + this._enqueueTask(task); + this._scheduleRun(); + + return task.promise; + }, + + /** + * Set params of queue + * @param {Object} params + * @param {Number} [params.weightLimit] + */ + params : function(params) { + if(typeof params.weightLimit !== 'undefined') { + this._params.weightLimit = params.weightLimit; + this._scheduleRun(); + } + }, + + _enqueueTask : function(task) { + var pendingTasks = this._pendingTasks, + i = pendingTasks.length; + + while(i) { + if(pendingTasks[i - 1].params.priority >= task.params.priority) { + i === pendingTasks.length? + pendingTasks.push(task) : + pendingTasks.splice(i, 0, task); + return; + } + i--; + } + + pendingTasks.push(task); + }, + + _scheduleRun : function() { + if(!this._isRunScheduled) { + this._isRunScheduled = true; + process.nextTick(this._run.bind(this)); + } + }, + + _run : function() { + this._isRunScheduled = false; + while(this._pendingTasks.length && this._allowRunTask(this._pendingTasks[0])) { + this._runTask(this._pendingTasks.shift()); + } + }, + + _allowRunTask : function(task) { + return this._curWeight + task.params.weight <= this._params.weightLimit; + }, + + _runTask : function(task) { + this._curWeight += task.params.weight; + + var taskRes = vow.invoke(task.fn); + taskRes.always( + function() { + this._curWeight -= task.params.weight; + this._scheduleRun(); + }, + this); + + task.promise.sync(taskRes); + } +}; \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/vow-fs/node_modules/vow-queue/package.json b/node_modules/csscomb/node_modules/vow-fs/node_modules/vow-queue/package.json new file mode 100644 index 0000000..fc2fbb6 --- /dev/null +++ b/node_modules/csscomb/node_modules/vow-fs/node_modules/vow-queue/package.json @@ -0,0 +1,45 @@ +{ + "author": { + "name": "Dmitry Filatov", + "email": "dfilatov@yandex-team.ru" + }, + "description": "Short package description", + "name": "vow-queue", + "version": "0.0.2", + "contributors": [ + { + "name": "Dmitry Filatov", + "email": "dfilatov@yandex-team.ru" + } + ], + "engines": { + "node": ">= 0.8.0" + }, + "main": "lib/queue", + "peerDependencies": { + "vow": "~0.3.9" + }, + "devDependencies": { + "vow": "~0.3.9", + "jshint": "2.1.3", + "mocha": "1.11.0", + "chai": "*", + "jscs": "1.0.0", + "istanbul": "0.1.39", + "mocha-istanbul": "*" + }, + "scripts": { + "test": "make validate", + "lint": "make lint", + "coverage": "make coverage", + "clean": "make clean" + }, + "readme": "vow-queue\n===============\n\nSimple queue with weights and priorities\n\nInstallation\n------------\n\nVow-queue can be installed using `npm`:\n\n```\nnpm install vow-queue\n```\n\nUsage\n-----\n\n````javascript\nvar Queue = require('vow-queue'),\n queue = new Queue({ weightLimit : 10 });\n \nqueue.enqueue(function() { // simple function\n return 2 * 2;\n});\n\nqueue.enqueue(function() { // function returns a promise\n // do job\n return promise;\n});\n\nqueue.enqueue( // task with custom priority and weight\n function() {\n // do job\n },\n {\n priority : 3, // this task will be started before the previous two\n weight : 5\n });\n````\n", + "readmeFilename": "README.md", + "_id": "vow-queue@0.0.2", + "dist": { + "shasum": "5cad3e93034cfa40a13fe07a01c476c71d1d6106" + }, + "_from": "vow-queue@0.0.2", + "_resolved": "https://registry.npmjs.org/vow-queue/-/vow-queue-0.0.2.tgz" +} diff --git a/node_modules/csscomb/node_modules/vow-fs/package.json b/node_modules/csscomb/node_modules/vow-fs/package.json new file mode 100644 index 0000000..821411a --- /dev/null +++ b/node_modules/csscomb/node_modules/vow-fs/package.json @@ -0,0 +1,55 @@ +{ + "name": "vow-fs", + "version": "0.2.3", + "description": "File I/O by Vow", + "homepage": "https://github.com/dfilatov/vow-fs", + "keywords": [ + "vow", + "promise", + "file system" + ], + "author": { + "name": "Dmitry Filatov", + "email": "dfilatov@yandex-team.ru" + }, + "contributors": [ + { + "name": "Dmitry Filatov", + "email": "dfilatov@yandex-team.ru" + } + ], + "repository": { + "type": "git", + "url": "http://github.com/dfilatov/vow-fs.git" + }, + "dependencies": { + "node-uuid": "1.4.0", + "vow-queue": "0.0.2" + }, + "peerDependencies": { + "vow": ">= 0.3.9" + }, + "devDependencies": { + "vow": ">= 0.3.9", + "nodeunit": "", + "istanbul": "" + }, + "main": "lib/fs", + "engines": { + "node": ">= 0.6.0" + }, + "scripts": { + "test": "./node_modules/istanbul/lib/cli.js test test/runner.js" + }, + "readme": "Vow-fs [![Build Status](https://secure.travis-ci.org/dfilatov/vow-fs.png)](http://travis-ci.org/dfilatov/vow-fs)\n======\n\n[Vow](https://github.com/dfilatov/jspromise)-based file I/O for Node.js\n\nRequirements\n------------\nVow-fs works with Node.js 0.6, 0.8 and 0.10.\n\nGetting Started\n---------------\nYou can install Vow-fs using Node Package Manager (npm):\n\n npm install vow-fs\n\n####Usage####\n````javascript\nvar fs = require('vow-fs');\n````\n\nAPI\n---\n####read(path, [encoding=utf8])####\nReturns a promise for the file's content at a given ````path````.\n####write(path, data, [encoding=utf8])####\nWrites ````data```` to file at a given ````path````. Returns a promise for the completion of the operation.\n####append(path, data, [encoding=utf8])####\nAppends````data```` to file's content at a given ````path````. Returns a promise for the completion of the operation.\n####remove(path)####\nRemoves a file at a given ````path````. Returns a promise for the completion of the operation.\n####copy(sourcePath, targetPath)####\nCopies a file from ````sourcePath```` to ````targetPath````. Returns a promise for the completion of the operation.\n####move(sourcePath, targetPath)####\nMoves a file or directory from ````sourcePath```` to ````targetPath````. Returns a promise for the completion of the operation.\n####stats(path)####\nReturns a promise for the metadata about the given ````path```` as a [Stats](http://nodejs.org/api/fs.html#fs_class_fs_stats) object.\n####exists(path)####\nReturns a promise for whether the given ````path```` exists.\n####link(sourcePath, targetPath)####\nCreates a hard link from the ````sourcePath```` to ````targetPath````.\n####symLink(sourcePath, targetPath, [type=file])####\nCreates a symbolic link from the ````sourcePath```` to ````targetPath````.\n####chown(path, uid, gid)####\nChanges the owner of a given ````path````.\n####chmod(path, mode)####\nChanges the mode of a given ````path```` to ````mode````.\n####absolute(path)####\n####isFile(path)####\nReturns a promise for whether the given ````path```` is a file.\n####isDir(path)####\nReturns a promise for whether the given ````path```` is a directory.\n####isSocket(path)####\nReturns a promise for whether the given ````path```` is a socket.\n####isSymLink(path)####\nReturns a promise for whether the given ````path```` is a symbolic link.\n####makeTmpFile([options])####\nMakes a temporary file. Returns a promise with generated path to file.\nThe ````options````:\n * prefix (absent by default)\n * dir (operating system's directory for temp files by default)\n * ext (````.tmp```` by default)\n\n####listDir(path)####\nReturns a promise for a list of files and directories in directory at the given ````path````.\n####makeDir(path, [mode=0777], [failIfExist=false])####\nMakes a directory at a given ````path```` and any necessary subdirectories (like ````mkdir -p````). Returns a promise for the completion of the operation.\n####removeDir(path)####\nRecursively removes a directory at a given path (like ````remove -rf````). Returns a promise for the completion of the operation.\n", + "readmeFilename": "README.md", + "bugs": { + "url": "https://github.com/dfilatov/vow-fs/issues" + }, + "_id": "vow-fs@0.2.3", + "dist": { + "shasum": "105bcdce3b36154d1decfa3be22bed389d66b633" + }, + "_from": "vow-fs@0.2.3", + "_resolved": "https://registry.npmjs.org/vow-fs/-/vow-fs-0.2.3.tgz" +} diff --git a/node_modules/csscomb/node_modules/vow-fs/test.js b/node_modules/csscomb/node_modules/vow-fs/test.js new file mode 100644 index 0000000..ba8350e --- /dev/null +++ b/node_modules/csscomb/node_modules/vow-fs/test.js @@ -0,0 +1,43 @@ +var vfs = require('./lib/fs'); + +vfs.makeDir('blocks-desktop/i18n/_keyset').then(function() { + console.log('ok'); +}, function(err) { + console.log(err); +}) + +vfs.makeDir('blocks-desktop/i18n/_keyset').then(function() { + console.log('ok'); +}, function(err) { + console.log(err); +}) + +vfs.makeDir('blocks-desktop/i18n/_keyset').then(function() { + console.log('ok'); +}, function(err) { + console.log(err); +}) + +vfs.makeDir('blocks-desktop/i18n/_keyset').then(function() { + console.log('ok'); +}, function(err) { + console.log(err); +}) + +vfs.makeDir('blocks-desktop/i18n/_keyset').then(function() { + console.log('ok'); +}, function(err) { + console.log(err); +}) + +vfs.makeDir('blocks-desktop/i18n/_keyset').then(function() { + console.log('ok'); +}, function(err) { + console.log(err); +}) + +vfs.makeDir('blocks-desktop/i18n/_keyset').then(function() { + console.log('ok'); +}, function(err) { + console.log(err); +}) \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/vow-fs/test/copy.js b/node_modules/csscomb/node_modules/vow-fs/test/copy.js new file mode 100644 index 0000000..8935f5b --- /dev/null +++ b/node_modules/csscomb/node_modules/vow-fs/test/copy.js @@ -0,0 +1,101 @@ +var fs = require('fs'), + path = require('path'), + vfs = require('../lib/fs'), + TEST_DIR = path.join(__dirname, 'test-dir'); + +module.exports = { + setUp : function(done) { + fs.mkdirSync(TEST_DIR); + done(); + }, + + tearDown : function(done) { + fs.rmdirSync(TEST_DIR); + done(); + }, + + 'should copy file' : function(test) { + var sourceFile = path.join(TEST_DIR, 'source-file'), + targetFile = path.join(TEST_DIR, 'target-file'); + fs.writeFileSync(sourceFile, 'source'); + vfs.copy(sourceFile, targetFile) + .then(function() { + test.equal(fs.readFileSync(targetFile, 'utf8'), 'source'); + }) + .always(function() { + fs.unlinkSync(sourceFile); + fs.unlinkSync(targetFile); + test.done(); + }); + }, + + 'should copy file if target exists' : function(test) { + var sourceFile = path.join(TEST_DIR, 'source-file'), + targetFile = path.join(TEST_DIR, 'target-file'); + fs.writeFileSync(sourceFile, 'source'); + fs.writeFileSync(targetFile, 'target'); + vfs.copy(sourceFile, targetFile) + .then(function() { + test.equal(fs.readFileSync(targetFile, 'utf8'), 'source'); + }) + .always(function() { + fs.unlinkSync(sourceFile); + fs.unlinkSync(targetFile); + test.done(); + }); + }, + + 'should not copy file if source is directory' : function(test) { + var sourceDir = path.join(TEST_DIR, 'source-dir'), + targetFile = path.join(TEST_DIR, 'target-file'); + fs.mkdirSync(sourceDir); + vfs.copy(sourceDir, targetFile) + .then( + function() { + test.ok(false); + }, + function(err) { + test.equal(err.code, 'EISDIR'); + }) + .always(function() { + fs.rmdirSync(sourceDir); + test.done(); + }); + }, + + 'should not copy file if target is directory' : function(test) { + var sourceFile = path.join(TEST_DIR, 'source-file'), + targetDir = path.join(TEST_DIR, 'target-dir'); + fs.writeFileSync(sourceFile, 'source'); + fs.mkdirSync(targetDir); + vfs.copy(sourceFile, targetDir) + .then( + function() { + test.ok(false); + }, + function(err) { + test.equal(err.code, 'EISDIR'); + }) + .always(function() { + fs.unlinkSync(sourceFile); + fs.rmdirSync(targetDir); + test.done(); + }); + }, + + 'should not copy if target not exists' : function(test) { + var sourceFile = path.join(TEST_DIR, 'source-file'), + targetFile = path.join(TEST_DIR, 'target-file'); + vfs.copy(sourceFile, targetFile) + .then( + function() { + test.ok(false); + }, + function(err) { + test.equal(err.code, 'ENOENT'); + }) + .always(function() { + test.done(); + }); + } +}; \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/vow-fs/test/issymlink.js b/node_modules/csscomb/node_modules/vow-fs/test/issymlink.js new file mode 100644 index 0000000..96d02cf --- /dev/null +++ b/node_modules/csscomb/node_modules/vow-fs/test/issymlink.js @@ -0,0 +1,45 @@ +var fs = require('fs'), + path = require('path'), + vfs = require('../lib/fs'), + TEST_DIR = path.join(__dirname, 'test-dir'); + +module.exports = { + setUp : function(done) { + fs.mkdirSync(TEST_DIR); + done(); + }, + + tearDown : function(done) { + fs.rmdirSync(TEST_DIR); + done(); + }, + + 'should return true if the file is a symbolic link' : function(test) { + var sourceFile = path.join(TEST_DIR, 'source-file'), + targetFile = path.join(TEST_DIR, 'target-file'); + fs.writeFileSync(sourceFile, 'source'); + fs.symlinkSync(sourceFile, targetFile); + vfs.isSymLink(targetFile) + .then(function(isSymLink) { + test.ok(isSymLink); + }) + .always(function() { + fs.unlinkSync(sourceFile); + fs.unlinkSync(targetFile); + test.done(); + }); + }, + + 'should return false if the file is not a symbolic link' : function(test) { + var sourceFile = path.join(TEST_DIR, 'source-file'); + fs.writeFileSync(sourceFile, 'source'); + vfs.isSymLink(sourceFile) + .then(function(isSymLink) { + test.ok(!isSymLink); + }) + .always(function() { + fs.unlinkSync(sourceFile); + test.done(); + }); + } +}; \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/vow-fs/test/makedir.js b/node_modules/csscomb/node_modules/vow-fs/test/makedir.js new file mode 100644 index 0000000..aa47973 --- /dev/null +++ b/node_modules/csscomb/node_modules/vow-fs/test/makedir.js @@ -0,0 +1,128 @@ +var fs = require('fs'), + path = require('path'), + vfs = require('../lib/fs'), + TEST_DIR = path.join(__dirname, 'test-dir'); + +module.exports = { + setUp : function(done) { + fs.mkdirSync(TEST_DIR); + done(); + }, + + tearDown : function(done) { + fs.rmdirSync(TEST_DIR); + done(); + }, + + 'should make directory' : function(test) { + var dir = path.join(TEST_DIR, 'a'); + vfs.makeDir(dir) + .then( + function() { + return vfs.exists(dir); + }, + function() { + test.ok(false); + }) + .always(function(promise) { + test.ok(promise.valueOf()); + test.ok(fs.statSync(dir).isDirectory()); + fs.rmdirSync(dir); + test.done(); + }); + }, + + 'should make directory if exists' : function(test) { + var dir = path.join(TEST_DIR, 'a'); + fs.mkdirSync(dir); + vfs.makeDir(dir) + .then( + function() { + return vfs.exists(dir); + }, + function() { + test.ok(false); + }) + .always(function(promise) { + test.ok(promise.valueOf()); + test.ok(fs.statSync(dir).isDirectory()); + fs.rmdirSync(dir); + test.done(); + }); + }, + + 'should be failed if directory exists' : function(test) { + var dir = path.join(TEST_DIR, 'a'); + fs.mkdirSync(dir); + vfs.makeDir(dir, true) + .then( + function() { + test.ok(false); + }, + function() { + test.ok(true); + }) + .always(function() { + fs.rmdirSync(dir); + test.done(); + }); + }, + + 'should be failed if file with same name exists' : function(test) { + var dir = path.join(TEST_DIR, 'test-file'); + fs.writeFileSync(dir, 'test'); + vfs.makeDir(dir) + .then( + function() { + test.ok(false); + }, + function() { + test.ok(true); + }) + .always(function() { + fs.unlinkSync(path.join(TEST_DIR, 'test-file')); + test.done(); + }); + }, + + 'should make directory tree' : function(test) { + var dir = path.join(TEST_DIR, 'a/b/c'); + vfs.makeDir(dir) + .then( + function() { + return vfs.exists(dir); + }, + function() { + test.ok(false); + }) + .always(function(promise) { + test.ok(promise.valueOf()); + test.ok(fs.statSync(dir).isDirectory()); + fs.rmdirSync(path.join(TEST_DIR, 'a/b/c')); + fs.rmdirSync(path.join(TEST_DIR, 'a/b')); + fs.rmdirSync(path.join(TEST_DIR, 'a')); + test.done(); + }); + }, + + 'should make directory tree if exists' : function(test) { + var dir = path.join(TEST_DIR, 'a/b/c'); + fs.mkdirSync(path.join(TEST_DIR, 'a')); + fs.mkdirSync(path.join(TEST_DIR, 'a', 'b')); + fs.mkdirSync(dir); + vfs.makeDir(dir) + .then( + function() { + test.ok(true); + }, + function() { + test.ok(false); + }) + .always(function() { + fs.rmdirSync(path.join(TEST_DIR, 'a/b/c')); + fs.rmdirSync(path.join(TEST_DIR, 'a/b')); + fs.rmdirSync(path.join(TEST_DIR, 'a')); + test.done(); + }); + } +}; \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/vow-fs/test/maketmpfile.js b/node_modules/csscomb/node_modules/vow-fs/test/maketmpfile.js new file mode 100644 index 0000000..74bf309 --- /dev/null +++ b/node_modules/csscomb/node_modules/vow-fs/test/maketmpfile.js @@ -0,0 +1,103 @@ +var fs = require('fs'), + path = require('path'), + os = require('os'), + vfs = require('../lib/fs'), + tmpDir = os.tmpdir || os.tmpDir || function() { return '/tmp'; }, + TEST_DIR = path.join(__dirname, 'test-dir'); + +module.exports = { + setUp : function(done) { + fs.mkdirSync(TEST_DIR); + done(); + }, + + tearDown : function(done) { + fs.rmdirSync(TEST_DIR); + done(); + }, + + 'should make temporary file with default options' : function(test) { + var filePath; + vfs.makeTmpFile() + .then( + function(_filePath) { + return vfs.exists(filePath = _filePath); + }, + function() { + test.ok(false); + throw Error(); + }) + .then(function(exists) { + fs.unlinkSync(filePath); + test.strictEqual(path.dirname(filePath), path.resolve(tmpDir())); + test.strictEqual(path.extname(filePath), '.tmp'); + test.ok(exists); + }) + .always(function() { + test.done(); + }); + }, + + 'should make temporary file in custom directory' : function(test) { + var filePath; + vfs.makeTmpFile({ dir : TEST_DIR }) + .then( + function(_filePath) { + return vfs.exists(filePath = _filePath); + }, + function() { + test.ok(false); + throw Error(); + }) + .then(function(exists) { + fs.unlinkSync(filePath); + test.ok(exists); + test.strictEqual(path.dirname(filePath), TEST_DIR); + }) + .always(function() { + test.done(); + }) + }, + + 'should make temporary file with custom prefix' : function(test) { + var filePath; + vfs.makeTmpFile({ prefix : '__prefix' }) + .then( + function(_filePath) { + return vfs.exists(filePath = _filePath); + }, + function() { + test.ok(false); + throw Error(); + }) + .then(function(exists) { + fs.unlinkSync(filePath); + test.ok(exists); + test.ok(filePath.indexOf('__prefix') > -1); + }) + .always(function() { + test.done(); + }) + }, + + 'should make temporary file with custom extension' : function(test) { + var filePath; + vfs.makeTmpFile({ ext : '.css' }) + .then( + function(_filePath) { + return vfs.exists(filePath = _filePath); + }, + function() { + test.ok(false); + throw Error(); + }) + .then(function(exists) { + fs.unlinkSync(filePath); + test.ok(exists); + test.strictEqual(path.extname(filePath), '.css'); + }) + .always(function() { + test.done(); + }) + } +}; \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/vow-fs/test/removedir.js b/node_modules/csscomb/node_modules/vow-fs/test/removedir.js new file mode 100644 index 0000000..6c44881 --- /dev/null +++ b/node_modules/csscomb/node_modules/vow-fs/test/removedir.js @@ -0,0 +1,74 @@ +var fs = require('fs'), + path = require('path'), + vfs = require('../lib/fs'), + TEST_DIR = path.join(__dirname, 'test-dir'); + +module.exports = { + setUp : function(done) { + fs.mkdirSync(TEST_DIR); + done(); + }, + + tearDown : function(done) { + fs.rmdirSync(TEST_DIR); + done(); + }, + + 'should remove empty directory' : function(test) { + var dir = path.join(TEST_DIR, 'dir'); + fs.mkdirSync(dir); + vfs.removeDir(dir) + .then( + function() { + return vfs.exists(dir); + }, + function() { + test.ok(false); + }) + .always(function(promise) { + test.ok(!promise.valueOf()); + test.done(); + }); + }, + + 'should remove directory tree' : function(test) { + var dir = path.join(TEST_DIR, 'dir'); + fs.mkdirSync(dir); + fs.mkdirSync(path.join(dir, 'a')); + fs.writeFileSync(path.join(dir, 'a', 'file'), 'file'); + fs.mkdirSync(path.join(dir, 'a', 'b')); + fs.writeFileSync(path.join(dir, 'a', 'b', 'file1'), 'file1'); + fs.writeFileSync(path.join(dir, 'a', 'b', 'file2'), 'file2'); + vfs.removeDir(dir) + .then( + function() { + return vfs.exists(dir); + }, + function() { + test.ok(false); + }) + .always(function(promise) { + test.ok(!promise.valueOf()); + test.done(); + }); + }, + + 'should not remove file' : function(test) { + var filePath = path.join(TEST_DIR, 'file'); + fs.writeFileSync(filePath, 'file'); + vfs.removeDir(filePath) + .then( + function() { + test.ok(false); + }, + function(err) { + test.equal(err.code, 'ENOTDIR'); + return vfs.exists(filePath); + }) + .always(function(promise) { + test.ok(promise.valueOf()); + fs.unlinkSync(filePath); + test.done(); + }); + } +}; \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/vow-fs/test/runner.js b/node_modules/csscomb/node_modules/vow-fs/test/runner.js new file mode 100644 index 0000000..dd657ad --- /dev/null +++ b/node_modules/csscomb/node_modules/vow-fs/test/runner.js @@ -0,0 +1,15 @@ +var fs = require('fs'), + path = require('path'); + +require('nodeunit').reporters.default.run( + fs.readdirSync(__dirname) + .filter(function(file){ + return fs.statSync(path.join(__dirname, file)).isFile() && file !== 'runner.js'; + }) + .map(function(file) { + return path.join('test', file); + }), + null, + function(err) { + err && process.exit(1); + }); \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/vow/CHANGELOG.md b/node_modules/csscomb/node_modules/vow/CHANGELOG.md new file mode 100644 index 0000000..97c0718 --- /dev/null +++ b/node_modules/csscomb/node_modules/vow/CHANGELOG.md @@ -0,0 +1,55 @@ +Changelog +========= + +0.3.10 +----- + * Use `setImmediate` instead of `process.nextTick` in Node.js >= 0.10.x [#40](https://github.com/dfilatov/jspromise/issues/40) + * Up Promises/A+ Compliance Test Suite to 1.3.2 + +0.3.9 +----- + * Fix for propagation of progress state [#37](https://github.com/dfilatov/jspromise/issues/37) + +0.3.8 +----- + * Fix for ignoring callback's context in always method [#35](https://github.com/dfilatov/jspromise/issues/35) + * Callback in `Vow.invoke` called in global context now + * bower.json added [#34](https://github.com/dfilatov/jspromise/issues/34) + +0.3.7 +----- + * `Vow.allPatiently` method added [#32](https://github.com/dfilatov/jspromise/issues/32) + +0.3.6 +----- + * Fix for properly work in mocha/phantomjs environment [#31](https://github.com/dfilatov/jspromise/issues/31) + +0.3.5 +----- + * Fix for synchronize `onProgress` callback in `promise.sync` method [#30](https://github.com/dfilatov/jspromise/issues/30) + +0.3.4 +----- + * Add ability to use multiple modules system simultaneously [#26](https://github.com/dfilatov/jspromise/issues/26) + * Add callbacks to `promise.done` method [#29](https://github.com/dfilatov/jspromise/issues/29) + +0.3.3 +----- + * Use `Vow` instead `this` in all static methods + * Speed up optimizations + +0.3.2 +----- + * Ability to specify context for callbacks [#28](https://github.com/dfilatov/jspromise/issues/28) + +0.3.1 +----- + * Add support for [ym module's system](https://github.com/ymaps/modules) [#24](https://github.com/dfilatov/jspromise/issues/24) + +0.3.0 +----- + * Add support for `progress/notify` [#23](https://github.com/dfilatov/jspromise/issues/23) + +0.2.6 +----- + * `promise.always` doesn't pass the return value of `onResolved` [#19](https://github.com/dfilatov/jspromise/issues/19) diff --git a/node_modules/csscomb/node_modules/vow/CONTRIBUTION.md b/node_modules/csscomb/node_modules/vow/CONTRIBUTION.md new file mode 100644 index 0000000..b19d500 --- /dev/null +++ b/node_modules/csscomb/node_modules/vow/CONTRIBUTION.md @@ -0,0 +1,26 @@ +Contribution Guide +================== + +This document describes some points about contribution process for jscs package. + +The maintainer of the project is Filatov Dmitry. + +The project is being developed within community. Maintainer merges pull-requests, fixes critical bugs. + +Pull-requests +------------- + +If you fixed or added something useful to the project, you can send pull-request. It will be reviewed by maintainer and accepted, or commented for rework, or declined. + +Bugs +---- + +If you found an error, mistype or any other flawback in the project, please report about it using [issues](https://github.com/dfilatov/jspromise/issues). +The more details you provide, the easier it can be reproduced and the faster can be fixed. +Unfortunately, sometimes the bug can be only reproduced in your project or in your environment, so maintainers cannot reproduce it. In this case we believe you can fix the bug and send us the fix. + +Features +-------- + +It you've got an idea about a new feature, it's most likely that you have do implement it on your own. +If you cannot implement the feature, but it is very important, you can add a task in [issues](https://github.com/dfilatov/jspromise/issues), but expect it be declined by the maintainer. diff --git a/node_modules/csscomb/node_modules/vow/README.md b/node_modules/csscomb/node_modules/vow/README.md new file mode 100644 index 0000000..ec7d03a --- /dev/null +++ b/node_modules/csscomb/node_modules/vow/README.md @@ -0,0 +1,358 @@ +
+Vow [![Build Status](https://secure.travis-ci.org/dfilatov/vow.png)](http://travis-ci.org/dfilatov/vow) +========= + +Promises/A+ implementation. +See https://github.com/promises-aplus/promises-spec. + +Getting Started +--------------- +###In Node.js### +You can install using Node Package Manager (npm): + + npm install vow + +###In Browsers### +```html + +``` +It also supports RequireJS module format and [YM module](https://github.com/ymaps/modules) format. + +Vow has been tested in IE6+, Mozilla Firefox 3+, Chrome 5+, Safari 5+, Opera 10+. + +API +--- + * [Creating promise](#vowpromisevalue) + * [Promise API](#promise-api) + * [fulfill](#fulfillvalue) + * [reject](#rejectreason) + * [notify](#notifyvalue) + * [isFulfilled](#isfulfilled) + * [isRejected](#isrejected) + * [isResolved](#isresolved) + * [valueOf](#valueof) + * [then](#thenonfulfilled-onrejected-onprogress-context) + * [fail](#failonrejected-context) + * [always](#alwaysonresolved-context) + * [progress](#progressonprogress-context) + * [spread](#spreadonfulfilled-onrejected-context) + * [done](#doneonfulfilled-onrejected-onprogress-context) + * [delay](#delaydelay) + * [timeout](#timeouttimeout) + * [sync](#syncwithpromise) + * [Vow API](#vow-api) + * [isPromise](#ispromisevalue) + * [when](#whenvalue-onfulfilled-onrejected-onprogress-context) + * [fail](#failvalue-onrejected-context) + * [always](#alwaysvalue-onresolved-context) + * [progress](#progressvalue-onprogress-context) + * [spread](#spreadvalue-onfulfilled-onrejected-context) + * [done](#donevalue-onfulfilled-onrejected-onprogress-context) + * [isFulfilled](#isfulfilledvalue) + * [isRejected](#isrejectedvalue) + * [isResolved](#isresolvededvalue) + * [fulfill](#fulfillvalue-1) + * [reject](#rejectreason-1) + * [resolve](#resolvevalue) + * [invoke](#invokefn-args) + * [all](#allpromisesorvalues) + * [allResolved](#allresolvedpromisesorvalues) + * [any](#anypromisesorvalues) + * [delay](#delayvalue-delay) + * [timeout](#timeoutvalue-timeout) + +####Vow.promise([value])#### +Creates a new promise if no ````value```` given, or creates a new fulfilled promise if the ````value```` is not a promise, or returns ````value```` if the given ````value```` is a promise. +````javascript +var promise = Vow.promise(), // creating a new promise + fulfilledPromise = Vow.promise('ok'), // creating a new fulfilled promise + anotherPromise = Vow.promise(existingPromise); // anotherPromise is equal to the existingPromise +```` +###Promise API### +####fulfill(value)#### +Fulfills promise with given ````value```` +````javascript +var promise = Vow.promise(); +promise.fulfill('completed'); // fulfilling promise with 'completed' value +```` +####reject(reason)#### +Rejects promise with given ````reason```` +````javascript +var promise = Vow.promise(); +promise.reject(Error('internal error')); // rejecting promise with Error object +```` +####notify(value)#### +Notifies promise about progress with given ````value```` +````javascript +var promise = Vow.promise(); +promise.notify(20); // notifying promise with 20 value +```` + +####isFulfilled()#### +Returns true if the promise is fulfilled +````javascript +var promise = Vow.promise(); +promise.isFulfilled(); // returns false +promise.fulfill('completed'); +promise.isFulfilled(); // returns true +```` + +####isRejected()#### +Returns true if the promise is rejected +````javascript +var promise = Vow.promise(); +promise.isRejected(); // returns false +promise.reject(Error('internal error')); +promise.isRejected(); // returns true +```` + +####isResolved()#### +Returns true if the promise is fulfilled or rejected +````javascript +var promise = Vow.promise(); +promise.isResolved(); // returns false +promise.fulfill('completed'); // or promise.reject(Error('internal error')); +promise.isResolved(); // returns true +```` + +####valueOf()#### +Returns value of the promise: + * value of fulfillment, if promise is fullfilled + * reason of rejection, if promise is rejected + * undefined, if promise is not resolved + +####then([onFulfilled], [onRejected], [onProgress], [context])#### +Are arranged for: + * ````onFulfilled```` to be called with the value after promise is fulfilled, + * ````onRejected```` to be called with the rejection reason after promise is rejected. + * ````onProgress```` to be called with the value when promise is notified about progress. + * ````context```` context of callbacks + +Returns a new promise. See [Promises/A+ specification](https://github.com/promises-aplus/promises-spec) for details. +````javascript +var promise = Vow.promise(); +promise.then( + function() { }, // to be called after promise is fulfilled + function() { }, // to be called after promise is rejected + function() { } // to be called when promise is notified + ); +```` + +####fail(onRejected, [context])#### +Arranges to call ````onRejected```` with given ````context```` on the promise rejection reason if it is rejected. Shortcut for ````then(null, onRejected)````. +````javascript +var promise = Vow.promise(); +promise.fail( + function() { // to be called after promise is rejected + }); +promise.reject(Error('error')); +```` + +####always(onResolved, [context])#### +Arranges to call ````onResolved```` with given ````context```` on the promise if it is fulfilled or rejected. +````javascript +var promise = Vow.promise(); +promise.always( + function(promise) { // to be called after promise is fulfilled or rejected + }); +promise.fulfill('ok'); // or promise.reject(Error('error')); +```` + +####progress(onProgress, [context])#### +Arranges to call ````onProgress```` with given ````context```` on the promise if it is notified. +Shortcut for ````then(null, null, onProgress)````. +````javascript +var promise = Vow.promise(); +promise.notify( + function(val) { // to be called when promise is notified + console.log('performed ' + val + '% of the job'); // -> performed 20% of the job + }); +promise.notify(20); +```` + +####spread([onFulfilled], [onRejected], [context])#### +Like "then", but "spreads" the array into a variadic value handler. +It useful with [Vow.all](#allpromises), [Vow.allResolved](#allresolvedpromises) methods. +````javascript +var promise1 = Vow.promise(), + promise2 = Vow.promise(); + +Vow.all([promise1, promise2]).spread(function(arg1, arg2) { + // arg1 should be "1", arg2 should be "'two'" +}); + +promise1.fulfill(1); +promise2.fulfill('two'); +```` + +####done([onFulfilled], [onRejected], [onProgress], [context])#### +Terminates a chain of promises. If the promise is rejected, throws it as an exception in a future turn of the event loop. +````javascript +var promise = Vow.promise(); +promise.reject(Error('Internal error')); +promise.done(); // exception to be thrown +```` +####delay(delay)#### +Returns a new promise that will be fulfilled in ````delay```` milliseconds if the promise is fulfilled, or immediately rejected if promise is rejected. + +####timeout(timeout)#### +Returns a new promise that will be rejected in ````timeout```` milliseconds if the promise is not resolved beforehand. +````javascript +var promise = Vow.promise(), + promiseWithTimeout1 = promise.timeout(50), + promiseWithTimeout2 = promise.timeout(200); + +setTimeout( + function() { + promise.fulfill('ok'); + }, + 100); + +promiseWithTimeout1.fail(function(e) { + // promiseWithTimeout to be rejected in 50ms +}); + +promiseWithTimeout2.then(function(val) { + // promiseWithTimeout to be fulfilled with "'ok'" value +}); +```` + +####sync(withPromise)#### +Synchronizes promise state with ````withPromise```` state. Shortcut for: +````javascript +withPromise.then( + function(val) { + promise.fulfill(val); + }, + function(err) { + promise.reject(err); + }, + function(val) { + promise.notify(val); + }); +```` + +###Vow API### + +####isPromise(value)#### +Returns true if the given ````value```` is a promise. +````javascript +Vow.isPromise('value'); // returns false +Vow.isPromise(Vow.promise()); // returns true +```` + +####when(value, [onFulfilled], [onRejected], [onProgress], [context])#### +Static equivalent to [promise.then](#thenonfulfilled-onrejected-onprogress-context). If given ````value```` is not a promise, then ````value```` is equivalent to fulfilled promise. + +####fail(value, onRejected, [context])#### +Static equivalent to [promise.fail](#failonrejected-context). If given ````value```` is not a promise, then ````value```` is equivalent to fulfilled promise. + +####always(value, onResolved, [context])#### +Static equivalent to [promise.always](#alwaysonresolved-context). If given ````value```` is not a promise, then ````value```` is equivalent to fulfilled promise. + +####progress(value, onProgress, [context])#### +Static equivalent to [promise.progress](#progressonprogress-context). If given ````value```` is not a promise, then ````value```` is equivalent to fulfilled promise. + +####spread(value, [onFulfilled], [onRejected], [context])#### +Static equivalent to [promise.spread](#spreadonfulfilled-onrejected-context). +If given ````value```` is not a promise, then ````value```` is equivalent to fulfilled promise. + +####done(value, [onFulfilled], [onRejected], [onProgress], [context]])#### +Static equivalent to [promise.done](#doneonfulfilled-onrejected-onprogress-context). +If given ````value```` is not a promise, then ````value```` is equivalent to fulfilled promise. + +####isFulfilled(value)#### +Static equivalent to [promise.isFulfilled](#isfulfilled). +If given ````value```` is not a promise, then ````value```` is equivalent to fulfilled promise. + +####isRejected(value)#### +Static equivalent to [promise.isRejected](#isrejected). +If given ````value```` is not a promise, then ````value```` is equivalent to fulfilled promise. + +####isResolved(value)#### +Static equivalent to [promise.isResolved](#isresolved). +If given ````value```` is not a promise, then ````value```` is equivalent to fulfilled promise. + +####fulfill(value)#### +Returns a promise that has already been fulfilled with the given ````value````. If ````value```` is a promise, returned promise will be fulfilled with fulfill/rejection value of given promise. + +####reject(reason)#### +Returns a promise that has already been rejected with the given ````reason````. If ````reason```` is a promise, returned promise will be rejected with fulfill/rejection value of given promise. + +####resolve(value)#### +Returns a promise that has already been fulfilled with the given ````value````. If ````value```` is a promise, returns ````promise````. + +####invoke(fn, ...args)#### +Invokes a given function ````fn```` with arguments ````args````. Returned promise: + * will be fulfilled with returned value if value is not a promise + * will be rejected if function throw exception + * value will be returned if value is a promise + +````javascript +var promise1 = Vow.invoke(function(value) { + return value; + }, 'ok'), + promise2 = Vow.invoke(function() { + throw Error(); + }); + +promise1.isFulfilled(); // true +promise1.valueOf(); // 'ok' +promise2.isRejected(); // true +promise2.valueOf(); // instance of Error +```` + +####all(promisesOrValues)#### +Returns a promise to be fulfilled only after all the items in ````promisesOrValues```` are fulfilled, or to be rejected when any of the promises is rejected. + +````promisesOrValues```` can be Array: +````javascript +var promise1 = Vow.promise(), + promise2 = Vow.promise(); + +Vow.all([promise1, promise2, 3]) + .then(function(value) { + // value is [1, 2, 3] + }); + +promise1.fulfill(1); +promise2.fulfill(2); +```` +or Object: +````javascript +var promise1 = Vow.promise(), + promise2 = Vow.promise(); + +Vow.all({ a : promise1, b : promise2, c : 3 }) + .then(function(value) { + // value is { a : 1, b : 2, c : 3 } + }); + +promise1.fulfill(1); +promise2.fulfill(2); +```` + +####allResolved(promisesOrValues)#### +Returns a promise to be fulfilled only after all the items in ````promisesOrValues```` are resolved. +````javascript +var promise1 = Vow.promise(), + promise2 = Vow.promise(); + +Vow.allResolved([promise1, promise2]) + .spread(function(promise1, promise2) { + promise1.valueOf(); // returns 'error' + promise2.valueOf(); // returns 'ok' + }); + +promise1.reject('error'); +promise2.fulfill('ok'); +```` + +####any(promisesOrValues)#### +Returns a promise to be fulfilled only when any of the items in ````promisesOrValues```` are fulfilled, or to be rejected when all the items are rejected (with the reason of the first rejected item). + +####delay(value, delay)#### +Static equivalent to [promise.delay](#delaydelay). If given ````value```` is not a promise, then ````value```` is equivalent to fulfilled promise. + +####timeout(value, timeout)#### +Static equivalent to [promise.timeout](#timeouttimeout). If given ````value```` is not a promise, then ````value```` is equivalent to fulfilled promise. diff --git a/node_modules/csscomb/node_modules/vow/bower.json b/node_modules/csscomb/node_modules/vow/bower.json new file mode 100644 index 0000000..4e5d1ec --- /dev/null +++ b/node_modules/csscomb/node_modules/vow/bower.json @@ -0,0 +1,6 @@ +{ + "name" : "vow", + "version" : "0.3.11", + "main" : "lib/vow.js", + "ignore" : ["**/.*", "node_modules", "benchmarks", "test", "Makefile"] +} \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/vow/lib/vow.js b/node_modules/csscomb/node_modules/vow/lib/vow.js new file mode 100644 index 0000000..8e21afb --- /dev/null +++ b/node_modules/csscomb/node_modules/vow/lib/vow.js @@ -0,0 +1,578 @@ +/** + * Vow + * + * Copyright (c) 2012-2013 Filatov Dmitry (dfilatov@yandex-team.ru) + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * + * @version 0.3.11 + */ + +(function(global) { + +var Promise = function(val) { + this._res = val; + + this._isFulfilled = !!arguments.length; + this._isRejected = false; + + this._fulfilledCallbacks = []; + this._rejectedCallbacks = []; + this._progressCallbacks = []; +}; + +Promise.prototype = { + valueOf : function() { + return this._res; + }, + + isFulfilled : function() { + return this._isFulfilled; + }, + + isRejected : function() { + return this._isRejected; + }, + + isResolved : function() { + return this._isFulfilled || this._isRejected; + }, + + fulfill : function(val) { + if(this.isResolved()) { + return; + } + + this._isFulfilled = true; + this._res = val; + + this._callCallbacks(this._fulfilledCallbacks, val); + this._fulfilledCallbacks = this._rejectedCallbacks = this._progressCallbacks = undef; + }, + + reject : function(err) { + if(this.isResolved()) { + return; + } + + this._isRejected = true; + this._res = err; + + this._callCallbacks(this._rejectedCallbacks, err); + this._fulfilledCallbacks = this._rejectedCallbacks = this._progressCallbacks = undef; + }, + + notify : function(val) { + if(this.isResolved()) { + return; + } + + this._callCallbacks(this._progressCallbacks, val); + }, + + then : function(onFulfilled, onRejected, onProgress, ctx) { + if(onRejected && !isFunction(onRejected)) { + ctx = onRejected; + onRejected = undef; + } + else if(onProgress && !isFunction(onProgress)) { + ctx = onProgress; + onProgress = undef; + } + + var promise = new Promise(), + cb; + + if(!this._isRejected) { + cb = { promise : promise, fn : isFunction(onFulfilled)? onFulfilled : undef, ctx : ctx }; + this._isFulfilled? + this._callCallbacks([cb], this._res) : + this._fulfilledCallbacks.push(cb); + } + + if(!this._isFulfilled) { + cb = { promise : promise, fn : onRejected, ctx : ctx }; + this._isRejected? + this._callCallbacks([cb], this._res) : + this._rejectedCallbacks.push(cb); + } + + this.isResolved() || this._progressCallbacks.push({ promise : promise, fn : onProgress, ctx : ctx }); + + return promise; + }, + + fail : function(onRejected, ctx) { + return this.then(undef, onRejected, ctx); + }, + + always : function(onResolved, ctx) { + var _this = this, + cb = function() { + return onResolved.call(this, _this); + }; + + return this.then(cb, cb, ctx); + }, + + progress : function(onProgress, ctx) { + return this.then(undef, undef, onProgress, ctx); + }, + + spread : function(onFulfilled, onRejected, ctx) { + return this.then( + function(val) { + return onFulfilled.apply(this, val); + }, + onRejected, + ctx); + }, + + done : function(onFulfilled, onRejected, onProgress, ctx) { + this + .then(onFulfilled, onRejected, onProgress, ctx) + .fail(throwException); + }, + + delay : function(delay) { + var timer, + promise = this.then(function(val) { + var promise = new Promise(); + timer = setTimeout( + function() { + promise.fulfill(val); + }, + delay); + + return promise; + }); + + promise.always(function() { + clearTimeout(timer); + }); + + return promise; + }, + + timeout : function(timeout) { + var promise = new Promise(), + timer = setTimeout( + function() { + promise.reject(Error('timed out')); + }, + timeout); + + promise.sync(this); + promise.always(function() { + clearTimeout(timer); + }); + + return promise; + }, + + sync : function(promise) { + promise.then( + this.fulfill, + this.reject, + this.notify, + this); + }, + + _callCallbacks : function(callbacks, arg) { + var len = callbacks.length; + if(!len) { + return; + } + + var isResolved = this.isResolved(), + isFulfilled = this.isFulfilled(); + + nextTick(function() { + var i = 0, cb, promise, fn; + while(i < len) { + cb = callbacks[i++]; + promise = cb.promise; + fn = cb.fn; + + if(fn) { + var ctx = cb.ctx, + res; + try { + res = ctx? fn.call(ctx, arg) : fn(arg); + } + catch(e) { + promise.reject(e); + continue; + } + + isResolved? + Vow.isPromise(res)? + (function(promise) { + res.then( + function(val) { + promise.fulfill(val); + }, + function(err) { + promise.reject(err); + }, + function(val) { + promise.notify(val); + }); + })(promise) : + promise.fulfill(res) : + promise.notify(res); + } + else { + isResolved? + isFulfilled? + promise.fulfill(arg) : + promise.reject(arg) : + promise.notify(arg); + } + } + }); + } +}; + +var Vow = { + promise : function(val) { + return arguments.length? + Vow.isPromise(val)? + val : + new Promise(val) : + new Promise(); + }, + + when : function(obj, onFulfilled, onRejected, onProgress, ctx) { + return Vow.promise(obj).then(onFulfilled, onRejected, onProgress, ctx); + }, + + fail : function(obj, onRejected, ctx) { + return Vow.when(obj, undef, onRejected, ctx); + }, + + always : function(obj, onResolved, ctx) { + return Vow.promise(obj).always(onResolved, ctx); + }, + + progress : function(obj, onProgress, ctx) { + return Vow.promise(obj).progress(onProgress, ctx); + }, + + spread : function(obj, onFulfilled, onRejected, ctx) { + return Vow.promise(obj).spread(onFulfilled, onRejected, ctx); + }, + + done : function(obj, onFulfilled, onRejected, onProgress, ctx) { + Vow.promise(obj).done(onFulfilled, onRejected, onProgress, ctx); + }, + + isPromise : function(obj) { + return obj && isFunction(obj.then); + }, + + valueOf : function(obj) { + return Vow.isPromise(obj)? obj.valueOf() : obj; + }, + + isFulfilled : function(obj) { + return Vow.isPromise(obj)? obj.isFulfilled() : true; + }, + + isRejected : function(obj) { + return Vow.isPromise(obj)? obj.isRejected() : false; + }, + + isResolved : function(obj) { + return Vow.isPromise(obj)? obj.isResolved() : true; + }, + + fulfill : function(val) { + return Vow.when(val, undef, function(err) { + return err; + }); + }, + + reject : function(err) { + return Vow.when(err, function(val) { + var promise = new Promise(); + promise.reject(val); + return promise; + }); + }, + + resolve : function(val) { + return Vow.isPromise(val)? val : Vow.when(val); + }, + + invoke : function(fn) { + try { + return Vow.promise(fn.apply(global, slice.call(arguments, 1))); + } + catch(e) { + return Vow.reject(e); + } + }, + + forEach : function(promises, onFulfilled, onRejected, keys) { + var len = keys? keys.length : promises.length, + i = 0; + while(i < len) { + Vow.when(promises[keys? keys[i] : i], onFulfilled, onRejected); + ++i; + } + }, + + all : function(promises) { + var resPromise = new Promise(), + isPromisesArray = isArray(promises), + keys = isPromisesArray? + getArrayKeys(promises) : + getObjectKeys(promises), + len = keys.length, + res = isPromisesArray? [] : {}; + + if(!len) { + resPromise.fulfill(res); + return resPromise; + } + + var i = len, + onFulfilled = function() { + if(!--i) { + var j = 0; + while(j < len) { + res[keys[j]] = Vow.valueOf(promises[keys[j++]]); + } + resPromise.fulfill(res); + } + }, + onRejected = function(err) { + resPromise.reject(err); + }; + + Vow.forEach(promises, onFulfilled, onRejected, keys); + + return resPromise; + }, + + allResolved : function(promises) { + var resPromise = new Promise(), + isPromisesArray = isArray(promises), + keys = isPromisesArray? + getArrayKeys(promises) : + getObjectKeys(promises), + i = keys.length, + res = isPromisesArray? [] : {}; + + if(!i) { + resPromise.fulfill(res); + return resPromise; + } + + var onProgress = function() { + --i || resPromise.fulfill(promises); + }; + + Vow.forEach(promises, onProgress, onProgress, keys); + + return resPromise; + }, + + allPatiently : function(promises) { + return Vow.allResolved(promises).then(function() { + var isPromisesArray = isArray(promises), + keys = isPromisesArray? + getArrayKeys(promises) : + getObjectKeys(promises), + rejectedPromises, fulfilledPromises, + len = keys.length, i = 0, key, promise; + + if(!len) { + return isPromisesArray? [] : {}; + } + + while(i < len) { + key = keys[i++]; + promise = promises[key]; + if(Vow.isRejected(promise)) { + rejectedPromises || (rejectedPromises = isPromisesArray? [] : {}); + isPromisesArray? + rejectedPromises.push(promise.valueOf()) : + rejectedPromises[key] = promise.valueOf(); + } + else if(!rejectedPromises) { + (fulfilledPromises || (fulfilledPromises = isPromisesArray? [] : {}))[key] = Vow.valueOf(promise); + } + } + + if(rejectedPromises) { + throw rejectedPromises; + } + + return fulfilledPromises; + }); + }, + + any : function(promises) { + var resPromise = new Promise(), + len = promises.length; + + if(!len) { + resPromise.reject(Error()); + return resPromise; + } + + var i = 0, err, + onFulfilled = function(val) { + resPromise.fulfill(val); + }, + onRejected = function(e) { + i || (err = e); + ++i === len && resPromise.reject(err); + }; + + Vow.forEach(promises, onFulfilled, onRejected); + + return resPromise; + }, + + delay : function(val, timeout) { + return Vow.promise(val).delay(timeout); + }, + + timeout : function(val, timeout) { + return Vow.promise(val).timeout(timeout); + } +}; + +var undef, + nextTick = (function() { + var fns = [], + enqueueFn = function(fn) { + return fns.push(fn) === 1; + }, + callFns = function() { + var fnsToCall = fns, i = 0, len = fns.length; + fns = []; + while(i < len) { + fnsToCall[i++](); + } + }; + + if(typeof setImmediate === 'function') { // ie10, nodejs >= 0.10 + return function(fn) { + enqueueFn(fn) && setImmediate(callFns); + }; + } + + if(typeof process === 'object' && process.nextTick) { // nodejs < 0.10 + return function(fn) { + enqueueFn(fn) && process.nextTick(callFns); + }; + } + + if(global.postMessage) { // modern browsers + var isPostMessageAsync = true; + if(global.attachEvent) { + var checkAsync = function() { + isPostMessageAsync = false; + }; + global.attachEvent('onmessage', checkAsync); + global.postMessage('__checkAsync', '*'); + global.detachEvent('onmessage', checkAsync); + } + + if(isPostMessageAsync) { + var msg = '__promise' + +new Date, + onMessage = function(e) { + if(e.data === msg) { + e.stopPropagation && e.stopPropagation(); + callFns(); + } + }; + + global.addEventListener? + global.addEventListener('message', onMessage, true) : + global.attachEvent('onmessage', onMessage); + + return function(fn) { + enqueueFn(fn) && global.postMessage(msg, '*'); + }; + } + } + + var doc = global.document; + if('onreadystatechange' in doc.createElement('script')) { // ie6-ie8 + var createScript = function() { + var script = doc.createElement('script'); + script.onreadystatechange = function() { + script.parentNode.removeChild(script); + script = script.onreadystatechange = null; + callFns(); + }; + (doc.documentElement || doc.body).appendChild(script); + }; + + return function(fn) { + enqueueFn(fn) && createScript(); + }; + } + + return function(fn) { // old browsers + enqueueFn(fn) && setTimeout(callFns, 0); + }; + })(), + throwException = function(e) { + nextTick(function() { + throw e; + }); + }, + isFunction = function(obj) { + return typeof obj === 'function'; + }, + slice = Array.prototype.slice, + toStr = Object.prototype.toString, + isArray = Array.isArray || function(obj) { + return toStr.call(obj) === '[object Array]'; + }, + getArrayKeys = function(arr) { + var res = [], + i = 0, len = arr.length; + while(i < len) { + res.push(i++); + } + return res; + }, + getObjectKeys = Object.keys || function(obj) { + var res = []; + for(var i in obj) { + obj.hasOwnProperty(i) && res.push(i); + } + return res; + }; + +var defineAsGlobal = true; +if(typeof exports === 'object') { + module.exports = Vow; + defineAsGlobal = false; +} + +if(typeof modules === 'object') { + modules.define('vow', function(provide) { + provide(Vow); + }); + defineAsGlobal = false; +} + +if(typeof define === 'function') { + define(function(require, exports, module) { + module.exports = Vow; + }); + defineAsGlobal = false; +} + +defineAsGlobal && (global.Vow = Vow); + +})(this); \ No newline at end of file diff --git a/node_modules/csscomb/node_modules/vow/package.json b/node_modules/csscomb/node_modules/vow/package.json new file mode 100644 index 0000000..a27ed09 --- /dev/null +++ b/node_modules/csscomb/node_modules/vow/package.json @@ -0,0 +1,52 @@ +{ + "name": "vow", + "version": "0.3.11", + "description": "Promises/A+ proposal compatible promises library", + "homepage": "https://github.com/dfilatov/vow", + "keywords": [ + "nodejs", + "browser", + "async", + "promise", + "a+" + ], + "author": { + "name": "Dmitry Filatov", + "email": "dfilatov@yandex-team.ru" + }, + "contributors": [ + { + "name": "Dmitry Filatov", + "email": "dfilatov@yandex-team.ru" + } + ], + "repository": { + "type": "git", + "url": "http://github.com/dfilatov/vow.git" + }, + "dependencies": {}, + "devDependencies": { + "nodeunit": "", + "istanbul": "", + "uglify-js": "1.3.4", + "promises-aplus-tests": "1.3.2" + }, + "main": "lib/vow", + "engines": { + "node": ">= 0.4.0" + }, + "scripts": { + "test": "./node_modules/istanbul/lib/cli.js test test/utils/runner.js" + }, + "readme": "\r\nVow [![Build Status](https://secure.travis-ci.org/dfilatov/vow.png)](http://travis-ci.org/dfilatov/vow)\r\n=========\r\n\r\nPromises/A+ implementation.\r\nSee https://github.com/promises-aplus/promises-spec.\r\n\r\nGetting Started\r\n---------------\r\n###In Node.js###\r\nYou can install using Node Package Manager (npm):\r\n\r\n npm install vow\r\n\r\n###In Browsers###\r\n```html\r\n\r\n```\r\nIt also supports RequireJS module format and [YM module](https://github.com/ymaps/modules) format.\r\n\r\nVow has been tested in IE6+, Mozilla Firefox 3+, Chrome 5+, Safari 5+, Opera 10+.\r\n\r\nAPI\r\n---\r\n * [Creating promise](#vowpromisevalue)\r\n * [Promise API](#promise-api)\r\n * [fulfill](#fulfillvalue)\r\n * [reject](#rejectreason)\r\n * [notify](#notifyvalue)\r\n * [isFulfilled](#isfulfilled)\r\n * [isRejected](#isrejected)\r\n * [isResolved](#isresolved)\r\n * [valueOf](#valueof)\r\n * [then](#thenonfulfilled-onrejected-onprogress-context)\r\n * [fail](#failonrejected-context)\r\n * [always](#alwaysonresolved-context)\r\n * [progress](#progressonprogress-context)\r\n * [spread](#spreadonfulfilled-onrejected-context)\r\n * [done](#doneonfulfilled-onrejected-onprogress-context)\r\n * [delay](#delaydelay)\r\n * [timeout](#timeouttimeout)\r\n * [sync](#syncwithpromise)\r\n * [Vow API](#vow-api)\r\n * [isPromise](#ispromisevalue)\r\n * [when](#whenvalue-onfulfilled-onrejected-onprogress-context)\r\n * [fail](#failvalue-onrejected-context)\r\n * [always](#alwaysvalue-onresolved-context)\r\n * [progress](#progressvalue-onprogress-context)\r\n * [spread](#spreadvalue-onfulfilled-onrejected-context)\r\n * [done](#donevalue-onfulfilled-onrejected-onprogress-context)\r\n * [isFulfilled](#isfulfilledvalue)\r\n * [isRejected](#isrejectedvalue)\r\n * [isResolved](#isresolvededvalue)\r\n * [fulfill](#fulfillvalue-1)\r\n * [reject](#rejectreason-1)\r\n * [resolve](#resolvevalue)\r\n * [invoke](#invokefn-args)\r\n * [all](#allpromisesorvalues)\r\n * [allResolved](#allresolvedpromisesorvalues)\r\n * [any](#anypromisesorvalues)\r\n * [delay](#delayvalue-delay)\r\n * [timeout](#timeoutvalue-timeout)\r\n\r\n####Vow.promise([value])####\r\nCreates a new promise if no ````value```` given, or creates a new fulfilled promise if the ````value```` is not a promise, or returns ````value```` if the given ````value```` is a promise.\r\n````javascript\r\nvar promise = Vow.promise(), // creating a new promise\r\n fulfilledPromise = Vow.promise('ok'), // creating a new fulfilled promise\r\n anotherPromise = Vow.promise(existingPromise); // anotherPromise is equal to the existingPromise\r\n````\r\n###Promise API###\r\n####fulfill(value)####\r\nFulfills promise with given ````value````\r\n````javascript\r\nvar promise = Vow.promise();\r\npromise.fulfill('completed'); // fulfilling promise with 'completed' value\r\n````\r\n####reject(reason)####\r\nRejects promise with given ````reason````\r\n````javascript\r\nvar promise = Vow.promise();\r\npromise.reject(Error('internal error')); // rejecting promise with Error object\r\n````\r\n####notify(value)####\r\nNotifies promise about progress with given ````value````\r\n````javascript\r\nvar promise = Vow.promise();\r\npromise.notify(20); // notifying promise with 20 value\r\n````\r\n\r\n####isFulfilled()####\r\nReturns true if the promise is fulfilled\r\n````javascript\r\nvar promise = Vow.promise();\r\npromise.isFulfilled(); // returns false\r\npromise.fulfill('completed');\r\npromise.isFulfilled(); // returns true\r\n````\r\n\r\n####isRejected()####\r\nReturns true if the promise is rejected\r\n````javascript\r\nvar promise = Vow.promise();\r\npromise.isRejected(); // returns false\r\npromise.reject(Error('internal error'));\r\npromise.isRejected(); // returns true\r\n````\r\n\r\n####isResolved()####\r\nReturns true if the promise is fulfilled or rejected\r\n````javascript\r\nvar promise = Vow.promise();\r\npromise.isResolved(); // returns false\r\npromise.fulfill('completed'); // or promise.reject(Error('internal error'));\r\npromise.isResolved(); // returns true\r\n````\r\n\r\n####valueOf()####\r\nReturns value of the promise:\r\n * value of fulfillment, if promise is fullfilled\r\n * reason of rejection, if promise is rejected\r\n * undefined, if promise is not resolved\r\n\r\n####then([onFulfilled], [onRejected], [onProgress], [context])####\r\nAre arranged for:\r\n * ````onFulfilled```` to be called with the value after promise is fulfilled,\r\n * ````onRejected```` to be called with the rejection reason after promise is rejected.\r\n * ````onProgress```` to be called with the value when promise is notified about progress.\r\n * ````context```` context of callbacks\r\n\r\nReturns a new promise. See [Promises/A+ specification](https://github.com/promises-aplus/promises-spec) for details.\r\n````javascript\r\nvar promise = Vow.promise();\r\npromise.then(\r\n function() { }, // to be called after promise is fulfilled\r\n function() { }, // to be called after promise is rejected\r\n function() { } // to be called when promise is notified\r\n );\r\n````\r\n\r\n####fail(onRejected, [context])####\r\nArranges to call ````onRejected```` with given ````context```` on the promise rejection reason if it is rejected. Shortcut for ````then(null, onRejected)````.\r\n````javascript\r\nvar promise = Vow.promise();\r\npromise.fail(\r\n function() { // to be called after promise is rejected\r\n });\r\npromise.reject(Error('error'));\r\n````\r\n\r\n####always(onResolved, [context])####\r\nArranges to call ````onResolved```` with given ````context```` on the promise if it is fulfilled or rejected.\r\n````javascript\r\nvar promise = Vow.promise();\r\npromise.always(\r\n function(promise) { // to be called after promise is fulfilled or rejected\r\n });\r\npromise.fulfill('ok'); // or promise.reject(Error('error'));\r\n````\r\n\r\n####progress(onProgress, [context])####\r\nArranges to call ````onProgress```` with given ````context```` on the promise if it is notified.\r\nShortcut for ````then(null, null, onProgress)````.\r\n````javascript\r\nvar promise = Vow.promise();\r\npromise.notify(\r\n function(val) { // to be called when promise is notified\r\n console.log('performed ' + val + '% of the job'); // -> performed 20% of the job\r\n });\r\npromise.notify(20);\r\n````\r\n\r\n####spread([onFulfilled], [onRejected], [context])####\r\nLike \"then\", but \"spreads\" the array into a variadic value handler.\r\nIt useful with [Vow.all](#allpromises), [Vow.allResolved](#allresolvedpromises) methods.\r\n````javascript\r\nvar promise1 = Vow.promise(),\r\n promise2 = Vow.promise();\r\n\r\nVow.all([promise1, promise2]).spread(function(arg1, arg2) {\r\n // arg1 should be \"1\", arg2 should be \"'two'\"\r\n});\r\n\r\npromise1.fulfill(1);\r\npromise2.fulfill('two');\r\n````\r\n\r\n####done([onFulfilled], [onRejected], [onProgress], [context])####\r\nTerminates a chain of promises. If the promise is rejected, throws it as an exception in a future turn of the event loop.\r\n````javascript\r\nvar promise = Vow.promise();\r\npromise.reject(Error('Internal error'));\r\npromise.done(); // exception to be thrown\r\n````\r\n####delay(delay)####\r\nReturns a new promise that will be fulfilled in ````delay```` milliseconds if the promise is fulfilled, or immediately rejected if promise is rejected.\r\n\r\n####timeout(timeout)####\r\nReturns a new promise that will be rejected in ````timeout```` milliseconds if the promise is not resolved beforehand.\r\n````javascript\r\nvar promise = Vow.promise(),\r\n promiseWithTimeout1 = promise.timeout(50),\r\n promiseWithTimeout2 = promise.timeout(200);\r\n\r\nsetTimeout(\r\n function() {\r\n promise.fulfill('ok');\r\n },\r\n 100);\r\n\r\npromiseWithTimeout1.fail(function(e) {\r\n // promiseWithTimeout to be rejected in 50ms\r\n});\r\n\r\npromiseWithTimeout2.then(function(val) {\r\n // promiseWithTimeout to be fulfilled with \"'ok'\" value\r\n});\r\n````\r\n\r\n####sync(withPromise)####\r\nSynchronizes promise state with ````withPromise```` state. Shortcut for:\r\n````javascript\r\nwithPromise.then(\r\n function(val) {\r\n promise.fulfill(val);\r\n },\r\n function(err) {\r\n promise.reject(err);\r\n },\r\n function(val) {\r\n promise.notify(val);\r\n });\r\n````\r\n\r\n###Vow API###\r\n\r\n####isPromise(value)####\r\nReturns true if the given ````value```` is a promise.\r\n````javascript\r\nVow.isPromise('value'); // returns false\r\nVow.isPromise(Vow.promise()); // returns true\r\n````\r\n\r\n####when(value, [onFulfilled], [onRejected], [onProgress], [context])####\r\nStatic equivalent to [promise.then](#thenonfulfilled-onrejected-onprogress-context). If given ````value```` is not a promise, then ````value```` is equivalent to fulfilled promise.\r\n\r\n####fail(value, onRejected, [context])####\r\nStatic equivalent to [promise.fail](#failonrejected-context). If given ````value```` is not a promise, then ````value```` is equivalent to fulfilled promise.\r\n\r\n####always(value, onResolved, [context])####\r\nStatic equivalent to [promise.always](#alwaysonresolved-context). If given ````value```` is not a promise, then ````value```` is equivalent to fulfilled promise.\r\n\r\n####progress(value, onProgress, [context])####\r\nStatic equivalent to [promise.progress](#progressonprogress-context). If given ````value```` is not a promise, then ````value```` is equivalent to fulfilled promise.\r\n\r\n####spread(value, [onFulfilled], [onRejected], [context])####\r\nStatic equivalent to [promise.spread](#spreadonfulfilled-onrejected-context).\r\nIf given ````value```` is not a promise, then ````value```` is equivalent to fulfilled promise.\r\n\r\n####done(value, [onFulfilled], [onRejected], [onProgress], [context]])####\r\nStatic equivalent to [promise.done](#doneonfulfilled-onrejected-onprogress-context).\r\nIf given ````value```` is not a promise, then ````value```` is equivalent to fulfilled promise.\r\n\r\n####isFulfilled(value)####\r\nStatic equivalent to [promise.isFulfilled](#isfulfilled).\r\nIf given ````value```` is not a promise, then ````value```` is equivalent to fulfilled promise.\r\n\r\n####isRejected(value)####\r\nStatic equivalent to [promise.isRejected](#isrejected).\r\nIf given ````value```` is not a promise, then ````value```` is equivalent to fulfilled promise.\r\n\r\n####isResolved(value)####\r\nStatic equivalent to [promise.isResolved](#isresolved).\r\nIf given ````value```` is not a promise, then ````value```` is equivalent to fulfilled promise.\r\n\r\n####fulfill(value)####\r\nReturns a promise that has already been fulfilled with the given ````value````. If ````value```` is a promise, returned promise will be fulfilled with fulfill/rejection value of given promise.\r\n\r\n####reject(reason)####\r\nReturns a promise that has already been rejected with the given ````reason````. If ````reason```` is a promise, returned promise will be rejected with fulfill/rejection value of given promise.\r\n\r\n####resolve(value)####\r\nReturns a promise that has already been fulfilled with the given ````value````. If ````value```` is a promise, returns ````promise````.\r\n\r\n####invoke(fn, ...args)####\r\nInvokes a given function ````fn```` with arguments ````args````. Returned promise:\r\n * will be fulfilled with returned value if value is not a promise\r\n * will be rejected if function throw exception\r\n * value will be returned if value is a promise\r\n\r\n````javascript\r\nvar promise1 = Vow.invoke(function(value) {\r\n return value;\r\n }, 'ok'),\r\n promise2 = Vow.invoke(function() {\r\n throw Error();\r\n });\r\n\r\npromise1.isFulfilled(); // true\r\npromise1.valueOf(); // 'ok'\r\npromise2.isRejected(); // true\r\npromise2.valueOf(); // instance of Error\r\n````\r\n\r\n####all(promisesOrValues)####\r\nReturns a promise to be fulfilled only after all the items in ````promisesOrValues```` are fulfilled, or to be rejected when any of the promises is rejected.\r\n\r\n````promisesOrValues```` can be Array:\r\n````javascript\r\nvar promise1 = Vow.promise(),\r\n promise2 = Vow.promise();\r\n\r\nVow.all([promise1, promise2, 3])\r\n .then(function(value) {\r\n // value is [1, 2, 3]\r\n });\r\n\r\npromise1.fulfill(1);\r\npromise2.fulfill(2);\r\n````\r\nor Object:\r\n````javascript\r\nvar promise1 = Vow.promise(),\r\n promise2 = Vow.promise();\r\n\r\nVow.all({ a : promise1, b : promise2, c : 3 })\r\n .then(function(value) {\r\n // value is { a : 1, b : 2, c : 3 }\r\n });\r\n\r\npromise1.fulfill(1);\r\npromise2.fulfill(2);\r\n````\r\n\r\n####allResolved(promisesOrValues)####\r\nReturns a promise to be fulfilled only after all the items in ````promisesOrValues```` are resolved.\r\n````javascript\r\nvar promise1 = Vow.promise(),\r\n promise2 = Vow.promise();\r\n\r\nVow.allResolved([promise1, promise2])\r\n .spread(function(promise1, promise2) {\r\n promise1.valueOf(); // returns 'error'\r\n promise2.valueOf(); // returns 'ok'\r\n });\r\n\r\npromise1.reject('error');\r\npromise2.fulfill('ok');\r\n````\r\n\r\n####any(promisesOrValues)####\r\nReturns a promise to be fulfilled only when any of the items in ````promisesOrValues```` are fulfilled, or to be rejected when all the items are rejected (with the reason of the first rejected item).\r\n\r\n####delay(value, delay)####\r\nStatic equivalent to [promise.delay](#delaydelay). If given ````value```` is not a promise, then ````value```` is equivalent to fulfilled promise.\r\n\r\n####timeout(value, timeout)####\r\nStatic equivalent to [promise.timeout](#timeouttimeout). If given ````value```` is not a promise, then ````value```` is equivalent to fulfilled promise.\r\n", + "readmeFilename": "README.md", + "bugs": { + "url": "https://github.com/dfilatov/vow/issues" + }, + "_id": "vow@0.3.11", + "dist": { + "shasum": "9f8e740544c56010a621fd15fa6214257011b7d7" + }, + "_from": "vow@0.3.11", + "_resolved": "https://registry.npmjs.org/vow/-/vow-0.3.11.tgz" +} diff --git a/node_modules/csscomb/node_modules/vow/vow.min.js b/node_modules/csscomb/node_modules/vow/vow.min.js new file mode 100644 index 0000000..10aeb34 --- /dev/null +++ b/node_modules/csscomb/node_modules/vow/vow.min.js @@ -0,0 +1,10 @@ +/** + * Vow + * + * Copyright (c) 2012-2013 Filatov Dmitry (dfilatov@yandex-team.ru) + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * + * @version 0.3.10 + */(function(e){var t=function(e){this._res=e,this._isFulfilled=!!arguments.length,this._isRejected=!1,this._fulfilledCallbacks=[],this._rejectedCallbacks=[],this._progressCallbacks=[]};t.prototype={valueOf:function(){return this._res},isFulfilled:function(){return this._isFulfilled},isRejected:function(){return this._isRejected},isResolved:function(){return this._isFulfilled||this._isRejected},fulfill:function(e){if(this.isResolved())return;this._isFulfilled=!0,this._res=e,this._callCallbacks(this._fulfilledCallbacks,e),this._fulfilledCallbacks=this._rejectedCallbacks=this._progressCallbacks=r},reject:function(e){if(this.isResolved())return;this._isRejected=!0,this._res=e,this._callCallbacks(this._rejectedCallbacks,e),this._fulfilledCallbacks=this._rejectedCallbacks=this._progressCallbacks=r},notify:function(e){if(this.isResolved())return;this._callCallbacks(this._progressCallbacks,e)},then:function(e,n,i,s){n&&!o(n)?(s=n,n=r):i&&!o(i)&&(s=i,i=r);var u=new t,a;return this._isRejected||(a={promise:u,fn:o(e)?e:r,ctx:s},this._isFulfilled?this._callCallbacks([a],this._res):this._fulfilledCallbacks.push(a)),this._isFulfilled||(a={promise:u,fn:n,ctx:s},this._isRejected?this._callCallbacks([a],this._res):this._rejectedCallbacks.push(a)),this.isResolved()||this._progressCallbacks.push({promise:u,fn:i,ctx:s}),u},fail:function(e,t){return this.then(r,e,t)},always:function(e,t){var n=this,r=function(){return e.call(this,n)};return this.then(r,r,t)},progress:function(e,t){return this.then(r,r,e,t)},spread:function(e,t,n){return this.then(function(t){return e.apply(this,t)},t,n)},done:function(e,t,n,r){this.then(e,t,n,r).fail(s)},delay:function(e){return this.then(function(n){var r=new t;return setTimeout(function(){r.fulfill(n)},e),r})},timeout:function(e){var n=new t,r=setTimeout(function(){n.reject(Error("timed out"))},e);return n.sync(this),n.always(function(){clearTimeout(r)}),n},sync:function(e){e.then(this.fulfill,this.reject,this.notify,this)},_callCallbacks:function(e,t){var r=e.length;if(!r)return;var s=this.isResolved(),o=this.isFulfilled();i(function(){var i=0,u,a,f;while(i= 0.8.0" + }, + "dependencies": { + "commander": "2.0.0", + "gonzales": "1.0.7", + "minimatch": "0.2.12", + "vow": "0.3.11", + "vow-fs": "0.2.3" + }, + "devDependencies": { + "jshint-groups": "0.5.3", + "jshint": "2.3.0", + "jscs": "1.0.11", + "mocha": "1.14.0" + }, + "main": "./lib/csscomb.js", + "bin": { + "csscomb": "./bin/csscomb" + }, + "scripts": { + "test": "./node_modules/.bin/jshint-groups && ./node_modules/.bin/jscs . && ./node_modules/.bin/mocha -u bdd -R spec" + }, + "readme": "# CSSComb [![CSSComb](logo.png)](http://csscomb.com/)\n[![Build Status](https://secure.travis-ci.org/csscomb/csscomb.js.png?branch=master)](http://travis-ci.org/csscomb/csscomb.js)\n\nCSSComb is a coding style formatter for CSS.\nYou can easily write your own [configuration](#configuration) to make your style sheets beautiful and consistent.\n\nThe main feature is the [sorting properties](#sort-order) in specific order.\nIt was inspired by the same-named [@miripiruni](https://github.com/miripiruni)'s [PHP-based tool](https://github.com/csscomb/csscomb).\nThis is the new JavaScript version, based on powerful CSS parser [Gonzales](https://github.com/css/gonzales).\n\n## Installation\n\n```bash\nnpm install csscomb\n```\n\nTo run `csscomb`, you can use the following command from the project root:\n\n```bash\n./node_modules/.bin/csscomb path[ path[...]]\n```\n\n```bash\n./node_modules/.bin/csscomb --help\n\n Usage: csscomb [options] \n\n Options:\n\n -h, --help output usage information\n -V, --version output the version number\n -c, --config [path] configuration file path\n -l, --lint in case some fixes needed returns an error\n```\n\n## Configuration\n\n`csscomb` is configured using [.csscomb.json](https://github.com/csscomb/csscomb.js/blob/master/.csscomb.json) file, located in the project root.\n\nExample configuration:\n```json\n{\n \"exclude\": [\"node_modules/**\"],\n \"verbose\": true,\n\n \"always-semicolon\": true,\n \"block-indent\": true,\n \"colon-space\": true,\n \"color-case\": \"lower\",\n \"color-shorthand\": true,\n \"element-case\": \"lower\",\n \"eof-newline\": true,\n \"leading-zero\": false,\n \"remove-empty-rulesets\": true,\n \"rule-indent\": true,\n \"stick-brace\": true,\n \"strip-spaces\": true,\n \"unitless-zero\": true,\n \"vendor-prefix-align\": true\n}\n```\n\n## Options\n\n### exclude\n\nAvailable values: `{String[]}`\n\nArray of [Ant path patterns](http://ant.apache.org/manual/dirtasks.html#patterns) to exclude.\n\nExample: `{ \"exclude\": [\"node_modules/**\"] }` - exclude all files and directories under `node_modules` dir.\n\n### verbose\n\nAvailable value: `{Boolean}` `true`\n\nConfig mode: `{ \"verbose\": true }`\n```bash\n$ ./bin/csscomb ./test\n✓ test/integral.origin.css\n test/integral.expect.css\n\n2 files processed\n1 file fixed\n96 ms spent\n```\n\nCLI mode:\n```bash\n$ ./bin/csscomb ./test --verbose\n$ ./bin/csscomb ./test -v\n```\n\n### always-semicolon\n\nAvailable value: `{Boolean}` `true`\n\nExample: `{ \"always-semicolon\": true }`\n\n```css\n/* before */\na { color: red }\n\n/* after */\na { color: red; }\n```\n\n### block-indent\n\n**Note**: better to use with [rule-indent](#rule-indent)\n\nAvailable values:\n * `{Boolean}` `true` (means 4 spaces)\n * `{Number}` of spaces\n * `{String}` of whitespace characters (`/[ \\t]+/`)\n\nExample: `{ \"block-indent\": 2 }`\n\n```css\n/* before */\n a { color: red }\n @media all { a { color: green } }\n\n/* after */\na { color: red\n}\n@media all {\n a { color: green\n }\n}\n```\n\n### colon-space\n\nAvailable values:\n * `{Boolean}` `true` (means `after`) or `false` (no whitespace at all)\n * `{String}`: `before`, `after`, `both` or any combination of whitespaces\n and/or a colon (` `, `: `, `\\t:\\n\\t` etc.)\n * `{Array}` with two `{String}` values: for setting left and right whitespace around a colon\n\nExample: `{ \"colon-space\": true }`\n\n```css\n/* before */\na { color:red }\n\n/* after */\na { color: red }\n```\n\nExample: `{ \"colon-space\": \":\\n\\t\\t\" }`\n\n```css\n/* before */\na {\n color: red;\n}\n\n/* after */\na {\n color:\n red;\n}\n```\n\nExample: `{ \"colon-space\": \"\" }`\n\n```css\n/* before */\na { color: red }\n\n/* after */\na { color:red }\n```\n\nExample: `{ \"colon-space\": [\"\\t\", \"\\t\"] }`\n\n```css\n/* before */\na { color: red }\n\n/* after */\na { color\t:\tred }\n```\n\n### color-case\n\nAvailable values: `{String}` `lower` or `upper`\n\nExample: `{ \"color-case\": \"lower\" }`\n\n```css\n/* before */\na { color: #FFF }\n\n/* after */\na { color: #fff }\n```\n\n### color-shorthand\n\nAvailable values: `{Boolean}` `true` or `false`\n\nExample: `{ \"color-shorthand\": true }`\n\n```css\n/* before */\nb { color: #ffcc00 }\n\n/* after */\nb { color: #fc0 }\n```\n\n### combinator-space\n\nAvailable values:\n * `{Boolean}`: `true` sets one space, `false` removes the spaces.\n * `{String}`: any combination of whitespaces.\n * `{Array}` with two `{String}` values: for setting left and right whitespace.\n\nExample: `{ \"combinator-space\": true }`\n\n```css\n/* before */\na>b { color: red }\n\n/* after */\na > b { color: red }\n```\n\nExample: `{ \"combinator-space\": \"\" }`\n\n```css\n/* before */\na > b { color: red }\n\n/* after */\na>b { color: red }\n```\n\nExample: `{ \"combinator-space\": [\" \", \"\\n\"] }`\n\n```css\n/* before */\na>b { color: red }\n\n/* after */\na >\nb { color: red }\n```\n\n### element-case\n\nAvailable values: `{String}` `lower` or `upper`\n\nExample: `{ \"element-case\": \"upper\" }`\n\n```css\n/* before */\nli > a { color: red }\n\n/* after */\nLI > A { color: red }\n```\n\n### eof-newline\n\nAvailable values: `{Boolean}` `true` or `false`\n\nExample: `{ \"eof-newline\": true }`\n\n`a { color: red }` → `a { color: red }\\n`\n\nExample: `{ \"eof-newline\": false }`\n\n`a { color: red }\\n` → `a { color: red }`\n\n### leading-zero\n\nAvailable values: `{Boolean}` `true` or `false`\n\nExample: `{ \"leading-zero\": false }`\n\n```css\n/* before */\np { padding: 0.5em }\n\n/* after */\np { padding: .5em }\n```\n\n### remove-empty-rulesets\n\nAvailable values: `{Boolean}` `true`\n\nExample: `{ \"remove-empty-rulesets\": true }` - remove rulesets that have no declarations or comments.\n\n`a { color: red; } p { /* hey */ } b { }` → `a { color: red; } p { /* hey */ } `\n\n### rule-indent\n\n**Note**: better to use with [block-indent](#block-indent)\n\nAvailable values:\n * `{Boolean}` `true` (means 4 spaces)\n * `{Number}` of spaces\n * `{String}` of whitespace characters (`/[ \\t]+/`)\n\nExample: `{ \"rule-indent\": 2 }`\n\n```css\n/* before */\na { color:red; margin:0 }\n\n/* after */\na {\n color:red;\n margin:0 }\n```\n\n### sort-order\n\n**Note**: you can use an example of [.csscomb.json](https://github.com/csscomb/csscomb.js/blob/master/.csscomb.json) to set your own sort order\n\nAvailable values:\n * `{Array}` of rules\n * `{Array}` of arrays of rules for groups separation\n\nExample: `{ \"sort-order\": [ \"margin\", \"padding\" ] }`\n\n```css\n/* before */\np {\n padding: 0;\n margin: 0;\n}\n\n/* after */\np {\n margin: 0;\n padding: 0;\n}\n```\n\nExample: `{ \"sort-order\": [ [ \"margin\", \"padding\" ], [ \"border\", \"background\" ] ] }`\n\n```css\n/* before */\np {\n background: none;\n border: 0;\n margin: 0;\n padding: 0;\n}\n\n/* after */\np {\n margin: 0;\n padding: 0;\n\n border: 0;\n background: none;\n}\n```\n\n### stick-brace\n\nAvailable values:\n * `{Boolean}` `true` (means 1 space)\n * `{Number}` of spaces\n * `{String}` of whitespace characters (`/[ \\t\\n]+/`)\n\nExample: `{ \"stick-brace\": \"\\n\" }`\n\n```css\n/* before */\na { color:red }\n\n/* after */\na\n{ color:red }\n```\n\n### strip-spaces\n\nAvailable value: `{Boolean}` `true`\n\nExample: `{ \"strip-spaces\": true }`\n\n`a { color: red } \\n \\n \\n` → `a { color: red }\\n`\n\n`a { color: red }\\t` → `a { color: red }`\n\n### unitless-zero\n\nAvailable value: `{Boolean}` `true`\n\nExample: `{ \"unitless-zero\": true }`\n\n```css\n/* before */\nimg { border: 0px }\n\n/* after */\nimg { border: 0 }\n```\n\n### vendor-prefix-align\n\nAvailable value: `{Boolean}` `true`\n\nExample: `{ \"vendor-prefix-align\": true }`\n\n```css\n/* before */\na\n{\n -webkit-border-radius: 3px;\n -moz-border-radius: 3px;\n border-radius: 3px;\n background: -webkit-linear-gradient(top, #fff 0, #eee 100%);\n background: -moz-linear-gradient(top, #fff 0, #eee 100%);\n background: linear-gradient(to bottom, #fff 0, #eee 100%);\n}\n\n/* after */\na\n{\n -webkit-border-radius: 3px;\n -moz-border-radius: 3px;\n border-radius: 3px;\n background: -webkit-linear-gradient(top, #fff 0, #eee 100%);\n background: -moz-linear-gradient(top, #fff 0, #eee 100%);\n background: linear-gradient(to bottom, #fff 0, #eee 100%);\n}\n```\n\n## Tests\n\nRun `npm test` for tests.\n\n## Contributing\n\nAnyone and everyone is welcome to contribute. Please take a moment to\nreview the [guidelines for contributing](CONTRIBUTE.md).\n\n## Authors\n\n[@mishanga](https://github.com/mishanga)\n\nThanks for assistance and contributions:\n\n[@miripiruni](https://github.com/miripiruni),\n[@puzankov](https://github.com/puzankov),\n[@L0stSoul](https://github.com/L0stSoul),\n[@ignovak](https://github.com/ignovak),\n[@kizu](https://github.com/kizu),\n[@anton-rudeshko](https://github.com/anton-rudeshko),\n[@mishaberezin](https://github.com/mishaberezin)\n\n## License\n\nThis software is released under the terms of the [MIT license](https://github.com/csscomb/csscomb.js/blob/master/LICENSE).\n\n## Other projects\n* https://github.com/senchalabs/cssbeautify\n* https://github.com/css/gonzales\n* https://github.com/css/csso\n* https://github.com/nzakas/parser-lib\n", + "readmeFilename": "README.md", + "bugs": { + "url": "https://github.com/csscomb/csscomb.js/issues" + }, + "_id": "csscomb@1.0.0", + "dist": { + "shasum": "632da2730d02003530c29353585a88d1d4dd5338" + }, + "_from": "csscomb@", + "_resolved": "https://registry.npmjs.org/csscomb/-/csscomb-1.0.0.tgz" +} diff --git a/node_modules/csscomb/test/always-semicolon.js b/node_modules/csscomb/test/always-semicolon.js new file mode 100644 index 0000000..e606061 --- /dev/null +++ b/node_modules/csscomb/test/always-semicolon.js @@ -0,0 +1,60 @@ +var Comb = require('../lib/csscomb'); +var assert = require('assert'); + +describe('options/always-semicolon', function() { + var comb; + + beforeEach(function() { + comb = new Comb(); + }); + + it('Should add semicolon for last property if missing. Test 1', function() { + comb.configure({ 'always-semicolon': true }); + assert.equal( + comb.processString( + 'div { height: 0 }' + ), + 'div { height: 0; }' + ); + }); + + it('Should add semicolon for last property if missing. Test 2', function() { + comb.configure({ 'always-semicolon': true }); + assert.equal( + comb.processString( + 'div {\nheight: 0\n}' + ), + 'div {\nheight: 0;\n}' + ); + }); + + it('Should add semicolon for last property if missing. Test 3', function() { + comb.configure({ 'always-semicolon': true }); + assert.equal( + comb.processString( + 'div {height: 0}' + ), + 'div {height: 0;}' + ); + }); + + it('Should add semicolon for last property if missing. Test 4', function() { + comb.configure({ 'always-semicolon': true }); + assert.equal( + comb.processString( + 'div {\nheight: 0 /* Comment */\n}' + ), + 'div {\nheight: 0; /* Comment */\n}' + ); + }); + + it('Should add semicolon for last property if missing. Test 5', function() { + comb.configure({ 'always-semicolon': true }); + assert.equal( + comb.processString( + 'div {\ntop: 1px;\nheight: 0 /* 1comment */ /* 2comment */\n}' + ), + 'div {\ntop: 1px;\nheight: 0; /* 1comment */ /* 2comment */\n}' + ); + }); +}); diff --git a/node_modules/csscomb/test/block-indent.js b/node_modules/csscomb/test/block-indent.js new file mode 100644 index 0000000..f5a08d5 --- /dev/null +++ b/node_modules/csscomb/test/block-indent.js @@ -0,0 +1,44 @@ +var Comb = require('../lib/csscomb'); +var assert = require('assert'); + +describe('options/block-indent', function() { + var comb; + beforeEach(function() { + comb = new Comb(); + }); + it('Invalid Number value should not change space after brace', function() { + comb.configure({ 'block-indent': 3.5 }); + assert.equal( + comb.processString('a { color: red }'), + 'a { color: red }' + ); + }); + it('Invalid String value should not change space after brace', function() { + comb.configure({ 'block-indent': 'foobar' }); + assert.equal( + comb.processString('a { color: red }'), + 'a { color: red }' + ); + }); + it('True Boolean value should set 4 spaces indent', function() { + comb.configure({ 'block-indent': true }); + assert.equal( + comb.processString(' \n a { color: red } @media all {.input__control { color: #000;\n}\n}'), + ' \na { color: red \n}\n@media all {\n .input__control { color: #000;\n }\n}' + ); + }); + it('Valid Number value should set equal space after brace', function() { + comb.configure({ 'block-indent': 3 }); + assert.equal( + comb.processString(' a\n{ color: red } @media all { .input__control\n{ color: #000;\n}\n}'), + 'a\n{ color: red \n}\n@media all {\n .input__control\n { color: #000;\n }\n}' + ); + }); + it('Valid String value should set equal space after brace', function() { + comb.configure({ 'block-indent': '\t' }); + assert.equal( + comb.processString(' a { color: red } @media all { .input__control\n{ color: #000;\n}\n}'), + 'a { color: red \n}\n@media all {\n\t.input__control\n\t{ color: #000;\n\t}\n}' + ); + }); +}); diff --git a/node_modules/csscomb/test/colon-space.js b/node_modules/csscomb/test/colon-space.js new file mode 100644 index 0000000..6514bb7 --- /dev/null +++ b/node_modules/csscomb/test/colon-space.js @@ -0,0 +1,149 @@ +var Comb = require('../lib/csscomb'); +var assert = require('assert'); + +describe('options/colon-space', function() { + var comb; + beforeEach(function() { + comb = new Comb(); + }); + it('Invalid String should not change space around colon', function() { + comb.configure({ 'colon-space': 'foobar' }); + assert.equal( + comb.processString('a { color : red }'), + 'a { color : red }' + ); + }); + it('True Boolean value should set space after colon', function() { + comb.configure({ 'colon-space': true }); + assert.equal( + comb.processString( + 'a { color: red }' + + 'a{color:red}' + + 'a {color : red}' + + 'a {color : /* foo */ red }' + + 'a {color /* bar */ : red }' + ), + 'a { color: red }' + + 'a{color: red}' + + 'a {color: red}' + + 'a {color: /* foo */ red }' + + 'a {color /* bar */: red }' + ); + }); + it('False Boolean value should set no space around colon', function() { + comb.configure({ 'colon-space': false }); + assert.equal( + comb.processString( + 'a { color: red }' + + 'a{color:red}' + + 'a {color : red}' + + 'a {color : /* foo */ red }' + + 'a {color /* bar */ : red }' + ), + 'a { color:red }' + + 'a{color:red}' + + 'a {color:red}' + + 'a {color:/* foo */ red }' + + 'a {color /* bar */:red }' + ); + }); + it('String `after` value should set space after colon', function() { + comb.configure({ 'colon-space': 'after' }); + assert.equal( + comb.processString( + 'a { color: red }' + + 'a{color:red}' + + 'a {color : red}' + + 'a {color : /* foo */ red }' + + 'a {color /* bar */ : red }' + ), + 'a { color: red }' + + 'a{color: red}' + + 'a {color: red}' + + 'a {color: /* foo */ red }' + + 'a {color /* bar */: red }' + ); + }); + it('String `before` value should set space before colon', function() { + comb.configure({ 'colon-space': 'before' }); + assert.equal( + comb.processString( + 'a { color: red }' + + 'a{color:red}' + + 'a {color : red}' + + 'a {color : /* foo */ red }' + + 'a {color /* bar */ : red }' + ), + 'a { color :red }' + + 'a{color :red}' + + 'a {color :red}' + + 'a {color :/* foo */ red }' + + 'a {color /* bar */ :red }' + ); + }); + it('String `both` value should set spaces around colon', function() { + comb.configure({ 'colon-space': 'both' }); + assert.equal( + comb.processString( + 'a { color: red }' + + 'a{color:red}' + + 'a {color : red}' + ), + 'a { color : red }' + + 'a{color : red}' + + 'a {color : red}' + ); + }); + it('String ` ` value should set two spaces after colon', function() { + comb.configure({ 'colon-space': ' ' }); + assert.equal( + comb.processString( + 'a { color: red }' + + 'a{color:red}' + + 'a {color : red}' + ), + 'a { color: red }' + + 'a{color: red}' + + 'a {color: red}' + ); + }); + it('String `:` value should set no space around colon', function() { + comb.configure({ 'colon-space': ':' }); + assert.equal( + comb.processString( + 'a { color: red }' + + 'a{color:red}' + + 'a {color : red}' + ), + 'a { color:red }' + + 'a{color:red}' + + 'a {color:red}' + ); + }); + it('String `` value should set no space around colon', function() { + comb.configure({ 'colon-space': '' }); + assert.equal( + comb.processString( + 'a { color: red }' + + 'a{color:red}' + + 'a {color : red}' + ), + 'a { color:red }' + + 'a{color:red}' + + 'a {color:red}' + ); + }); + it('String `\\t:\\t` value should set tabs around colon', function() { + comb.configure({ 'colon-space': '\t:\t' }); + assert.equal( + comb.processString( + 'a { color: red }' + + 'a{color:red}' + + 'a {color : red}' + ), + 'a { color\t:\tred }' + + 'a{color\t:\tred}' + + 'a {color\t:\tred}' + ); + }); +}); diff --git a/node_modules/csscomb/test/color-case.js b/node_modules/csscomb/test/color-case.js new file mode 100644 index 0000000..01a7f0e --- /dev/null +++ b/node_modules/csscomb/test/color-case.js @@ -0,0 +1,53 @@ +var Comb = require('../lib/csscomb'); +var assert = require('assert'); + +describe('options/color-case', function() { + var comb; + + beforeEach(function() { + comb = new Comb(); + }); + + it('Should switch colors to upper case', function() { + comb.configure({ 'color-case': 'upper' }); + assert.equal( + comb.processString( + 'div { color: #fff }' + ), + 'div { color: #FFF }' + ); + }); + + it('Should switch colors to lower case', function() { + comb.configure({ 'color-case': 'lower' }); + assert.equal( + comb.processString( + 'div { color: #FFF }' + ), + 'div { color: #fff }' + ); + }); + + it('Should switch color-case in complex rules', function() { + comb.configure({ 'color-case': 'lower' }); + assert.equal( + comb.processString( + 'div { background: url(img.png#RND) #E3E3E3 0 100% no-repeat;' + + ' box-shadow: 1px 2px 3px 4px #F0F0F0 inset; }' + ), + 'div { background: url(img.png#RND) #e3e3e3 0 100% no-repeat;' + + ' box-shadow: 1px 2px 3px 4px #f0f0f0 inset; }' + ); + }); + + it('Should not switch selector case', function() { + comb.configure({ 'color-case': 'lower' }); + assert.equal( + comb.processString( + '#Header { color: #FFF }' + ), + '#Header { color: #fff }' + ); + }); + +}); diff --git a/node_modules/csscomb/test/color-shorthand.js b/node_modules/csscomb/test/color-shorthand.js new file mode 100644 index 0000000..19458b0 --- /dev/null +++ b/node_modules/csscomb/test/color-shorthand.js @@ -0,0 +1,41 @@ +var Comb = require('../lib/csscomb'); +var assert = require('assert'); + +describe('options/color-shorthand', function() { + var comb; + + beforeEach(function() { + comb = new Comb(); + }); + + it('Should shrink hexadecimal colors to 3 symbols', function() { + comb.configure({ 'color-shorthand': true }); + assert.equal( + comb.processString( + 'div { color: #aabbcc }' + ), + 'div { color: #abc }' + ); + }); + + it('Should expand hexadecimal colors to 6 symbols', function() { + comb.configure({ 'color-shorthand': false }); + assert.equal( + comb.processString( + 'div { color: #7ad }' + ), + 'div { color: #77aadd }' + ); + }); + + it('Should save case while processing', function() { + comb.configure({ 'color-shorthand': true }); + assert.equal( + comb.processString( + 'div { color: #fFAafF }' + ), + 'div { color: #fAf }' + ); + }); + +}); diff --git a/node_modules/csscomb/test/combinator-space.js b/node_modules/csscomb/test/combinator-space.js new file mode 100644 index 0000000..7c26941 --- /dev/null +++ b/node_modules/csscomb/test/combinator-space.js @@ -0,0 +1,157 @@ +var Comb = require('../lib/csscomb'); +var assert = require('assert'); + +describe('options/combinator-space', function() { + var comb; + beforeEach(function() { + comb = new Comb(); + }); + it('Invalid String should not change space around combinator', function() { + comb.configure({ 'combinator-space': 'foobar' }); + assert.equal( + comb.processString( + 'a >b { color: red }' + + 'a ~b { color: red }' + + 'a +b { color: red }' + ), + 'a >b { color: red }' + + 'a ~b { color: red }' + + 'a +b { color: red }' + ); + }); + it('True Boolean value should set space around combinator to one space', function() { + comb.configure({ 'combinator-space': true }); + assert.equal( + comb.processString( + 'a>b { color: red }' + + 'a> b { color: red }' + + 'a >b { color: red }' + + 'a+b { color: red }' + + 'a+ b { color: red }' + + 'a +b { color: red }' + + 'a~b { color: red }' + + 'a~ b { color: red }' + + 'a ~b { color: red }' + + 'a ~b+ c>d { color: red }' + ), + 'a > b { color: red }' + + 'a > b { color: red }' + + 'a > b { color: red }' + + 'a + b { color: red }' + + 'a + b { color: red }' + + 'a + b { color: red }' + + 'a ~ b { color: red }' + + 'a ~ b { color: red }' + + 'a ~ b { color: red }' + + 'a ~ b + c > d { color: red }' + ); + }); + it('False Boolean value should remove spaces around combinator', function() { + comb.configure({ 'combinator-space': false }); + assert.equal( + comb.processString( + 'a>b { color: red }' + + 'a> b { color: red }' + + 'a >b { color: red }' + + 'a+b { color: red }' + + 'a+ b { color: red }' + + 'a +b { color: red }' + + 'a~b { color: red }' + + 'a~ b { color: red }' + + 'a ~b { color: red }' + + 'a ~b+ c>d { color: red }' + ), + 'a>b { color: red }' + + 'a>b { color: red }' + + 'a>b { color: red }' + + 'a+b { color: red }' + + 'a+b { color: red }' + + 'a+b { color: red }' + + 'a~b { color: red }' + + 'a~b { color: red }' + + 'a~b { color: red }' + + 'a~b+c>d { color: red }' + ); + }); + it('String `` value should remove spaces around combinator', function() { + comb.configure({ 'combinator-space': '' }); + assert.equal( + comb.processString( + 'a>b { color: red }' + + 'a> b { color: red }' + + 'a >b { color: red }' + + 'a+b { color: red }' + + 'a+ b { color: red }' + + 'a +b { color: red }' + + 'a~b { color: red }' + + 'a~ b { color: red }' + + 'a ~b { color: red }' + + 'a ~b+ c>d { color: red }' + ), + 'a>b { color: red }' + + 'a>b { color: red }' + + 'a>b { color: red }' + + 'a+b { color: red }' + + 'a+b { color: red }' + + 'a+b { color: red }' + + 'a~b { color: red }' + + 'a~b { color: red }' + + 'a~b { color: red }' + + 'a~b+c>d { color: red }' + ); + }); + it('String ` ` value should set two spaces around combinator', function() { + comb.configure({ 'combinator-space': ' ' }); + assert.equal( + comb.processString( + 'a>b { color: red }' + + 'a> b { color: red }' + + 'a >b { color: red }' + + 'a+b { color: red }' + + 'a+ b { color: red }' + + 'a +b { color: red }' + + 'a~b { color: red }' + + 'a~ b { color: red }' + + 'a ~b { color: red }' + + 'a ~b+ c>d { color: red }' + ), + 'a > b { color: red }' + + 'a > b { color: red }' + + 'a > b { color: red }' + + 'a + b { color: red }' + + 'a + b { color: red }' + + 'a + b { color: red }' + + 'a ~ b { color: red }' + + 'a ~ b { color: red }' + + 'a ~ b { color: red }' + + 'a ~ b + c > d { color: red }' + ); + }); + it('Array value should set different spaces around combinator', function() { + comb.configure({ 'combinator-space': [' ', '\n'] }); + assert.equal( + comb.processString( + 'a>b { color: red }' + + 'a> b { color: red }' + + 'a >b { color: red }' + + 'a+b { color: red }' + + 'a+ b { color: red }' + + 'a +b { color: red }' + + 'a~b { color: red }' + + 'a~ b { color: red }' + + 'a ~b { color: red }' + + 'a ~b+ c>d { color: red }' + ), + 'a >\nb { color: red }' + + 'a >\nb { color: red }' + + 'a >\nb { color: red }' + + 'a +\nb { color: red }' + + 'a +\nb { color: red }' + + 'a +\nb { color: red }' + + 'a ~\nb { color: red }' + + 'a ~\nb { color: red }' + + 'a ~\nb { color: red }' + + 'a ~\nb +\nc >\nd { color: red }' + ); + }); +}); diff --git a/node_modules/csscomb/test/element-case.js b/node_modules/csscomb/test/element-case.js new file mode 100644 index 0000000..27fac09 --- /dev/null +++ b/node_modules/csscomb/test/element-case.js @@ -0,0 +1,51 @@ +var Comb = require('../lib/csscomb'); +var assert = require('assert'); + +describe('options/element-case', function() { + var comb; + + beforeEach(function() { + comb = new Comb(); + }); + + it('Invalid String should not change case of elements', function() { + comb.configure({ 'element-case': 'foobar' }); + assert.equal( + comb.processString( + 'LI a { color : red }' + ), + 'LI a { color : red }' + ); + }); + + it('Should switch tag name to upper case', function() { + comb.configure({ 'element-case': 'upper' }); + assert.equal( + comb.processString( + 'div { color: #fff }' + ), + 'DIV { color: #fff }' + ); + }); + + it('Should switch tag name to lower case', function() { + comb.configure({ 'element-case': 'lower' }); + assert.equal( + comb.processString( + 'DIV { color: #FFF }' + ), + 'div { color: #FFF }' + ); + }); + + it('Should switch element-case in complex rules', function() { + comb.configure({ 'element-case': 'lower' }); + assert.equal( + comb.processString( + 'UL > LI > .foo:not(A) { color: red }' + ), + 'ul > li > .foo:not(a) { color: red }' + ); + }); + +}); diff --git a/node_modules/csscomb/test/eof-newline.js b/node_modules/csscomb/test/eof-newline.js new file mode 100644 index 0000000..9ed5f3f --- /dev/null +++ b/node_modules/csscomb/test/eof-newline.js @@ -0,0 +1,34 @@ +var Comb = require('../lib/csscomb'); +var assert = require('assert'); + +describe('options/eof-newline', function() { + var comb; + beforeEach(function() { + comb = new Comb(); + }); + it('Invalid value should not change trim trailing brac', function() { + comb.configure({ 'eof-newline': 'foobar' }); + assert.equal( + comb.processString('a { color: red } \n'), + 'a { color: red } \n' + ); + }); + it('Boolean true value should insert line-break at eof', function() { + comb.configure({ 'eof-newline': true }); + assert.equal( + comb.processString( + 'a {color:red} ' + ), + 'a {color:red} \n' + ); + }); + it('Boolean false value should remove line-break from eof', function() { + comb.configure({ 'eof-newline': false }); + assert.equal( + comb.processString( + 'a {color:red} \n' + ), + 'a {color:red} ' + ); + }); +}); diff --git a/node_modules/csscomb/test/integral.expect.css b/node_modules/csscomb/test/integral.expect.css new file mode 100644 index 0000000..9d161b4 --- /dev/null +++ b/node_modules/csscomb/test/integral.expect.css @@ -0,0 +1,148 @@ +/* foobar */ +@media all and (min-width:0) +{ + .radio-button_theme_normal .radio-button__radio:before + { + background: rgba(0,0,0,.4); + background: -webkit-linear-gradient(top, rgba(0,0,0,.2) 0,rgba(0,0,0,.4) 100%); + background: -moz-linear-gradient(top, rgba(0,0,0,.2) 0, rgba(0,0,0,.4) 100%); + background: -o-linear-gradient(top, rgba(0,0,0,.2) 0,rgba(0,0,0,.4) 100%); + background: linear-gradient(to bottom, rgba(0,0,0,.2) 0,rgba(0,0,0,.4) 100%); + -moz-box-shadow: 0 1px 0 rgba(0,0,0,.07); + box-shadow: 0 1px 0 rgba(0,0,0,.07); + } + + /* :after — фон */ + .radio-button_theme_normal .radio-button__radio:after + { + background: #fff; + background: -webkit-linear-gradient(top, #fff 0,#eee 100%); + background: -moz-linear-gradient(top, #fff 0, #eee 100%); + background: -o-linear-gradient(top, #fff 0,#eee 100%); + background: linear-gradient(to bottom, #fff 0,#eee 100%); + } + + /* _focused_yes */ + .radio-button_theme_normal .radio-button__radio_focused_yes:before + { + -moz-box-shadow: 0 0 6px 2px rgba(255,204,0,.7), 0 1px 0 rgba(0,0,0,.07); + box-shadow: 0 0 6px 2px rgba(255,204,0,.7), 0 1px 0 rgba(0,0,0,.07); + } +} + +/* Фигурные скобки. Вариант 1 */ +a, b, i /* foobar */ +{ + margin: 0; + padding: 0; +} +div p +{ + font-size: 1px; + + top: 0; +} +div p em +{ + font-style: italic; + + border-bottom: 1px solid red; +} + +@media all and (min-width:0) +{ + /* В нажатом состоянии смещается вниз на 1px вся кнопка, текст не смещается */ + .button_pressed_yes.button_shadow_yes + { + top: 1px; + } + + .button_pressed_yes.button_shadow_yes .button__text + { + top: 0; + } +} + +@media all /* media */ +{ /* foobar */ + .input__control + { + font-size: 100%; + + position: relative; + z-index: 3; + + width: 100%; + margin: 0; + + color: #000; + } +} + +@media screen and (min-width: 35em) /* screen */, + print and (min-width: 40em) /* print */ +{ /* foobar */ + .input__control + { + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: .4em 0; + + border: 0; + outline: 0; + background: none; + } +} + +/* Фигурные скобки. Вариант 2 */ +div +{ + margin: 0; + padding: 0; +} +div p +{ + font-size: 1px; + + top: 0; +} +div p em +{ + font-style: italic;/* inline comment*/ + + border-bottom: 1px solid red; +} + +/* Фигурные скобки. Вариант 3 */ +div +{ + margin: 0; + padding: 0; +} +/* foo */ +div ~ p +{ + font-size: 1px; + + top: 0; +} +div > p + em +{ + /* upline comment*/ + font-style: italic; + + border-bottom: 1px solid red; /* trololo */ /* trololo */ +} + +a:not(b) +{ + top: 0;/* ololo */ + + margin: 0; +} +b +{ + top: 0/* trololo */; + + margin: 0; +} diff --git a/node_modules/csscomb/test/integral.js b/node_modules/csscomb/test/integral.js new file mode 100644 index 0000000..bd79b60 --- /dev/null +++ b/node_modules/csscomb/test/integral.js @@ -0,0 +1,26 @@ +var Comb = require('../lib/csscomb'); +var assert = require('assert'); +var vow = require('vow'); +var vfs = require('vow-fs'); + +describe('integral test', function() { + var comb; + it('Process result must be equal to expect.css', function(done) { + comb = new Comb(); + comb.configure(require('../.csscomb.json')); + vow.all(['origin', 'expect'].map(function(type) { + var fileName = './test/integral.' + type + '.css'; + return vfs.read(fileName, 'utf8').then(function(data) { + return data; + }); + })) + .then(function(results) { + try { + assert.equal(comb.processString(results[0]), results[1]); + done(); + } catch (e) { + done(e); + } + }); + }); +}); diff --git a/node_modules/csscomb/test/integral.origin.css b/node_modules/csscomb/test/integral.origin.css new file mode 100644 index 0000000..5c126da --- /dev/null +++ b/node_modules/csscomb/test/integral.origin.css @@ -0,0 +1,127 @@ +/* foobar */ +@media all and (min-width:0px) {.radio-button_theme_normal .radio-button__radio:before + { + background: rgba(0,0,0,0.4); + background: -webkit-linear-gradient(top, rgba(0,0,0,0.2) 0,rgba(0,0,0,0.4) 100%); + background: -moz-linear-gradient(top, rgba(0,0,0,0.2) 0, rgba(0,0,0,0.4) 100%); + background: -o-linear-gradient(top, rgba(0,0,0,0.2) 0,rgba(0,0,0,0.4) 100%); + background: linear-gradient(to bottom, rgba(0,0,0,0.2) 0,rgba(0,0,0,0.4) 100%); + + -moz-box-shadow: 0 1px 0 rgba(0,0,0,.07); + box-shadow: 0 1px 0 rgba(0,0,0,.07); + } + + /* :after — фон */ + .radio-button_theme_normal .radio-button__radio:after + { + background: #fFf; + background: -webkit-linear-gradient(top, #FffFff 0,#eeeeEe 100%); + background: -moz-linear-gradient(top, #fff 0, #eEe 100%); + background: -o-linear-gradient(top, #fff 0,#eee 100%); + background: linear-gradient(to bottom, #ffffff 0,#eeEeee 100%); + } + + /* _focused_yes */ + .radio-button_theme_normal .radio-button__radio_focused_yes:before + { + -moz-box-shadow: 0 0 6px 2px rgba(255,204,0,.7), 0px 1px 0px rgba(0,0,0,.07); + box-shadow: 0 0 6px 2px rgba(255,204,0,.7), 0px 1px 0px rgba(0,0,0,.07); + } + +} + +/* Фигурные скобки. Вариант 1 */ +a, b, i /* foobar */ { + padding:0; + margin:0; + } + div p{ + font-size:1px; + top:0; + } + div p em{ + font-style:italic; + border-bottom:1px solid red; +} + +@media all and (min-width:0px){ + /* В нажатом состоянии смещается вниз на 1px вся кнопка, текст не смещается */ + .button_pressed_yes.button_shadow_yes + { + top: 1px; + } + + .button_pressed_yes.button_shadow_yes .button__text + { + top: 0; + } +} + +@media all /* media */ + { /* foobar */ +.input__control +{ + color: #000; + font-size: 100%; + margin: 0; + position: relative; + width: 100%; + z-index: 3; +}} + +@media screen and (min-width: 35em) /* screen */, + print and (min-width: 40em) /* print */ { /* foobar */ +.input__control +{ + -moz-box-sizing: border-box; + background: none; + border: 0; + box-sizing: border-box; + outline: 0; + padding: 0.4em 0; +} +}.empty-rule{} + +/* Фигурные скобки. Вариант 2 */ +div +{ + padding:0; + margin:0; +} + div p + { + font-size:1px; + top:0; + } + div p em + { + font-style:italic;/* inline comment*/ + border-bottom:1px solid red; + } + +/* Фигурные скобки. Вариант 3 */ +div { + padding:0; + margin:0; +} +/* foo */ div~p { + font-size:1px; + top:0 + } + div> P +EM { + /* upline comment*/ + font-style:italic; + + border-bottom:1px solid red /* trololo */ /* trololo */ + } + + a:not(B){ +top: 0;/* ololo */margin :0;} + b + { +top :0/* trololo */;margin : 0} +.empty-rule{} + + + + diff --git a/node_modules/csscomb/test/leading-zero.js b/node_modules/csscomb/test/leading-zero.js new file mode 100644 index 0000000..96c6ff0 --- /dev/null +++ b/node_modules/csscomb/test/leading-zero.js @@ -0,0 +1,31 @@ +var Comb = require('../lib/csscomb'); +var assert = require('assert'); + +describe('options/leading-zero', function() { + var comb; + + beforeEach(function() { + comb = new Comb(); + }); + + it('Should add leading zero in dimensions', function() { + comb.configure({ 'leading-zero': true }); + assert.equal( + comb.processString( + 'div { margin: .5em }' + ), + 'div { margin: 0.5em }' + ); + }); + + it('Should remove leading zero in dimensions', function() { + comb.configure({ 'leading-zero': false }); + assert.equal( + comb.processString( + 'div { margin: 0.5em }' + ), + 'div { margin: .5em }' + ); + }); + +}); diff --git a/node_modules/csscomb/test/remove-empty-rulesets.js b/node_modules/csscomb/test/remove-empty-rulesets.js new file mode 100644 index 0000000..ec9ecea --- /dev/null +++ b/node_modules/csscomb/test/remove-empty-rulesets.js @@ -0,0 +1,99 @@ +var Comb = require('../lib/csscomb'); +var assert = require('assert'); + +describe('options/remove-empty-rulesets', function() { + var comb; + + beforeEach(function() { + comb = new Comb(); + }); + + describe('configured with invalid value', function() { + beforeEach(function() { + comb.configure({ 'remove-empty-rulesets': 'foobar' }); + }); + + it('should not remove empty ruleset', function() { + assert.equal(comb.processString('a { width: 10px; } b {}'), 'a { width: 10px; } b {}'); + }); + }); + + describe('configured with Boolean "true" value', function() { + beforeEach(function() { + comb.configure({ 'remove-empty-rulesets': true }); + }); + + it('should remove empty ruleset', function() { + assert.equal(comb.processString(' b {} '), ' '); + }); + + it('should leave ruleset with declarations', function() { + assert.equal(comb.processString('a { width: 10px; }\nb {} '), 'a { width: 10px; }\n '); + }); + + it('should leave ruleset with comments', function() { + assert.equal(comb.processString('a { /* comment */ }\nb {} '), 'a { /* comment */ }\n '); + }); + }); +}); + +describe('options/remove-empty-rulesets AST manipulation', function() { + var rule; + var nodeContent; + + beforeEach(function() { + rule = require('../lib/options/remove-empty-rulesets.js'); + }); + + describe('merge adjacent whitespace', function() { + it('should do nothing with empty content', function() { + nodeContent = []; + rule._mergeAdjacentWhitespace(nodeContent); + assert.deepEqual(nodeContent, []); + }); + + it('should do nothing with only one whitespace', function() { + nodeContent = [['s', ' ']]; + rule._mergeAdjacentWhitespace(nodeContent); + assert.deepEqual(nodeContent, [['s', ' ']]); + }); + + it('should merge two adjacent whitespaces', function() { + nodeContent = [['s', ' '], ['s', ' \n']]; + rule._mergeAdjacentWhitespace(nodeContent); + assert.deepEqual(nodeContent, [['s', ' \n']]); + }); + + it('should merge three adjacent whitespaces', function() { + nodeContent = [['s', ' '], ['s', ' \n'], ['s', ' \n']]; + rule._mergeAdjacentWhitespace(nodeContent); + assert.deepEqual(nodeContent, [['s', ' \n \n']]); + }); + }); + + describe('remove empty rulesets', function() { + it('should do nothing with empty content', function() { + nodeContent = []; + rule._removeEmptyRulesets(nodeContent); + assert.deepEqual(nodeContent, []); + }); + + it('should do nothing with no rulesets', function() { + nodeContent = [['s', ' ']]; + rule._removeEmptyRulesets(nodeContent); + assert.deepEqual(nodeContent, [['s', ' ']]); + }); + + it('should remove empty ruleset', function() { + nodeContent = [['ruleset', []]]; + rule._removeEmptyRulesets(nodeContent); + assert.deepEqual(nodeContent, []); + }); + + it('should remove two empty rulesets', function() { + nodeContent = [['s', ' '], ['ruleset', []], ['s', ' \n'], ['ruleset', []]]; + rule._removeEmptyRulesets(nodeContent); + assert.deepEqual(nodeContent, [['s', ' '], ['s', ' \n']]); + }); + }); +}); diff --git a/node_modules/csscomb/test/rule-indent.js b/node_modules/csscomb/test/rule-indent.js new file mode 100644 index 0000000..8c44f94 --- /dev/null +++ b/node_modules/csscomb/test/rule-indent.js @@ -0,0 +1,52 @@ +var Comb = require('../lib/csscomb'); +var assert = require('assert'); + +describe('options/rule-indent', function() { + var comb; + beforeEach(function() { + comb = new Comb(); + }); + it('Invalid Number value should not change rule indent', function() { + comb.configure({ 'rule-indent': 3.5 }); + assert.equal( + comb.processString('a {\n color: red }'), + 'a {\n color: red }' + ); + }); + it('Invalid String value should not change rule indent', function() { + comb.configure({ 'rule-indent': 'foobar' }); + assert.equal( + comb.processString('a {\n color: red }'), + 'a {\n color: red }' + ); + }); + it('True Boolean value should set 4 spaces indent', function() { + comb.configure({ 'rule-indent': true }); + assert.equal( + comb.processString('a {\n color: red }'), + 'a {\n color: red }' + ); + }); + it('Valid Number value should set equal space indent', function() { + comb.configure({ 'rule-indent': 3 }); + assert.equal( + comb.processString('a {\n color: red }'), + 'a {\n color: red }' + ); + }); + it('Valid String value should set equal indent', function() { + comb.configure({ 'rule-indent': '\t' }); + assert.equal( + comb.processString( + 'a{color:red;background:#fff}\n' + + 'a { color: red; background: #fff; }\n' + + 'a {\ncolor:red;\n\nbackground: #fff}\n' + + 'a { /* foo */ color:red; /* bar */\n\nbackground: #fff\n}\n' + ), + 'a{\n\tcolor:red;\n\tbackground:#fff}\n' + + 'a {\n\tcolor: red;\n\tbackground: #fff; }\n' + + 'a {\n\tcolor:red;\n\n\tbackground: #fff}\n' + + 'a { /* foo */\n\tcolor:red; /* bar */\n\n\tbackground: #fff\n}\n' + ); + }); +}); diff --git a/node_modules/csscomb/test/sort-order.js b/node_modules/csscomb/test/sort-order.js new file mode 100644 index 0000000..d1e1bbd --- /dev/null +++ b/node_modules/csscomb/test/sort-order.js @@ -0,0 +1,146 @@ +var Comb = require('../lib/csscomb'); +var assert = require('assert'); + +describe('options/sort-order', function() { + + var comb; + + beforeEach(function() { + comb = new Comb(); + }); + + it('Should be in expected order in case of 1 group', function() { + + var config = { + 'sort-order': [ + ['position', 'z-index'] + ] + }; + + var input = 'a\n' + + '{\n' + + '\tz-index: 2;\n' + + '\tposition: absolute;\n' + + '}'; + + var expected = 'a\n' + + '{\n' + + '\tposition: absolute;\n' + + '\tz-index: 2;\n' + + '}'; + + comb.configure(config); + assert.equal(comb.processString(input), expected); + + }); + + it('Shuld be in expected order in case of multiple groups', function() { + + var config = { + 'sort-order': [ + ['position', 'z-index'], + ['width', 'height'] + ] + }; + + var input = 'a\n' + + '{\n' + + '\tz-index: 2;\n' + + '\tposition: absolute;\n' + + '\theight: 2px;\n' + + '\twidth: 2px;\n' + + '}'; + + var expected = 'a\n' + + '{\n' + + '\tposition: absolute;\n' + + '\tz-index: 2;\n' + + '\n' + + '\twidth: 2px;\n' + + '\theight: 2px;\n' + + '}'; + + comb.configure(config); + assert.equal(comb.processString(input), expected); + + }); + + it('Should work correctly with comments in case of 1 group', function() { + + var config = { + 'sort-order': [ + ['border-bottom', 'font-style'], + ] + }; + + var input = 'div p em {\n' + + '\t/* upline comment */\n' + + '\tfont-style:italic;\n' + + '\tborder-bottom:1px solid red /* trololo */ /* trololo */\n' + + '}'; + + var expected = 'div p em {\n' + + '\tborder-bottom:1px solid red /* trololo */ /* trololo */\n' + + '\t/* upline comment */\n' + + '\tfont-style:italic;\n' + + '}'; + + comb.configure(config); + assert.equal(comb.processString(input), expected); + + }); + + it('Should work correctly with comments in case of multiple groups', function() { + + var config = { + 'sort-order': [ + ['margin'], + ['padding'] + ] + }; + + var input = 'a, b, i /* foobar */\n' + + '{\n' + + ' padding: 0;\n' + + ' margin: 0;\n' + + ' }'; + + var expected = 'a, b, i /* foobar */\n' + + '{\n' + + ' margin: 0;\n' + + '\n' + + ' padding: 0;\n' + + ' }'; + + comb.configure(config); + assert.equal(comb.processString(input), expected); + + }); + + it('Should replace custom delimiters by ours', function() { + + var config = { + 'sort-order': [ + ['margin'], + ['padding'] + ] + }; + + var input = 'div p em {\n' + + '\tpadding: 1px;\n' + + ' \n' + + '\tmargin: 1px;\n' + + '}'; + + var expected = 'div p em {\n' + + '\tmargin: 1px;\n' + + '\n' + + '\tpadding: 1px;\n' + + '}'; + + comb.configure(config); + assert.equal(comb.processString(input), expected); + + }); + +}); diff --git a/node_modules/csscomb/test/stick-brace.js b/node_modules/csscomb/test/stick-brace.js new file mode 100644 index 0000000..29c52f9 --- /dev/null +++ b/node_modules/csscomb/test/stick-brace.js @@ -0,0 +1,47 @@ +var Comb = require('../lib/csscomb'); +var assert = require('assert'); + +describe('options/stick-brace', function() { + var comb; + beforeEach(function() { + comb = new Comb(); + }); + it('Invalid String should not change space before brace', function() { + comb.configure({ 'stick-brace': 'foobar' }); + assert.equal( + comb.processString('a { color: red }'), + 'a { color: red }' + ); + }); + it('True Boolean value should set 1 space before brace', function() { + comb.configure({ 'stick-brace': true }); + assert.equal( + comb.processString('a{color:red }'), + 'a {color:red }' + ); + }); + it('Valid Number value should set equal space before brace', function() { + comb.configure({ 'stick-brace': 0 }); + assert.equal( + comb.processString('a {color:red }'), + 'a{color:red }' + ); + }); + it('Valid String value should set equal space before brace', function() { + comb.configure({ 'stick-brace': '\n' }); + assert.equal( + comb.processString( + 'a{ color: red }' + + 'a, b /* i */ { color: red; }' + + 'a \t\t \n{color:red\n \n}' + + 'a /* foo */ {color:red ;\n}' + + '@media all { .input__control { color: #000;\n \n }\t}' + ), + 'a\n{ color: red }' + + 'a, b /* i */\n{ color: red; }' + + 'a\n{color:red\n \n}' + + 'a /* foo */\n{color:red ;\n}' + + '@media all\n{ .input__control\n{ color: #000;\n \n }\t}' + ); + }); +}); diff --git a/node_modules/csscomb/test/strip-spaces.js b/node_modules/csscomb/test/strip-spaces.js new file mode 100644 index 0000000..6090272 --- /dev/null +++ b/node_modules/csscomb/test/strip-spaces.js @@ -0,0 +1,38 @@ +var Comb = require('../lib/csscomb'); +var assert = require('assert'); + +describe('options/strip-space', function() { + var comb; + beforeEach(function() { + comb = new Comb(); + }); + it('Invalid value should not trim trailing spaces', function() { + comb.configure({ 'strip-spaces': 'foobar' }); + assert.equal( + comb.processString('a { color: red } \n'), + 'a { color: red } \n' + ); + }); + it('Boolean true value should trim all trailing spaces', function() { + comb.configure({ 'strip-spaces': true }); + assert.equal( + comb.processString( + 'a { color: red } \n' + + 'a{color:red}\t /* foobar */\t \n' + + 'a {color:red} \n \n' + ), + 'a { color: red }\n' + + 'a{color:red}\t /* foobar */\n' + + 'a {color:red}\n' + ); + }); + it('Boolean true value should trim trailing spaces at eof', function() { + comb.configure({ 'strip-spaces': true }); + assert.equal( + comb.processString( + 'a {color:red} ' + ), + 'a {color:red}' + ); + }); +}); diff --git a/node_modules/csscomb/test/unitless-zero.js b/node_modules/csscomb/test/unitless-zero.js new file mode 100644 index 0000000..6e6b2b9 --- /dev/null +++ b/node_modules/csscomb/test/unitless-zero.js @@ -0,0 +1,45 @@ +var Comb = require('../lib/csscomb'); +var assert = require('assert'); + +describe('options/unitless-zero', function() { + var comb; + + beforeEach(function() { + comb = new Comb(); + }); + + it('Should remove units in zero-valued dimensions', function() { + comb.configure({ 'unitless-zero': true }); + assert.equal( + comb.processString( + 'div { margin: 0em; padding: 0px }' + ), + 'div { margin: 0; padding: 0 }' + ); + assert.equal( + comb.processString( + 'div { margin: 0% }' + ), + 'div { margin: 0 }' + ); + }); + + it('Should remove units in zero-valued media-query params', function() { + comb.configure({ 'unitless-zero': true }); + assert.equal( + comb.processString('@media all and (min-width: 0px) { div { margin: 0em; padding: 0px } }'), + '@media all and (min-width: 0) { div { margin: 0; padding: 0 } }' + ); + }); + + it('Should not remove units (degs) in rotate property', function() { + comb.configure({ 'unitless-zero': true }); + assert.equal( + comb.processString( + 'div { -webkit-transform: rotate(0deg); }' + ), + 'div { -webkit-transform: rotate(0deg); }' + ); + }); + +}); diff --git a/node_modules/csscomb/test/vendor-prefix-align.js b/node_modules/csscomb/test/vendor-prefix-align.js new file mode 100644 index 0000000..d5cf97b --- /dev/null +++ b/node_modules/csscomb/test/vendor-prefix-align.js @@ -0,0 +1,45 @@ +var Comb = require('../lib/csscomb'); +var fs = require('fs'); +var assert = require('assert'); + +describe('options/vendor-prefix-align', function() { + var comb; + + beforeEach(function() { + var config = { + 'vendor-prefix-align': true + }; + + comb = new Comb(); + comb.configure(config); + }); + + it('Should correctly align prefixes in properties', function() { + var input = fs.readFileSync('./test/vendor-prefix-align/property-align.css', 'utf8'); + var expected = fs.readFileSync('./test/vendor-prefix-align/property-align.expected.css', 'utf8'); + + assert.equal(comb.processString(input), expected); + }); + + it('Should correctly align prefixes in values', function() { + var input = fs.readFileSync('./test/vendor-prefix-align/value-align.css', 'utf8'); + var expected = fs.readFileSync('./test/vendor-prefix-align/value-align.expected.css', 'utf8'); + + assert.equal(comb.processString(input), expected); + }); + + it('Should not touch already align prefixes', function() { + var input = fs.readFileSync('./test/vendor-prefix-align/already-aligned.css', 'utf8'); + var expected = fs.readFileSync('./test/vendor-prefix-align/already-aligned.expected.css', 'utf8'); + + assert.equal(comb.processString(input), expected); + }); + + it('Should always correctly align prefixes', function() { + var input = fs.readFileSync('./test/vendor-prefix-align/complex.css', 'utf8'); + var expected = fs.readFileSync('./test/vendor-prefix-align/complex.expected.css', 'utf8'); + + assert.equal(comb.processString(input), expected); + }); + +}); diff --git a/node_modules/csscomb/test/vendor-prefix-align/already-aligned.css b/node_modules/csscomb/test/vendor-prefix-align/already-aligned.css new file mode 100644 index 0000000..35b7eee --- /dev/null +++ b/node_modules/csscomb/test/vendor-prefix-align/already-aligned.css @@ -0,0 +1,11 @@ +.radio-button_theme_normal .radio-button__radio:before +{ + background: rgba(0,0,0,.4); + background: -webkit-linear-gradient(top, rgba(0,0,0,.2) 0,rgba(0,0,0,.4) 100%); + background: -moz-linear-gradient(top, rgba(0,0,0,.2) 0, rgba(0,0,0,.4) 100%); + background: -o-linear-gradient(top, rgba(0,0,0,.2) 0,rgba(0,0,0,.4) 100%); + background: linear-gradient(to bottom, rgba(0,0,0,.2) 0,rgba(0,0,0,.4) 100%); + + -moz-box-shadow: 0 1px 0 rgba(0,0,0,.07); + box-shadow: 0 1px 0 rgba(0,0,0,.07); +} diff --git a/node_modules/csscomb/test/vendor-prefix-align/already-aligned.expected.css b/node_modules/csscomb/test/vendor-prefix-align/already-aligned.expected.css new file mode 100644 index 0000000..35b7eee --- /dev/null +++ b/node_modules/csscomb/test/vendor-prefix-align/already-aligned.expected.css @@ -0,0 +1,11 @@ +.radio-button_theme_normal .radio-button__radio:before +{ + background: rgba(0,0,0,.4); + background: -webkit-linear-gradient(top, rgba(0,0,0,.2) 0,rgba(0,0,0,.4) 100%); + background: -moz-linear-gradient(top, rgba(0,0,0,.2) 0, rgba(0,0,0,.4) 100%); + background: -o-linear-gradient(top, rgba(0,0,0,.2) 0,rgba(0,0,0,.4) 100%); + background: linear-gradient(to bottom, rgba(0,0,0,.2) 0,rgba(0,0,0,.4) 100%); + + -moz-box-shadow: 0 1px 0 rgba(0,0,0,.07); + box-shadow: 0 1px 0 rgba(0,0,0,.07); +} diff --git a/node_modules/csscomb/test/vendor-prefix-align/complex.css b/node_modules/csscomb/test/vendor-prefix-align/complex.css new file mode 100644 index 0000000..3f896df --- /dev/null +++ b/node_modules/csscomb/test/vendor-prefix-align/complex.css @@ -0,0 +1,30 @@ +@media all and (min-width:0) +{ + .radio-button_theme_normal .radio-button__radio:before + { + background: rgba(0,0,0,.4); + background: -webkit-linear-gradient(top, rgba(0,0,0,.2) 0,rgba(0,0,0,.4) 100%); + background: -moz-linear-gradient(top, rgba(0,0,0,.2) 0, rgba(0,0,0,.4) 100%); + background: -o-linear-gradient(top, rgba(0,0,0,.2) 0,rgba(0,0,0,.4) 100%); + background: linear-gradient(to bottom, rgba(0,0,0,.2) 0,rgba(0,0,0,.4) 100%); + -moz-box-shadow: 0 1px 0 rgba(0,0,0,.07); + box-shadow: 0 1px 0 rgba(0,0,0,.07); + } + + /* :after — фон */ + .radio-button_theme_normal .radio-button__radio:after + { + background: #fff; + background: -webkit-linear-gradient(top, #fff 0,#eee 100%); + background: -moz-linear-gradient(top, #fff 0, #eee 100%); + background: -o-linear-gradient(top, #fff 0,#eee 100%); + background: linear-gradient(to bottom, #fff 0,#eee 100%); + } + + /* _focused_yes */ + .radio-button_theme_normal .radio-button__radio_focused_yes:before + { + -moz-box-shadow: 0 0 6px 2px rgba(255,204,0,.7), 0 1px 0 rgba(0,0,0,.07); + box-shadow: 0 0 6px 2px rgba(255,204,0,.7), 0 1px 0 rgba(0,0,0,.07); + } +} diff --git a/node_modules/csscomb/test/vendor-prefix-align/complex.expected.css b/node_modules/csscomb/test/vendor-prefix-align/complex.expected.css new file mode 100644 index 0000000..688ecd6 --- /dev/null +++ b/node_modules/csscomb/test/vendor-prefix-align/complex.expected.css @@ -0,0 +1,30 @@ +@media all and (min-width:0) +{ + .radio-button_theme_normal .radio-button__radio:before + { + background: rgba(0,0,0,.4); + background: -webkit-linear-gradient(top, rgba(0,0,0,.2) 0,rgba(0,0,0,.4) 100%); + background: -moz-linear-gradient(top, rgba(0,0,0,.2) 0, rgba(0,0,0,.4) 100%); + background: -o-linear-gradient(top, rgba(0,0,0,.2) 0,rgba(0,0,0,.4) 100%); + background: linear-gradient(to bottom, rgba(0,0,0,.2) 0,rgba(0,0,0,.4) 100%); + -moz-box-shadow: 0 1px 0 rgba(0,0,0,.07); + box-shadow: 0 1px 0 rgba(0,0,0,.07); + } + + /* :after — фон */ + .radio-button_theme_normal .radio-button__radio:after + { + background: #fff; + background: -webkit-linear-gradient(top, #fff 0,#eee 100%); + background: -moz-linear-gradient(top, #fff 0, #eee 100%); + background: -o-linear-gradient(top, #fff 0,#eee 100%); + background: linear-gradient(to bottom, #fff 0,#eee 100%); + } + + /* _focused_yes */ + .radio-button_theme_normal .radio-button__radio_focused_yes:before + { + -moz-box-shadow: 0 0 6px 2px rgba(255,204,0,.7), 0 1px 0 rgba(0,0,0,.07); + box-shadow: 0 0 6px 2px rgba(255,204,0,.7), 0 1px 0 rgba(0,0,0,.07); + } +} diff --git a/node_modules/csscomb/test/vendor-prefix-align/property-align.css b/node_modules/csscomb/test/vendor-prefix-align/property-align.css new file mode 100644 index 0000000..b19d6b7 --- /dev/null +++ b/node_modules/csscomb/test/vendor-prefix-align/property-align.css @@ -0,0 +1,8 @@ +a +{ + color: #fff; + + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} diff --git a/node_modules/csscomb/test/vendor-prefix-align/property-align.expected.css b/node_modules/csscomb/test/vendor-prefix-align/property-align.expected.css new file mode 100644 index 0000000..2580857 --- /dev/null +++ b/node_modules/csscomb/test/vendor-prefix-align/property-align.expected.css @@ -0,0 +1,8 @@ +a +{ + color: #fff; + + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} diff --git a/node_modules/csscomb/test/vendor-prefix-align/value-align.css b/node_modules/csscomb/test/vendor-prefix-align/value-align.css new file mode 100644 index 0000000..f15a362 --- /dev/null +++ b/node_modules/csscomb/test/vendor-prefix-align/value-align.css @@ -0,0 +1,10 @@ +b +{ + color: #fff; + + background: -webkit-linear-gradient(linear, left top, right top, color-stop(0,rgba(255,255,255,0)), color-stop(20%, #fff)); + background: -moz-linear-gradient(left, rgba(255,255,255,0) 0, #fff 20%); + background: -o-linear-gradient(left, rgba(255,255,255,0) 0, #fff 20%); + background: -ms-linear-gradient(left, rgba(255,255,255,0) 0, #fff 20%); + background: linear-gradient(to right, rgba(255,255,255,0) 0, #fff 20%); +} diff --git a/node_modules/csscomb/test/vendor-prefix-align/value-align.expected.css b/node_modules/csscomb/test/vendor-prefix-align/value-align.expected.css new file mode 100644 index 0000000..60aba2e --- /dev/null +++ b/node_modules/csscomb/test/vendor-prefix-align/value-align.expected.css @@ -0,0 +1,10 @@ +b +{ + color: #fff; + + background: -webkit-linear-gradient(linear, left top, right top, color-stop(0,rgba(255,255,255,0)), color-stop(20%, #fff)); + background: -moz-linear-gradient(left, rgba(255,255,255,0) 0, #fff 20%); + background: -o-linear-gradient(left, rgba(255,255,255,0) 0, #fff 20%); + background: -ms-linear-gradient(left, rgba(255,255,255,0) 0, #fff 20%); + background: linear-gradient(to right, rgba(255,255,255,0) 0, #fff 20%); +} diff --git a/package.json b/package.json index 2e5ddd2..9865ca1 100644 --- a/package.json +++ b/package.json @@ -1,16 +1,19 @@ { - "name": "csscomb", - "version": "1.0.2", + "name": "csscomb.chocmixin", + "version": "2.0.0", "description": "Sort CSS properties in specific order from Chocolat", "main": "init.js", "repository": { "type": "git", - "url": "https://github.com/drudge/csscomb.chocmixin.git" + "url": "https://github.com/csscomb/csscomb.chocmixin.git" }, "keywords": [ "css", "csscomb" ], "author": "Nicholas Penree ", - "license": "MIT" + "license": "MIT", + "dependencies": { + "csscomb": "~1.0.0" + } } diff --git a/run.php b/run.php deleted file mode 100644 index f420b97..0000000 --- a/run.php +++ /dev/null @@ -1,7 +0,0 @@ -csscomb($argv[1], false, null); -echo $input; -?> \ No newline at end of file