Node.js/TypeScript port of the Python pandocfilters for filtering with Pandoc
npm install -g pandoc-filter
#!/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
#!/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:
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