【问题标题】:Multiline strings in HAML template helpersHAML 模板助手中的多行字符串
【发布时间】:2012-05-31 09:05:16
【问题描述】:

我希望能够将多行字符串传递给 haml 助手。

我有一个函数 format_code,它接受一个字符串和一组要突出显示的行号。

此函数的目的是将原始源代码转换为格式化的 HTML,其中突出显示的行、行号、换行符转换为 brs 等。

如果我这样称呼它:

%p Some HAMl

=format_code("def something
  a = b
  b = c
end", :highlight_line => 2)

%p Some more HAML

这样做的原因是将代码示例嵌入到 HAML 文档中。

HAML 抱怨在纯文本中嵌套。嵌套发生在一个字符串中,所以我认为这没问题。同样的调用在 irb 中也能正常工作。

我会使用助手,但我希望能够传递参数哈希。有什么想法吗?

【问题讨论】:

    标签: ruby haml


    【解决方案1】:

    我假设您想将代码示例硬编码到 HAML 模板中,因此您确实想要一些我立即响应的内容:“您不想要这个”。在那种情况下,我可能会选择:

    :ruby
      code = <<-CODE
        def something
          a = b
          b = c
        end
      CODE
    
    %p Some HAMl
    
    =format_code(code, :highlight_line => 2)
    
    %p Some more HAML
    

    【讨论】:

    • 有没有办法制作一个输出到haml的:ruby块?
    【解决方案2】:

    我尝试了不同的变体,我认为最简单的变体如下(代码直接取自您的):

    %p Some HAMl
    
    =format_code("def something\t  a = b\t  b = c\tend", :highlight_line => 2)
    
    %p Some more HAML
    

    这至少应该是多行的问题...

    【讨论】:

    • 谢谢,但问题是我必须将我的代码重新格式化为一行。我正在创建内容,所以它需要对我保持清晰。
    • 因此,也许使用此答案stackoverflow.com/a/1475274/41540 中的技术可以为您提供另一个可行的解决方案。您将 ruby​​ 代码移动到帮助文件中,HAML 不会妨碍您。
    • 这可行,但在这种情况下,由于代码是内容的一部分,我希望源代码更清晰易读。我正在创建一个包含格式化代码示例的文档,因此我不想将部分内容提取到其他文件中。 Confusion 有一个很好的解决方案,其中代码块在 ruby​​ 过滤器中定义为字符串,然后在 HAML 中进行解析。
    猜你喜欢
    • 2016-04-25
    • 1970-01-01
    • 2018-03-04
    • 2017-02-14
    • 1970-01-01
    • 2015-11-23
    • 2015-10-23
    • 1970-01-01
    • 2015-01-06
    相关资源
    最近更新 更多