Pregunta

I'm looking for a simple templating engine that takes a YAML snipped as context and works well for reading Markdown plus some tags to produce Markdown. I tried Jekyll's Liquid and it works, except for whitespace which is really important in Markdown.

For example with this input...

---
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 %}

the output is:

- one

        function sample() {
  return 1;
}

- two

        function sample() {
  return 2;
}

instead of the following which would actually work with Pandoc:

- one

        function sample() {
          return 1;
        }

- two

        function sample() {
          return 2;
        }

This has actually been discussed before for Jekyll.

So my question: is there any simple template engine that suits my needs?

¿Fue útil?

Solución

I think you could use the template engine built into pandoc to do what you want to do.

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;
    }
    ```
---

Note: we put the code samples in code fences because pandoc interprets metadata values as markdown.

Then:

% pandoc --template t.tpl -f markdown -t markdown t.md
-   one

        function sample() {
          return 1;
        }

-   two

        function sample() {
          return 2;
        }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top