Yaml 标记到标记的模板语言
我正在寻找一个简单的模板引擎,它将一个YAML剪接作为上下文,并且可以很好地读取Markdown加上一些标记来生成Markdown。我试过杰基尔的液体,它很有效,除了空格,这在降价中非常重要 例如,使用此输入Yaml 标记到标记的模板语言,yaml,markdown,template-engine,pandoc,Yaml,Markdown,Template Engine,Pandoc,我正在寻找一个简单的模板引擎,它将一个YAML剪接作为上下文,并且可以很好地读取Markdown加上一些标记来生成Markdown。我试过杰基尔的液体,它很有效,除了空格,这在降价中非常重要 例如,使用此输入 --- samples: - name: one samplecode: | function sample() { return 1; } - name: two samplecode: | function sample() {
---
samples:
- name: one
samplecode: |
function sample() {
return 1;
}
- name: two
samplecode: |
function sample() {
return 2;
}
---
{% for s in page.samples %}
- {{s.name}}
{{s.samplecode}}
{% endfor %}
输出为:
- one
function sample() {
return 1;
}
- two
function sample() {
return 2;
}
而不是以下与Pandoc实际协同工作的内容:
- one
function sample() {
return 1;
}
- two
function sample() {
return 2;
}
事实上,这是一个错误
所以我的问题是:有没有适合我需要的简单模板引擎?我想你可以使用pandoc内置的模板引擎来做你想做的事情
t.tpl
:
$for(samples)$
- $samples.name$
$samples.samplecode$
$endfor$
t.md
:
---
samples:
- name: one
samplecode: |
```
function sample() {
return 1;
}
```
- name: two
samplecode: |
```
function sample() {
return 2;
}
```
---
注意:我们将代码示例放在代码围栏中,因为pandoc将元数据值解释为标记
然后:
哦,哇,潘多克总是让我惊讶不已!(我很快在自述文件中搜索了“循环”,但没有找到,所以我认为这是不可能的…)我的用例唯一的缺点是它的方式有点错误(嵌入模板中的文本,而不是用于生成文本的循环)。我正在写一篇文章,在文章的某一点上,我需要生成这篇文章。但是我想我可以把所有的东西都颠倒过来,它会起作用的……如果你知道任何Haskell(哪怕只是一点点),你可以使用Pandoc类型中的
Text.Pandoc.Builder
模块从数据中编程生成Pandoc文档,然后使用Pandoc的markdown writer将其转换为markdown。如果你正在做的事情很复杂,那可能是一个更好的解决方案。
% pandoc --template t.tpl -f markdown -t markdown t.md
- one
function sample() {
return 1;
}
- two
function sample() {
return 2;
}