Исправление отступа Sass / SCSS - PullRequest
       7

Исправление отступа Sass / SCSS

2 голосов
/ 05 августа 2011

У меня есть загадка для всех вас!

Примерно неделю назад я решил изменить формат моего Sass-файла следующим образом:

a {
  color: red;
  text-decoration: none;

  &:hover: {
    color: blue;
    text-decoration: underline;
  }
}

div { ... }

На это:

a {
  color: red;
  text-decoration: none;

  &:hover: {
    color: blue;
    text-decoration: underline; } }

div { ... }

Второй синтаксис кажется хорошим - он экономит ваши строки и улучшает читабельность - но на самом деле это катастрофа для написания кода.Представьте себе, если бы я хотел добавить еще одну строку после текстового оформления: hover: мне пришлось бы взять с собой эти две скобки.

В любом случае, я пытался найти идеальное регулярное выражение для изменения форматированияназад, но безрезультатно.

Мое мышление:

  1. Совпадение и захват 2 пробелов, поскольку все закрывающие скобки имеют отступ хотя бы на один уровень: (\s{2})
  2. Совпадениеи захватить все дополнительные пробелы: (\s*)
  3. Совпадение и захват всех других символов (мой код CSS): (.*)
  4. Соответствие пробела + закрывающая скобка: }

Замените это двумя строками: \1\2\3\n\2}

Точно не работает пока.Цени любые идеи.

Ответы [ 2 ]

4 голосов
/ 05 августа 2011

Regex не будет работать, как вы обнаружили, потому что значение / желаемая позиция зависит от анализа документа, который был до этого.

Вам нужен парсер или фильтр для этой работы.

К счастью, стандартный JS beautifier или CSS-индентор должен вернуть этот файл обратно в форму.


PS: Также рассмотрите более частые резервные копии и контроль версий. (^ _ ^)

0 голосов
/ 16 февраля 2016

Еще один простой способ сделать это - быстро заменить редактор, без регулярных выражений, просто сделать так, чтобы он совпадал с пробелами, заменить новыми скобками / строками.Хотя это может быть не так быстро, как использование реиндентера CSS.

...