在mustache模板中计算变量表达式:我们应该得到什么?



给定这些散列和Mustache模板:

哈希:

{
'a': 3
}

模板:

"This is a+2: {{a+2}}"

Ruby和Python给我不同的输出:

  • 在ruby中,我得到:

    /usr/lib/ruby/gems/3.0.0/gems/mustache-1.1.1/lib/mustache/parser.rb:286:in `error': Unclosed tag (Mustache::Parser::SyntaxError)
    Line 1
    {{a+2}}
    
  • 在python中,只是空字符串

谁是对的?在官方的mustache规范中我们应该得到什么结果:空字符串或错误(或其他东西)?我不知道其他编程语言的结果是什么。

这两个都没有错,因为它们遵循了Mustache规范的要求(或者在这种情况下缺乏这种要求)。

  1. 胡子插值规范(v1.2.2)只限制:

标签的内容必须是非空白字符序列当前关闭分隔符。

  1. Mustache规范没有明确定义标签名称的语法(Mustache/spec#67)。

Ruby实现的mustache/mustache进一步将标签名限制为:

# The content allowed in a tag name.
ALLOWED_CONTENT = /(w|[?!/.-])*/

Python实现noahmorrison/chevron考虑a+2作为标签名:

import chevron
chevron.render("This is a+2: {{a+2}}", {'a+2': 3})
# 'This is a+2: 3'

值得注意的是,Python实现不会将语法错误默认为空字符串。

相关内容

  • 没有找到相关文章

最新更新