Почему 'haml --check' не находит эту явную синтаксическую ошибку - PullRequest
3 голосов
/ 12 января 2011

Я искал грабли, которые могли бы помочь мне отследить синтаксические ошибки, и я наткнулся на haml --check как возможное решение для двойной проверки файлов haml.К сожалению, когда я передал ему этот неработающий пример, хамл говорит, что синтаксис в порядке.

Я неправильно понял цель haml --check или эта функция реализована не полностью?

Полагаю, мне следуетОтметим, что я использую Haml / Sass 3.0.25 (Classy Cassidy), рельсы 3.0.3, ruby ​​1.9.2p0 и Mac 10.6.6.

$ haml --check /tmp/edit.html.haml<br> Syntax OK

#/tmp/edit.html.haml
- content_for :head do
  = include_javascripts :aspects

#aspect_edit_pane
  #facebox_header
    %h4
      = @aspect
      .description
        = t('contacts', :count =>@aspect_contacts.count)<b>}</b>

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

ActionView::Template::Error (compile error 
    /usr/local/app/diaspora/app/views/aspects/edit.html.haml:13: 
    syntax error, unexpected '}', expecting ')'

1 Ответ

4 голосов
/ 12 января 2011

Может быть потому что -c, --check Just check syntax, don't evaluate.

Угадай: он проверяет только синтаксис haml и не оценивает встроенный ruby.

- редактировать

Это, вероятно, нуждается в некотором дополнительном тестировании, но я заставил его работать с простыми файлами haml:)

haml --debug newsletter.html.haml 2> /dev/null | sed '$d' | ruby -c

В теории:

Haml распечатывает предварительно скомпилированный источник Ruby (и сообщения об ошибках в конце), мы пытаемся получить только часть ruby ​​и проверить синтаксис.

...