' +'' +'' +'' +''+(OBS.pswFlag=!0,'') +'' +'' +'' +'' +'' +'' +'' +'')//-->
Скрипт-конвертер CSS на языке Python для текстового редактора Notepad++. Добавлены дополнительные функции и настройки, повышены качество и скорость обработки CSS.
Исправлено несколько ошибок, возникавших только при определённых комбинациях настроек. Доработан форматтер для "красивой ёлочки" многоуровневых правил с условиями (@media/@support/…). Добавлены дополнительные функции преобразования цветов (RGB(A)‑HEX6(8), HSL(A)‑HEX6(8)…). Добавлены дополнительные опции форматтера/компрессора для лучшей читаемости/сжатия кода. Расширена автоправка некоторых типовых ошибок для соответствия обрабатываемого CSS стандартам. Улучшена работа с комментариями, добавлены опции/настройки для "продвинутого комментирования". Частично оптимизирован код, повышена общая скорость работы скрипта.
Работоспособность проверена в редакторе Notepad++ v.6.5.1 в среде Windows XP SP3.
* Связано с неоднозначностью обработки CSS‑файлов различной степени сложности. Часть параметров при этом могла отрабатываться не вполне корректно из‑за изменения порядка обработки отдельных правил и директив.
В частности, доработано и исправлено следующее: — упрощён автодетектор направления конверсии, теперь направление определяется по наличию (или отсутствию) хотя бы одного перевода строки после открывающей скобки "{" (если такого символа нет, исходник считается уже сжатым и запускается его форматирование и наоборот); — исправлено ошибочное добавление пробелов перед/после знака "–" для отрицательных чисел в функциях calc(); — исправлено неправильное преобразование некоторых псевдо‑элементов, дающее некорректные правила на выходе; — исправлено "вырывание" из внутренних деклараций закомментаренных строк, распознававшихся в некоторых случаях как "шапочный" комментарий (и, соответственно, перемещавшийся в начало преобразованного файла или фрагмента); — исправлено "съедание" (удаление) части директив, следующих за "защищёнными" комментариями, было отловлено в компрессоре, при сжатии кода, в некоторых частных случаях; — исправлено подвисание скрипта (а также Python‑плагина и редактора в целом) при обработке "защищённых" комментариев, если они не имеют закрывающей части (*/).
Теперь поддерживается обработка всех вариантов синтаксиса для форматов RGB(A)/HSL(A), для которых выполняется автоматическая конверсия в формат HEX6(8) с точностью 0,1%, и добавлена полноценная поддержка формата HEX8. При этом также автоматически корректируются ошибки синтаксиса (если они есть в исходном коде).
Кроме того, если в исходном коде встречаются неверные значения цвета (например, #aabbccd), такие директивы преобразуются в формат HEX6.
Дополнительно проверяется возможность сокращения HEX4/8 до HEX3/6, если последние байты дают непрозрачность, равную 1 (например, #abcF/#abcdefFF будут сокращены до #abc/#abcdef).
По умолчанию опция включена (1), "прозрачный" конвертируется в эквивалентный ему "чёрный с нулевой прозрачностью". Работает двунаправлено, в компрессоре color:"transparent" преобразуется в color:#0000 (короче более чем вдвое), в форматтере наоборот (так улучшается читаемость исходного кода).
Предупреждение: в старых браузерах, не распознающих форматы HEX4(8), при использовании сжатой версии вашего стиля будет возникать ошибка. Если ваш сжатый стиль предназначен для таких "раритетов", этот флаг следует выключить (0).
Работает только для компрессора, по умолчанию выключена (0). Отключение этой функции (заложена в скрипте‑прототипе 2012 года) связано с её низкой практической значимостью в современных условиях.
Функция направлена на "хак" для защиты двух последовательных комментариев, окружающих блок директив и решающих отдельные проблемы в браузерах MSIE‑5 на компьютерах Macintosh (для более современных браузеров не имеет смысла, в них такое исправление не требуется, а только замедляет работу компрессора).
Подробнее о проблеме можно прочитать: здесь (на английском).
Включайте этот флаг (1) только если вам реально требуется обработка такого фикса в вашем файле.
Относится только к обработке файлов целиком с сохранением результата в новый файл (работает в обе стороны, и при сжатии и при форматировании). При конверсии "по месту" фрагмент обрабатывается в текущей кодировке файла.
Включение этой опции (по умолчанию) гарантирует корректное преобразование и сохранение кода, содержащего символы не только латинского алфавита (например, кириллицу, символы греческого алфавита и другие национальные языковые символы).
Если этот параметр выключен (0), сохранение нового файла будет сделано в кодировке по умолчанию, заданной в настройках вашего редактора. В отдельных случаях это может приводить к ошибкам обработки ваших стилей в разных браузерах.
Добавлены очередные "временные костыли" для отдельных типовых проблем, приводящих к "кривой ёлке". Теперь проблемы с отступами в "многоэтажных конструкциях" будут возникать реже, но (пока ещё) не исключены совсем…
Применимо только к работе компрессора. Улучшает читаемость файла, если включена опция разбивки сжатого кода на строки, принудительно отбивает комментарии новой строкой (кроме находящихся внутри правил, закомментированных деклараций).
Необходимость отбивки определяется автоматически, никакие настройки для этого не требуются.
Для работы CSS-конвертера требуется наличие в вашем редакторе установленного плагина "Python Script".
После установки и первоначальной настройки указанного плагина нужно выполнить следующие действия: (указаны стандартные наименование пунктов меню и путей размещения плагина и скриптов)
* Указано название пункта в русской версии редактора. В английской версии этот пункт называется "Plugins".
** При этом будет обрабатываться либо выделенный фрагмент в текущем файле текущего активного окна редактора (конверсия с заменой выделенного текста "по месту"), либо весь текущий файл целиком (если ничего не выделено, результат работы скрипта будет помещён и автоматически сохранён в новом файле).
*** Кроме различных видов правил (в т.ч. многоуровневых, пустых и с вложенными комментариями), этот файл содержит некоторые типовые ошибки и "опечатки" для демонстрации возможностей работы автокоррекции кода.
Пока отсутствуют, но если вдруг что – не стесняемся и пишем баг‑репорты в комментариях…:)
Скачать архивную копию для установки этой версии