我有一个通过erb过滤模板文件的系统。使用约定优于配置,输出文件将在镜像输入文件的文件层次结构中创建。许多文件具有相同的名称,我可以使用这些目录来区分它们。
该计划一直有效,直到我需要将其他信息与每个文件相关联。所以我用每个元数据在每个目录中创建了一个YAML文件。现在我有常规 和 配置。呸。
然后我学会了Webby,以及它在每个模板文件顶部包含YAML元数据部分的方式。它们看起来像这样:
---
title: Baxter the Dog
filter: textile
---
All the best little blogs use Webby.
如果我可以实现这样的标题,我可能会抛弃我的层次结构和单独的YAML文件。 Webby实现非常通用,实现了一个新的MetaFile类,它将标题与“真实文本”分开,但它似乎比我需要的更复杂。
将元数据放在erb注释中似乎很好 - 它将被erb自动忽略,但我不确定如何访问注释数据。
<%#
title: Baxter the Dog
%>
有没有办法访问erb评论?或者可能采用不同的方法?我的很多模板都做了很多错误的东西,但如果能让其他的更容易,我可以在单独的步骤中运行erb。
答案 0 :(得分:2)
如果您将内容转储为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。
中