' +'' +'' +'' +''+(OBS.pswFlag=!0,'') +'' +'' +'' +'' +'' +'' +'' +'')//-->
Скрипт-конвертер CSS на языке Python для текстового редактора Notepad++. Добавлен блок настроек и конвертер пустых правил, улучшен корректор псевдо-классов/элементов.
Добавлен блок настроек – теперь десяток флагов можно "подкрутить" самостоятельно, пробуя свои варианты. Пустые правила опционально преобразуются в комментарии (можно просто сносить этот "мусор" автоматом). Добавлена опция компрессии с ограничением заданной длины строки (например, одно правило = одна строка). Доработаны и улучшены функции форматтера (экспандера сжатого CSS), повышена читабельность результата. Оптимизирован и упрощён код и вызов отдельных функций конвертера.
Работоспособность проверена в редакторе Notepad++ v.6.5.1 в среде Windows XP SP3.
Общая цель: возможность оперативной подстройки параметров под обработку конкретных CSS‑файлов (разной сложности и содержимого), если настройки функций скрипта по умолчанию не дают желаемого результата.
Для управления настройками в скрипт добавлена переменная "set{...}", содержащая пары "ключ":"значение" (идёт сразу после "шапочных" комментариев, описание флагов присутствует, там же, как комментарии к ним). Соответственно, при работе функций проверяется текущее установленное значение каждой опции и выполняются те или иные операции.
Теперь отдельные параметры конверсии можно менять прямо в самом скрипте (открыв его на редактирование и сохраняя перед применением), регулируя работу конвертера в обоих направлениях (большинство опций предназначено для управления функциями компрессора кода).
В отношении значений параметров действует общее правило: если значение равно 0 или "" (пустая строковая переменная), соответствующая настройка считается выключенной и не применяется при конверсии. Если значение больше 0 (или непустая строка), настройка включается и при конверсии выполняется соответствующая ей функция.
Значения по умолчанию (не обязательно отключенные) выставлены на основании практического опыта работы со стилями и в большинстве случаев будут оптимальными при обработке самых разных по структуре CSS‑файлов.
Параметры применяются "на лету", сразу же после сохранения изменений, начинают действовать при первом же вызове скрипта после редактирования (перезагрузка самого редактора не требуется).
В текущей версии для изменения доступны следующие настройки: — включение/отключение резервного копирования исходного CSS‑файла перед конверсией; — управление обработкой комментариев ("как есть", сохранение только "важных" или полное удаление); — управление обработкой пустых правил как комментариев (пропуск/закомментаривание/удаление); — указание собственного маркера "важный комментарий" (в дополнение к "*", маркеру по умолчанию); — включение/выключение автокорректора псевдо‑классов и псевдо‑элементов; — включение/отключение переноса длинных строк при сжатии и "улучшатора" читабельности форматтера; — установка собственного префикса для автосохранения результатов в новый файл (обработка файла целиком); — включение/отключение флага автосохранения текущего файла при обработке выделенного текста ("по месту").
Подробнее о флагах и настройках читаем в статье: CSSMinMax : Настройка и применение.
* Правила, содержащие только определение или правила со всеми закомментаренными декларациями. Фактически не работают в браузерах и являются "балластной нагрузкой", никак не влияющей на стили страниц.
Сделано для оптимизации конечного CSS, после преобразования в комментарий такие "пустышки" исключаются из обработки браузером, за счёт этого снижается общая нагрузка при рендеринге и повышается скорость обработки стилей. Проще говоря, эта операция будет своеобразным "само‑бэкапом" пустых правил с сохранением их определений, что может быть востребовано при различных экспериментах со стилями.
Варианты обработки регулируются ключом настроек "ercm", значение ключа по умолчанию равно 2. При этом все "пустышки", независимо от их содержимого, преобразуются в "важные" комментарии, защищаемые от удаления при сжатии.
По желанию, можно задать защиту только правил со всеми закомментаренными внутренними декларациями (1), удалить все "пустышки" (0) или оставить их "как есть", без изменения (3). В последнем случае сработает автоматика очистки комментариев и все закомментаренные декларации при компрессии будут удалены** (останется только определение правил).
** Пустые закомментаренные правила и незащищённые (установкой специального маркера, "*") декларации удаляются только при сжатии, форматтер ничего не удаляет.
Опция улучшает читаемость сжатых файлов стилей и повышает удобство их отладки при экспериментах (так проще найти нужную точку в коде, если в дальнейшем потребуется изменить какую‑либо декларацию).
Работает только при сжатии, по умолчанию выключено (формируется максимально сжатый 1-строчный "кирпич"). При изменении на любое целое положительное число компрессор будет переносить любое правило целиком на новую строку, если его длина превышает заданную (считается посимвольно, в т.ч. учитываются обязательные пробелы, остающиеся после сжатия кода).
При этом правила никогда не разрываются точно по числу символов (т.е. это "желательно, но не обязательно"), в итоге длина строк объёмных правил с большим числом деклараций может превышать заданное значение ("плавающая" длина строк).
Меняя значение параметра, вы можете подобрать подходящую именно вам длину строк для комфортной работы со стилями.
Комфортной может быть установка значения 1. В этом случае на выходе компрессора будет максимально удобный для правок сжатый файл с разбивкой на строки по принципу "одно правило = одна строка" (хотя, конечно, размер файла в целом при этом будет немного больше).
На завершающем этапе работы скрипта применяются дополнительные операции, повышающие общее удобство работы.
Добавлена автопрокрутка в начало нового файла (после обработки исходника целиком) и автоматическое повторное выделение преобразованного выделенного фрагмента текста (при обработке с заменой "по месту"). Во втором случае (замена "по месту") это позволяет быстро выполнить двойной прогон фрагмента (сжать/разжать и наоборот) для быстрого применения новых настроек (например, сразу же после их изменения).
Может использоваться для повышения удобства вызова скрипта через панель инструментов редактора. Такая возможность заложена в настройках плагина "Python Script", доступна через пункт меню Плагины > Python Script > Configuration.
Общий вид блока настроек (по каждому ключу настроек есть подсказки‑комментарии):
Пример кнопки запуска скрипта на панели инструментов редактора:
Для работы CSS-конвертера требуется наличие в вашем редакторе установленного плагина "Python Script".
После установки и первоначальной настройки указанного плагина нужно выполнить следующие действия: (указаны стандартные наименование пунктов меню и путей размещения плагина и скриптов)
* Указано название пункта в русской версии редактора. В английской версии этот пункт называется "Plugins".
** При этом будет обрабатываться либо выделенный фрагмент в текущем файле текущего активного окна редактора (конверсия с заменой выделенного текста "по месту"), либо весь текущий файл целиком (если ничего не выделено, результат работы скрипта будет помещён и автоматически сохранён в новом файле).
Пока отсутствуют, но если вдруг что – не стесняемся и пишем баг‑репорты в комментариях…:)
Скачать архивную копию для установки этой версии