From 2a79eac920dca80655eb3151f1cd921c03063f46 Mon Sep 17 00:00:00 2001
From: Michael Robinson
Date: Sat, 16 May 2015 23:00:19 +1200
Subject: [PATCH 01/10] Removed PHP related code
---
plugin/exec.php | 6 -
plugin/lib/csscomb.php | 1581 ----------------------------------------
2 files changed, 1587 deletions(-)
delete mode 100644 plugin/exec.php
delete mode 100644 plugin/lib/csscomb.php
diff --git a/plugin/exec.php b/plugin/exec.php
deleted file mode 100644
index d565eaa..0000000
--- a/plugin/exec.php
+++ /dev/null
@@ -1,6 +0,0 @@
-csscomb($input);
-?>
diff --git a/plugin/lib/csscomb.php b/plugin/lib/csscomb.php
deleted file mode 100644
index d0a7cbb..0000000
--- a/plugin/lib/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;
- }
-
-}
-
From 32e11b77210472af7b577a74674ab5f708eae1d0 Mon Sep 17 00:00:00 2001
From: Michael Robinson
Date: Sat, 16 May 2015 23:00:31 +1200
Subject: [PATCH 02/10] Refactored to use nodejs csscomb
---
plugin/csscomb.vim | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/plugin/csscomb.vim b/plugin/csscomb.vim
index 2592300..1cc9c7a 100644
--- a/plugin/csscomb.vim
+++ b/plugin/csscomb.vim
@@ -7,9 +7,13 @@
let g:CSScombPluginDir = fnamemodify(expand(""), ":h")
function! g:CSScomb(count, line1, line2)
- let content = join(getline(a:line1, a:line2), "\n")
- let res = system("php ".fnameescape(g:CSScombPluginDir."/exec.php"), content)
- let lines = split(res, "\n")
+ let content = getline(a:line1, a:line2)
+
+ let tempFile = tempname() . '.' . &filetype
+ call writefile(content, tempFile)
+ system('csscomb ' . shellescape(tempFile))
+ let lines = readfile(tempFile)
+
call setline(a:line1, lines)
endfunction
From 1dd89d982ea04f38912a5a87e86f5d437097503a Mon Sep 17 00:00:00 2001
From: Michael Robinson
Date: Sat, 16 May 2015 23:03:08 +1200
Subject: [PATCH 03/10] Updated readme
---
README.md | 25 +++++++++++++++++++++++--
1 file changed, 23 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 574ee18..6e3c826 100644
--- a/README.md
+++ b/README.md
@@ -10,9 +10,11 @@ For more info, online demo and tests see [csscomb.com](http://csscomb.com/)
## The Requirements
-CSScomb is written in pure PHP, without any external libraries or dependencies.
-See details at [wiki](https://github.com/miripiruni/CSScomb/wiki/Requirements).
+CSScomb is written in pure JavaScript. Install with:
+```BASH
+npm install -g csscomb
+```
## Installation
@@ -29,6 +31,16 @@ Add this to .vimrc:
Bundle 'git://github.com/miripiruni/CSScomb-for-Vim.git'
```
+### With NeoBundle
+Add this to .vimrc:
+```
+NeoBundle 'faceleg/vim-csscomb', {
+ \ 'build': {
+ \ 'unix': 'npm install -g csscomb',
+ \ 'mac': 'npm install -g csscomb'
+ \ }}
+```
+
### Manual without plugins manager
```
git clone https://github.com/miripiruni/CSScomb-for-Vim.git csscomb
@@ -40,3 +52,12 @@ Vim command:
```
:CSScomb
```
+
+## Suggested Configuration
+
+```VIML
+"mnemonic: 'beatify css'
+autocmd FileType css noremap bc :CSScomb
+" Automatically comb your CSS on save
+autocmd BufWritePre,FileWritePre *.css,*.scss,*.sass silent! :CSScomb
+```
From 0c9a3e746ebacd9d8b660457964765019fbacdae Mon Sep 17 00:00:00 2001
From: Michael Robinson
Date: Sat, 16 May 2015 23:10:30 +1200
Subject: [PATCH 04/10] Added mistakenly omitted call
---
plugin/csscomb.vim | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/plugin/csscomb.vim b/plugin/csscomb.vim
index 1cc9c7a..0d274a8 100644
--- a/plugin/csscomb.vim
+++ b/plugin/csscomb.vim
@@ -11,7 +11,7 @@ function! g:CSScomb(count, line1, line2)
let tempFile = tempname() . '.' . &filetype
call writefile(content, tempFile)
- system('csscomb ' . shellescape(tempFile))
+ call system('csscomb ' . shellescape(tempFile))
let lines = readfile(tempFile)
call setline(a:line1, lines)
From d6a3b4828e0ce8550bf83443e94eb9237ec2c680 Mon Sep 17 00:00:00 2001
From: Michael Robinson
Date: Sun, 24 May 2015 08:51:08 +1200
Subject: [PATCH 05/10] Fixed repo references in README
---
README.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
index 6e3c826..4949821 100644
--- a/README.md
+++ b/README.md
@@ -22,19 +22,19 @@ npm install -g csscomb
```
cd ~/.vim/bundle
-git clone https://github.com/miripiruni/CSScomb-for-Vim.git
+git clone https://github.com/csscomb/vim-csscomb.git
```
### With Vundle
Add this to .vimrc:
```
-Bundle 'git://github.com/miripiruni/CSScomb-for-Vim.git'
+Bundle 'git://github.com/csscomb/vim-csscomb.git'
```
### With NeoBundle
Add this to .vimrc:
```
-NeoBundle 'faceleg/vim-csscomb', {
+NeoBundle 'csscomb/vim-csscomb', {
\ 'build': {
\ 'unix': 'npm install -g csscomb',
\ 'mac': 'npm install -g csscomb'
@@ -43,7 +43,7 @@ NeoBundle 'faceleg/vim-csscomb', {
### Manual without plugins manager
```
-git clone https://github.com/miripiruni/CSScomb-for-Vim.git csscomb
+git clone https://github.com/csscomb/vim-csscomb.git csscomb
cp -r csscomb/plugin/* ~/.vim/plugin/
```
From 3a5b3ac072c542ffd87c3510c024964e5e53f942 Mon Sep 17 00:00:00 2001
From: Michael Robinson
Date: Sun, 24 May 2015 08:53:20 +1200
Subject: [PATCH 06/10] Updated suggested mapping comment
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 4949821..2076e6c 100644
--- a/README.md
+++ b/README.md
@@ -56,7 +56,7 @@ Vim command:
## Suggested Configuration
```VIML
-"mnemonic: 'beatify css'
+" Map bc to run CSScomb. bc stands for beautify css
autocmd FileType css noremap bc :CSScomb
" Automatically comb your CSS on save
autocmd BufWritePre,FileWritePre *.css,*.scss,*.sass silent! :CSScomb
From f8afcc7c2816cb0f46a36840c49a6b14551156b4 Mon Sep 17 00:00:00 2001
From: Michael Robinson
Date: Sun, 24 May 2015 09:01:26 +1200
Subject: [PATCH 07/10] Output csscomb error if there was one, do not attempt
to update file content if error
---
plugin/csscomb.vim | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/plugin/csscomb.vim b/plugin/csscomb.vim
index 0d274a8..dae1b6b 100644
--- a/plugin/csscomb.vim
+++ b/plugin/csscomb.vim
@@ -11,10 +11,13 @@ function! g:CSScomb(count, line1, line2)
let tempFile = tempname() . '.' . &filetype
call writefile(content, tempFile)
- call system('csscomb ' . shellescape(tempFile))
- let lines = readfile(tempFile)
-
- call setline(a:line1, lines)
+ let systemOutput = system('csscomb ' . shellescape(tempFile))
+ if len(systemOutput)
+ echoerr split(systemOutput, "\n")[1]
+ else
+ let lines = readfile(tempFile)
+ call setline(a:line1, lines)
+ endif
endfunction
command! -nargs=? -range=% CSScomb :call g:CSScomb(, , , )
From 7f48e70a10a8736b2e7bcef0487a7c3f3e8df83a Mon Sep 17 00:00:00 2001
From: Michael Robinson
Date: Mon, 25 May 2015 11:21:39 +1200
Subject: [PATCH 08/10] Updated readme with less support, removed build config
portion of NeoBundle
---
README.md | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/README.md b/README.md
index 2076e6c..5fd4c0e 100644
--- a/README.md
+++ b/README.md
@@ -34,11 +34,7 @@ Bundle 'git://github.com/csscomb/vim-csscomb.git'
### With NeoBundle
Add this to .vimrc:
```
-NeoBundle 'csscomb/vim-csscomb', {
- \ 'build': {
- \ 'unix': 'npm install -g csscomb',
- \ 'mac': 'npm install -g csscomb'
- \ }}
+NeoBundle 'csscomb/vim-csscomb'
```
### Manual without plugins manager
@@ -59,5 +55,5 @@ Vim command:
" Map bc to run CSScomb. bc stands for beautify css
autocmd FileType css noremap bc :CSScomb
" Automatically comb your CSS on save
-autocmd BufWritePre,FileWritePre *.css,*.scss,*.sass silent! :CSScomb
+autocmd BufWritePre,FileWritePre *.css,*.less,*.scss,*.sass silent! :CSScomb
```
From 6317c8ffdf15dd29f1c06d5879d67dac6b840c22 Mon Sep 17 00:00:00 2001
From: Tony Ganch
Date: Sat, 6 Jun 2015 03:07:03 +0200
Subject: [PATCH 09/10] Remove outdated docs
---
doc/csscomb.txt | 71 -------------------------------------------------
1 file changed, 71 deletions(-)
delete mode 100644 doc/csscomb.txt
diff --git a/doc/csscomb.txt b/doc/csscomb.txt
deleted file mode 100644
index 289ffba..0000000
--- a/doc/csscomb.txt
+++ /dev/null
@@ -1,71 +0,0 @@
-*csscomb.txt* CSScomb for Vim
-
-Vim plugin author: Aleksandr Batsuev
-CSScomb author: Vyacheslav Oliyancuk
-WebSite: http://csscomb.com
-Repository: http://github.com/miripiruni/CSScomb-for-Vim
-
-==============================================================================
-CONTENTS *csscomb-contents*
-
-About |csscomb-about|
-Custom sort order |csscomb-custom-sort-order|
-Install |csscomb-install|
-Usage |csscomb-usage|
-
-==============================================================================
-ABOUT *csscomb-about*
-
-The algorithm of CSScomb simulates web-technologist's actions upon working
-with CSS-code to the limit. Usually to re-order code you move lines over each
-other considering comments in the code, multilines records of property values,
-hacks and everything that could be found in the real file. CSScomb reproduces
-these actions for you. This means that the parser "thinks" as a person editing
-the text, not as a blind robot parsing CSS.
-
-For more info, online demo and tests see http://csscomb.com
-
-What can CSScomb do?
-
-* Sorts CSS-properties within the selectors according to the settings.
-
-* Treats the initial formatting of style sheets carefully.
-
-* Sorts commented properties as if they are not commented.
-
-* Moves down unknown properties in the order they are met within the selector.
- E.g.: he\ight: 100% and similar will be taken as the unknown ones.
-
-* Successfully parses @media ... {...} and any other constructions with @.
-
-* Successfully parses expressions and then moves them to the end of the
- properties in the order they are met within the framework of properties of
- one selector.
-
-==============================================================================
-CUSTOM SORT ORDER *csscomb-custom-sort-order*
-
-For adjusting plugins use one-dimensional and two-dimensional JSON arrays.
-In case of two-dimensional arrays the properties will be divided into groups
-with an empty line. In plugins you should pick open file csscomb.php
-
-==============================================================================
-INSTALL *csscomb-install*
-
-With Pathogen
- cd ~/.vim/bundle
- git clone https://github.com/miripiruni/csscomb-for-vim.git
-
-With Vundle
- Add to .vimrc:
- Bundle 'git://github.com/miripiruni/csscomb-for-vim.git'
-
-Manual without plugins manager
- git clone https://github.com/miripiruni/CSScomb-for-Vim.git csscomb
- cp -r csscomb/plugin/* ~/.vim/plugin/
-
-==============================================================================
-USAGE *csscomb-usage*
-
-For CSS resort you can use ':CSScomb' command.
-Also you can select a part of CSS file and type ':CSScomb'.
From d4c493da96ccc95bf2509b90ce14a09a5e343b9b Mon Sep 17 00:00:00 2001
From: Gertjan Reynaert
Date: Mon, 24 Aug 2015 09:57:11 +0200
Subject: [PATCH 10/10] Fix vim configuration for auto-combing
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 5fd4c0e..dca0269 100644
--- a/README.md
+++ b/README.md
@@ -55,5 +55,5 @@ Vim command:
" Map bc to run CSScomb. bc stands for beautify css
autocmd FileType css noremap bc :CSScomb
" Automatically comb your CSS on save
-autocmd BufWritePre,FileWritePre *.css,*.less,*.scss,*.sass silent! :CSScomb
+autocmd BufWritePre,FileWritePre *.css,*.less,*.scss,*.sass silent! :CSScomb
```