Я использую Haml в приложении Rails 3, и его переводы строки сводят меня с ума!Например,
%span
foo
отображается как
<span>
foo
</span>
Но я бы очень хотел
<span>foo</foo>
Причина (не считая чистого XML) заключается в том, чтодополнительные символы новой строки являются проблемой для моих тестов Selenium, потому что они портят возможность выполнять запросы XPath, такие как "//span[.='foo']"
.Поэтому я должен был бы написать '\nfoo\n'
вместо этого (ew!) Или использовать //span[contains(text(), 'foo')]
, что соответствует слишком широко.
Я знаю, что мог бы использовать операторы аллигатора ("<" и ">")для удаления пробелов, но так как у меня никогда не было случая, когда я хочу, чтобы новые строки появлялись в выходных данных, я просто закончил бы механическим добавлением их в конце каждой строки.И это просто кажется очень неприятным.
Итак, теперь я вижу два решения:
- Заставить Хэмла никогда не испускать символы новой строки, если они не происходят из выражения Ruby.Я вижу некоторые
nuke_inner_whitespace
/ nuke_outer_whitespace
переменные, распространяющиеся по коду Haml, которые могут выполнять эту работу, но я не уверен, как их изменить, не прибегая к бесполезным мартышкам-патчам.
Любые указатели или другие предложения приветствуются!
Обновление: Я использовал приведенный ниже патч обезьяны Джейсона дляа сейчас и я начинаю думать, что оно того не стоит.Например, если я хочу получить <span>[del]</span> <span>foo</span>
, трудно не иметь пробел между нюками.Даже следующее будет отображаться как [del]foo
на странице:
%span
= '[del] '
%span
foo
Так что я думаю, что вернусь к добавлению операторов-аллигаторов вручную (см. Мой ответ ниже).Живи и учись.
Еще раз спасибо Джейсону!:)