[PHP] CSS→LESS

less
Открыв для себя LESS, я понял, что обходиться без него (или ему подобного) уже не смогу. Но вот старые проекты написаны без него. А сопровождать их надо. Погуглив, я конечно нашел несколько вариантов перевода CSS в LESS, однако по ряду причин они меня не устроили. Одни не поддерживают @charset, другие не выделяют часто встречаемые значения свойств в отдельные переменные, третьи некорректно выделяют цвета и т.д. Так что было решено написать свое решение для этой задачи (пусть и частичное решение).

Решение организовано в виде PHP-класса, который умеет такое:

  • Генерирует код с вложенными селекторами.
  • Размещает css-свойства в алфавитном порядке.
  • Разделяет группы селекторов A,B,C{…} на A{…} B{…} C{…}. Опционально. Можно задавать максимальное число селекторов в такой группе, что бы она была разделена.
  • Выделяет значения цветов (как #*** и #******) и заменяет их less-переменными. Опционально. Можно задать минимальное количество вхождений каждого цвета в css-код, что бы он был заменен на переменную.
  • Выделяет значения ширины и высоты в переменные. Опционально. Вы можете задать минимальное количество вхождений каждого значения, что бы оно было заменено на переменную.
  • Поддержка выделения псевдоклассов (active, hover, visited).
  • Поддержка селекторов с ~, :, [, ], +, >.
  • Определение @charset.
  • Комментарии в секциях описания less-переменных.

Скачать класс, Онлайн-демо.

UPD. Код доступен на phpclasses.org — http://www.phpclasses.org/css-to-less

, ,

6 комментариев
  1. Boolean сказал(а):

    Там в связке с XSRF можно получить пассивную XSS.
    Например вектор: aalert(/xss/){color: #999;}

  2. Boolean сказал(а):

    Бложек съел теги 🙁

  3. KronuS сказал(а):

    Спасибо за пентест 🙂

  4. Wave сказал(а):

    Большое спасибо за класс! Очень помог в переводе большого и рыхлого css в изящный структурированный less.

  5. Vasis сказал(а):

    На гитхабе выложить не планируете?

  6. KronuS сказал(а):

    Надо бы, но никак руки не дойдут.

Оставить комментарий

Top ↑ | Main page | Back