2017-01-14 1 views
2

Ist es möglich, Pandocs Metadaten (Titel, Datum usw.) aus einer Markdown-Datei ohne Haskell-Filter zu extrahieren oder die Ausgabe --to=json zu analysieren?YAML-Metadaten aus einer Pandoc-Markdown-Datei lesen

Die JSON Ausgabe ist besonders ungünstig für diesen, da ein Zwei-Wort-Titel wie folgt aussieht:

$ pandoc -t json posts/test.md | jq '.meta | .title' 
{ 
    "t": "MetaInlines", 
    "c": [ 
    { 
     "t": "Str", 
     "c": "Test" 
    }, 
    { 
     "t": "Space" 
    }, 
    { 
     "t": "Str", 
     "c": "post" 
    } 
    ] 
} 

so auch nach jq mit dem Titel zu lesen, müssen wir noch Worte rekonstruieren, und jede Betonung, Code oder irgendetwas anderes wird es nur komplizierter machen.

Antwort

3

Wir können die template variable $meta-json$ dafür verwenden.

Kleben Sie die Variable in eine Datei (mit einer Erweiterung, um zu verhindern, dass Pandoc in ihre eigenen Verzeichnisse schaut) und verwenden Sie sie dann mit pandoc --template=file.ext.

Pandoc des Ausgang ist ein JSON-Objekt mit Schlüsseln "title", "date", "tags" usw. und ihren jeweiligen Werten aus dem Abschlags-Dokument, das wir leicht analysieren können, filtern und manipulieren mit jq.

$ echo "\$meta-json\$" > /tmp/metadata.pandoc-tpl 
$ pandoc --template=/tmp/metadata.pandoc-tpl | jq '.title,.tags' 
"The Title" 
[ 
    "a tag", 
    "another tag" 
]