代码之家  ›  专栏  ›  技术社区  ›  slothbear

如何在模板文件中包含元数据?

  •  1
  • slothbear  · 技术社区  · 15 年前

    我有一个通过erb过滤模板文件的系统。使用约定优先于配置,在镜像输入文件的文件层次结构中创建输出文件。许多文件都有相同的名称,我能够使用目录来区分它们。

    配置讨厌。

    然后我学会了 Webby ,以及它在每个模板文件顶部包含YAML元数据部分的方式。它们看起来像这样:

    ---
    title: Baxter the Dog
    filter: textile
    ---
    All the best little blogs use Webby.
    

    <%#
    title: Baxter the Dog
    %>
    

    有没有办法查阅雇员再培训局的意见?或者是另一种方法?我的很多模板都做了一堆erb的工作,但是如果能让剩下的工作更简单的话,我可以在一个单独的步骤中运行erb。

    1 回复  |  直到 15 年前
        1
  •  2
  •   James Mead    15 年前

    如果你也将你的内容作为YAML转储,怎么样。据推测,元数据只是一个转储到YAML的散列。您可以将内容作为字符串附加到同一文件中的第二个YAML文档中:-

    ---
    title: Baxter the Dog
    filter: textile
    --- |
    Content line 1
    Content line 2
    Content line 3
    

    倾销很简单:-

    File.open('file.txt', 'w') do |output|
      YAML.dump(metadata, output)
      YAML.dump(content, output)
    end
    

    加载非常简单,如下所示:-

    File.open('file.txt') do |input|
      stream = YAML.load_stream(input)
      metadata, content = stream.documents
    end
    

    请注意,管道字符显示在YAML中 so that newlines in the content string are preserved