3

我一直在寻找可以帮助我追踪语法错误的 rake 任务,并且我遇到了haml --check作为双重检查 haml 文件的可能解决方案。不幸的是,当我将这个损坏的示例传递给它时,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:头做
  = include_javascripts:方面

#aspect_edit_pane
  #facebox_header
    %h4
      = @方面
      。描述
        = t('联系人', :count =>@aspect_contacts.count) }

最后一个字符(大括号)应该触发语法错误,当模板作为请求的一部分执行时肯定会触发:

ActionView::Template::Error(编译错误
    /usr/local/app/diaspora/app/views/aspects/edit.html.haml:13:
    语法错误,意外 '}',期待 ')'
4

1 回答 1

4

也许是因为-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​​ 部分并检查语法。

于 2011-01-12T20:04:34.487 回答