Тонкие шаблоны — удаление пробелов вокруг тега блока

Я пробую шаблоны Slim в новом проекте (после долгого использования Haml). Хотя общий опыт отличный, я столкнулся с проблемой, когда пробелы всегда вставляются вокруг тегов, которые обычно используют display: block.

Сказать,

ul.ampm
  li.am am
  li.pm pm

генерирует

<ul class="ampm">
  <li class="am">
    am
  </li>
  <li class="pm">
    pm
  </li>
</ul>

пока

.ampm
  span.am am
  span.pm pm

генерирует

<div class="ampm">
  <span class="am">am</span></span class="pm">pm</span>
</div>

Обычно это не представляет большой проблемы, но мы используем адаптивные макеты, в которых применяются теги от display: inline-block до li; очевидно, наличие пробелов между ними нарушает макет.

я в курсе

Slim::Engine.options[:pretty] = true

вариант (и его включение удаляет оскорбительные пробелы), но это затрудняет чтение всего сгенерированного исходного кода, а не только той части, которую я хотел бы исправить.

< и > в Slim, кажется, делают противоположное тому, что мне нужно - они предназначены для добавления пробелов вокруг встроенных тегов.

So...

  • возможно ли удалить пробелы вокруг тега одного блока в Slim, подобно пожирателям пробелов HAML? (Без последствий отключения красивой опции, то есть)
  • если нет, то является ли это фундаментальным ограничением Slim («по замыслу») или чем-то, что находится в дорожной карте и может быть реализовано в будущем?

Очень признателен.


person Konstantin Burnaev    schedule 02.01.2015    source источник


Ответы (1)


Я работал над этим, вернувшись к встроенному HTML в критических местах. Для меня это было добавление коллекции options к select:

select
  - my_collection.each do |item|
  <option value="#{item.id}">#{item.name}</option>

Я могу мириться с этим в тех немногих случаях, когда это действительно важно (как это было со мной в option элементах). Но если вам нужны лучшие пробелы в вашем коде, я думаю, вам не повезло.

это фундаментальное ограничение Slim («по дизайну») или что-то, что находится в дорожной карте и потенциально может быть реализовано в будущем?

Я собираюсь пойти с "нет" для обоих из них. Похоже, команда Slim просто реализовала наивный алгоритм и не оглядывалась назад. Например, эта цитата из системы отслеживания ошибок GitHub:

Красивый рендерер не работает должным образом при некоторых обстоятельствах, так как Слим фокусируется на производительности. Если у вас есть время, предоставьте патчи для красивого рендерера проекта храма https://github.com/judofyr/temple, а также предоставить тестовые примеры.

person Craig Walker    schedule 23.01.2015