Pandoc filtering for Node.js
npm install pandoc-filterNode.js/TypeScript port of the Python [pandocfilters][] for filtering with [Pandoc][]
``bash`
npm install -g pandoc-filter
`javascript
#!/usr/bin/env node
// Pandoc filter to convert all text to uppercase
var pandoc = require("pandoc-filter");
var Str = pandoc.Str;
function action({ t: type, c: value }, format, meta) {
if (type === "Str") return Str(value.toUpperCase());
}
pandoc.stdio(action);
`
Async using native promise
`javascript
#!/usr/bin/env node
"use strict";
var pandoc = require("pandoc-filter");
var rp = require("request-promise-native");
var Str = pandoc.Str;
async function action({ t: type, c: value }, format, meta) {
if (type === "Str") {
const data = await rp({
uri: value,
json: true,
});
return Str(data.places[0]["post code"]);
}
}
pandoc.stdio(action);
`
Using TypeScript:
`typescript
import { stdio, Str } from "pandoc-filter";
stdio((ele) => {
if (ele.t === "Str") {
// c is typed as string
return Str(ele.c.toUpperCase());
}
if (ele.t === "Image") {
// ele.c is typed as a three-tuple
const [attr, label, target] = ele.c;
const [url, title] = target;
return Str("url was " + url);
}
});
`
Required node >=v8 for async/await/promise support.
v0.1.6 is required for pandoc versions after 1.17.2` to support the new JSON
format. See this issue for details.
Thanks to John MacFarlane for Pandoc.
MIT
[pandoc]: http://johnmacfarlane.net/pandoc
[pandocfilters]: https://github.com/jgm/pandocfilters