我一直在寻找可以帮助我追踪语法错误的耙子任务,然后我遇到了 haml --check 作为双重检查HAML文件的可能解决方案。不幸的是,当我通过这个破碎的例子时,哈姆尔说语法还可以。

我是否误解了 haml --check 还是此功能未完全实施?

我想我应该提到我正在使用HAML/SASS 3.0.25(Classy Cassidy),Rails 3.0.3,Ruby 1.9.2p0和Mac 10.6.6。

$ haml --check /tmp/edit.html.haml
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)}

最后一个字符(Curly Brace)应触发语法错误,当模板作为请求的一部分执行时,它肯定会这样做:

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

解决方案

也许是因为 -c, --check Just check syntax, don't evaluate.

猜猜:它仅检查HAML语法,并且没有评估Inline Ruby。

- 编辑

这可能需要 一些 更多测试,但我在简单的HAML文件上工作:)

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

理论上:

HAML打印出预编译的Ruby源(最后是错误消息),我们尝试仅获取Ruby部分并检查语法。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top