在 Middleman 中加载纯文本/降价文本 (.txt/.md) 文件

问题描述

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

有没有办法加载这个文件夹内any .txt.md 文件内容

我找到了这个 extension,但我不知道如何实现。

示例

鉴于此结构和以下文件

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 数据(或降价)来达到什么目的。中间人数据不打算包含数组/散列形式以外的数据。假设您想加载长(或格式化)文本,这是 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 %>
,

我找到了一种解决方法,直到我弄清楚如何编写自己的扩展来加载纯文本文件。

有以下数据文件:

  • data/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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...