1

是否可以使用 Hamlet 模板库但仍要编写结束标签?由于我在编写 Ruby 时不使用 Haml 的所有相同原因,我对模板中显着空白的想法感到不舒服。

This answer on another question似乎表明您可以根据需要使用结束标签,但是在我在 FP Haskell Center 上设置的基本入门项目中,如果我向任何内容添加结束标签,我将无法编译代码除了在同一行打开的标签。

4

1 回答 1

1

那么文档似乎很清楚:

...您在 Hamlet 中使用结束标签的唯一时间是内联标签;普通标签没有关闭。

http://www.yesodweb.com/book/shakespearean-templates(“标签”部分结束)

相关源码:https ://github.com/yesodweb/shakespeare/blob/master/hamlet/Text/Hamlet/Parse.hs#L558函数parseDocparseLines

以下显示每行中的第一项(标签)被特殊处理,而其他只是ContentRaw

ghci Text/Hamlet/Parse.hs
fmap (\(x,y,z)->z) $ parseLines defaultHamletSettings "<foo> <bar> @{oof} </rab>"

    ==> Ok [(0,LineTag {_lineTagName = "foo", _lineAttr = [],
          _lineContent = [ContentRaw " <bar> ",
          ContentUrl False (DerefIdent (Ident "oof")),ContentRaw " </rab>"], 
          _lineClasses = [], _lineAttrs = [], _lineNoNewline = False})]

因此,hamlet 永远不会真正注意到(内联)标签是否关闭。

仍然有机会切换到“从不自动关闭”模式,closeStyle看起来nestToDoc很有希望,但对于非空内容,我们总是得到CloseSeparate,这意味着将插入结束标签。

于 2013-12-03T13:24:16.597 回答