' +'' +'' +'' +''+(OBS.pswFlag=!0,'') +'' +'' +'' +'' +'' +'' +'' +'')//-->
Скрипт-конвертер CSS на языке Python для текстового редактора Notepad++. Добавлено форматирование сжатого CSS и коррекция псевдо-элементов, оптимизирован код.
В связи с добавлением форматирования сделан "ребрэндинг", теперь скрипт называется "CSSMinMaxR24". Добавлены функции "улучшатора" для повышения читабельности отформатированного кода (пробелы и разделители). Доработаны регулярные выражения проверки условных правил (@media/@import/…) и деклараций с функцией calc(). Добавлена коррекция пропущенных/лишних ":" для псевдо-элементов (::after/…) и псевдо-классов (:hover/…). Оптимизирован и упрощён код и вызов отдельных функций конвертера.
Работоспособность проверена в редакторе Notepad++ v.6.5.1 в среде Windows XP SP3.
Связано с добавкой функций форматирования (разворачивания) сжатого CSS‑кода, такой "ребрэндинг" вкратце отражает сущность новых функций автоматического преобразования (подробности ниже).
Форматирование выражается в построчном разделении правил на строки‑декларации, а также в добавлении отступов (табуляций) для вложенных правил и деклараций (т.н. "ёлочка"). Каждое правило, независимо от числа деклараций в нём, также отделяется новой строкой.
Если в исходном CSS‑файле (или в выделенном фрагменте) содержатся вложенные правила (например, внутри условий @media), форматтер попытается добавить дополнительный отступ (табуляцию) для определений правил и ещё больше "сдвинуть вправо" вложенные в каждое правило декларации ("рост ёлочки").
В текущей версии форматтер может гарантированно (аккуратно и ровно) сместить только одноуровневые вложенные правила, в случае более сложных "конструкций" могут появляться неровные отступы (возможна "кривая ёлка").
Выбор направления конверсии определяется автоматически путём экспресс‑анализа ключевых точек, которые в обязательном порядке присутствуют в любом CSS‑файле. Эта операция выполняется при каждом запуске, при повторном запуске, соответственно, направление преобразования меняется в обратную сторону – т.е. сжатый файл всегда будет развёрнут (отформатирован), и наоборот, отформатированный будет сжат.
Автодетект срабатывает независимо от того, выделен ли фрагмент текста (при этом детектор анализирует код только в пределах выделенного фрагмента) или делается обработка файла целиком.
Как и в случае компрессии, при обработке файла целиком создаётся и автоматически сохраняется* новый файл с результатами обработки (в той же папке, где расположен исходный файл). Имя файла в случае "экспандера" также формируется на основе имени текущего файла, но уже с добавкой префикса "_MAX" (например, файл "123.css" будет автосохранён как "123_MAX.css").
* Предупреждение: если в папке уже есть файл с таким же именем ("123_MAX.css"), он автоматически перезаписывается, без запроса и без необходимости подтверждения перезаписи.
При этом в определения правил и деклараций добавляются дополнительные отсупы и пробелы, не изменяющие правила или значения, но существенно улучшающие их восприятие (например, после ",", "+", ">" или перед открывающей скобкой "{").
Анализ производится только для определений правил и основан на "умной" проверке зарезервированных слов (как для псевдо‑классов так и для псевдо‑элементов, согласно текущим CSS‑стандартам). При этом также учитывается (и проверяется), что такие слова могут встречаться и в названиях классов, идентификаторов и т.д. (если так, эти элементы остаются "как есть").
По результатам проверки при коррекции будут добавлены двоеточия, если в определении присутствует зарезервированное для псевдо‑элемента слово (например, пропущенное второе двоеточие перед :after), или, наоборот, они будут удалены, если в определении присутствует слово, зарезервированное для псевдо‑класса (например, лишнее двоеточие перед ::hover).
Для работы CSS-конвертера требуется наличие в вашем редакторе установленного плагина "Python Script".
После установки и первоначальной настройки указанного плагина нужно выполнить следующие действия: (указаны стандартные наименование пунктов меню и путей размещения плагина и скриптов)
* Указано название пункта в русской версии редактора. В английской версии этот пункт называется "Plugins".
** При этом будет обрабатываться либо выделенный фрагмент в текущем файле текущего активного окна редактора (конверсия с заменой выделенного текста "по месту"), либо весь текущий файл целиком (если ничего не выделено, результат работы скрипта будет помещён и автоматически сохранён в новом файле).
Пока отсутствуют, но если вдруг что – не стесняемся и пишем баг‑репорты в комментариях…:)
Скачать архивную копию для установки этой версии