2014-10-21 13 views
6

Uso pandoc per generare index.html con metadati YAML. So array associativi iterazione dal modello Pandoc:Pandoc: modello con metadati YAML

YAML:

- Author: Mastropiero 
- Author: Gunter Fraggen 

MODELLO:

$for(author)$ 
    $author$ 
$endfor$ 

Ma ... come iterare liste senza chiave?

YAML:

- Author: 
    - [Value1, Value2] 
    - [Value1B, Value2B] 

MODELLO:

$for(author)$ 
    ... // how works? 
$endfor$ 

risposta

12

Come i tuoi programmi di modello, all'interno di un Pandoc ciclo rende una variabile locale con lo stesso nome del array ('autore' nel tuo caso). Quindi per scorrere l'elenco interno, usa semplicemente lo stesso meccanismo 'per' sulla variabile interna.

Pertanto, si dovrebbe utilizzare

MODELLO

$for(author)$ 
    $for(author)$ 
     $author$ 
    $endfor$ 
$endfor 

È inoltre possibile utilizzare $ settembre $ per specificare un separatore da usare tra gli elementi della lista.

Si noti che se l'elenco interno contiene elementi con significati diversi (anziché solo una lista), è necessario utilizzare un elenco di dizionari.

YAML

Author: 
    - {name: Iain Banks, book: The Algebraist} 
    - {name: Isaac Asimov, book: Foundation} 

MODELLO

$for(author)$ 
    $author.name$ wrote $author.book$ 
$endfor$ 
+1

Molto utile! Puoi includere un esempio su come specificare? $ Sep $ '? – cboettig

+0

Basta aggiungere '$ sep $ separator' all'interno del ciclo. 'separator' potrebbe essere' \\\ 'per esempio. – bytesinflight