Исправлено несколько ошибок, возникавших только при определённых комбинациях настроек.
Доработан форматтер для "красивой ёлочки" многоуровневых правил с условиями (@media/@support/…).
Добавлены дополнительные опции форматтера/компрессора для лучшей читаемости/сжатия кода.
Расширена автоправка некоторых типовых ошибок для соответствия обрабатываемого CSS стандартам.
Улучшена работа с комментариями, добавлены опции/настройки для "продвинутого комментирования".
Частично оптимизирован код, в комплект добавлен CSS-сэмпл для "тренировки на кошках"…:)
Работоспособность проверена в редакторе Notepad++ v.6.5.1 в среде Windows XP SP3.
- исправлено несколько ошибок, возникавших только при определённых комбинациях* настроек;
* Связано с неоднозначностью обработки CSS‑файлов различной степени сложности. Часть параметров при этом могла отрабатываться не вполне корректно из‑за изменения порядка обработки отдельных правил и директив.
В частности, доработано и исправлено следующее:
— неправильное автоопределение направления конверсии, некоторые файлы "упорно не хотели" сжиматься при "нелогичной" комбинации ряда настроек (например, при неверной установке флагов обработки комментариев);
— улучшена автокоррекция пропущенных двоеточий для псевдо‑элементов, теперь проверяется весь текущий список зарезервированных слов (см.матчасть: MDN: pseudo‑elements);
— улучшена проверка и обработка пробельных отступов в условных правилах и в декларациях с вычислением суммы или разности значений с помощью функции calc(), теперь эта операция выполняется при любом направлении конверсии, как при компрессии, так и при форматировании.
- добавлено безусловное принудительное* удаление пустых комментариев (типа /* ;; */);
* Проще говоря, выполняется принудительный "вынос мусора", что улучшает качество выходного кода и уменьшает его размер. Теперь эта операция выполняется при любом направлении конверсии, как при компрессии, так и при форматировании, независимо от любых настроек очистки комментариев.
- добавлен принудительный перенос в начало файла директив и правил @charset и/или @import;
Эта операция выполняется безусловно при любом направлении конверсии, как при компрессии, так и при форматировании, независимо от любых других настроек.
Наилучший результат достигается при обработке всего исходника целиком. Выходной файл при этом приводится в соответствие со стандартами. При обработке с заменой фрагмента "по месту" это также работает, указанные директивы будут перемещены в самое начало сконвертированного фрагмента.
Для лучшего понимания смотрим матчасть: MDN: @charset и MDN: @import.
Предупреждение: есть дополнительная особенность обработки директив @charset: если их в вашем файле стилей несколько, после конверсии будет оставлена только самая первая, остальные будут принудительно удалены!
Это "самоуправство" связано с тем, что согласно стандартам в любом отдельном CSS‑файле может быть только одна такая директива и она в обязательном порядке должна находиться в первой строке файла (в самом начале).
- доработан форматтер многоуровневых правил с условиями для "красивой ёлочки" (@media/@support/…);
Теперь он достаточно корректно работает с файлами, содержащими до 4-х уровней вложения правил. Несмотря на улучшения, в сложных (и "многоэтажных") "конструкциях", всё же, могут* возникать "искривления ёлки", но "мы работаем над этим"…)
* Отметим, что возможные проблемы с отступами никак не влияют на работоспособность кода, только на его внешний вид.
- добавлена опция включения/отключения функции многоуровнего форматирования: "mlvl":1;
Работает только для форматтера, по умолчанию включена. Если не требуется "ёлочка", отключаем (0), при этом немного увеличивается скорость обработки (за счёт пропуска многократного обхода вложенных правил).
Если выключено (0), при форматировании будет выставляться только базовый отступ (1 табуляция) для директив внутри правил, строки условий и определения правил любого уровня вложения будут оставлены без отступа.
- добавлена опция включения/отключения построчного отступа для комментариев: "nlcm":0;
Работает только для компрессора, по умолчанию выключена. Если требуется повышенная читабельность сжатого кода, включаем (1), на скорость обработки эта опция практически никак не влияет.
Если включено (1), при сжатии все комментарии "отбиваются" новой строкой от любых предшествующих и последующих правил или директив. Если выключено (0), при сжатии все комментарии будут находиться в общем "потоке" директив и правил, отбивка будет зависеть только от значения флага длины строки (ключ "wrap":0, по умолчанию разбивка отключена).
Эта настройка зависит от общей настройки очистки комментариев: например, если установлен флаг "rmcm":2, любые комментарии будут безусловно удаляться!
- добавлена опция защиты самого первого комментария в исходном файле ("шапки"): "pfcm":1;
Опция работает как для компрессора, так и для форматтера, по умолчанию включена. Если сохранность "шапки" не требуется, выключаем флаг (0), при этом первый комментарий будет обрабатываться как любой другой, в зависимости от ваших настроек.
В таких комментариях обычно содержатся ссылки, контакты разработчика, копирайты и иные достаточно полезные сведения. Этот комментарий может быть достаточно длинным и сложным по структуре, поэтому, с помощью данного флага, он будет всегда сохраняться "как есть" и не будет подвержен никаким изменениям (или удалениям), зависящим от других настроек.
- добавлен флаг, включающий дополнительные функции обработки во всех режимах: "extr":1;
Флаг улучшает читаемость конечных файлов и уменьшает их размер (иногда довольно существенно).
Опция работает как для компрессора, так и для форматтера, по умолчанию включена. При этом в форматтере также будут задействованы функции расширенной обработки кода, которые в предыдущих версиях использовались только при сжатии.
Работа функций в обоих направлениях конверсии также даёт возможность получить на выходе качественный код за один проход (в более ранних версиях для этого требовалось минимум два "прогона" в разные стороны).
В частности, если флаг включен (1), в обе стороны будут работать функции сокращения незначащих нулей и функции преобразования цвето́в в короткий формат (HEX6‑HEX3 и HEX8‑HEX4).
Если вам не требуются такие преобразования или если они приводят к каким‑либо проблемам в отдельных файлах ваших стилей, просто отключите эту опцию (0).
- добавлен флаг включения автокорректора двоеточий в псевдо‑классах/элементах: "psel":1;
Опция работает как для компрессора, так и для форматтера, по умолчанию включена. При этом в форматтере также будут задействованы функции обработки "очепяток", которые в предыдущих версиях использовались только при компрессии.
Если такая проверка/коррекция вам не нужна (и если вы полностью уверены в правильности синтаксиса ваших директив), отключите этот флаг (0). При этом будет некоторое ускорение обработки ваших файлов за счёт пропуска операций проверки.
Эта настройка зависит от флага "extr":1. Если этот флаг выключен (0), автокоррекция не будет применяться при любом направлении конверсии.
- добавлен флаг включения/выключения преобразования "Box Model Hack": "bmhk":0;
Работает только для компрессора, по умолчанию выключен (0). Отключение этой функции (заложена в скрипте‑прототипе 2012 года) связано с её малой практической значимостью в современных условиях.
Функция направлена на устранения некоторых ошибок CSS в браузерах MSIE‑5/6 (для более современных браузеров не имеет смысла, в них такое исправление не требуется, а только замедляет работу компрессора).
Подробнее о проблеме можно прочитать: здесь (на английском) или вот тут (на русском).
Включайте этот флаг (1) только если вам реально требуется обработка такого фикса в вашем файле.
- добавлена автопроверка/коррекция лишних символов [.#>] в определениях правил.
Согласно стандартам, в определениях правил НЕ может быть более одного такого символа подряд (например, a##id..class>>b). Такие "задвоенные" опечатки устраняются безусловной заменой на единственный символ.
После установки и первоначальной настройки указанного плагина нужно выполнить следующие действия:
(указаны стандартные наименование пунктов меню и путей размещения плагина и скриптов)
Пока отсутствуют, но если вдруг что – не стесняемся и пишем баг‑репорты в комментариях…:)