在Middleman中加载纯文本/标记文本(.txt/.md)文件



Middleman自动加载/data文件夹中存在的.json.yml数据文件的内容。

是否有任何方法可以加载此文件夹中任何.txt.md文件的内容?

我找到了这个扩展,但我不知道如何才能实现。

示例

给定此结构和以下文件:

data/
├── foo.yml
└── bar.txt
  • foo.yml
text: "I can load this text."
  • bar.txt
I want to load this text.

我可以访问data.foo.text并检索I can load this text.

我想访问data.bar并检索I want to load this text.

我不确定您试图通过读取txt数据(或markdown(来实现什么。中间人数据不打算包含数组/哈希形式以外的数据。假设你想加载长(或格式化(文本,这是IMO 的更好方法

posts.yml:

-
title: First Post
file: foo.txt
-
title: Second Title
file: bar.txt

在您看来:

<% data.posts.each do |post| %>
<%= post[:title] %>
<%= simple_format(File.read("data/#{post[:file]}").html_safe) %>
<% end %>

我找到了一个变通方法,直到我找到了如何编写自己的扩展名来加载纯文本文件。

具有以下数据文件:

  • 数据/bar.yml
---
title: bar
# Content in plain text can be placed after ---
---
## H2 test
- Hello __world__!

然后可以使用data.bar.postscript:访问内容

<div class="container">                 
<h1><%= data.bar.title %></h1>
<%= makrdown data.bar.postscript %> # In this case, I want to render it in Markdown
</div>

为了渲染Markdown,我在config.rb:中定义了一个助手函数

helpers do 
def markdown(text=nil)
text ||= yield
return Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, tables: true).render(text)
end
end

最新更新