Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

pandoc-filter

mvhenderson7.3kMIT2.2.0TypeScript support: included

Pandoc filtering for Node.js

pandoc, filter, pandocfilter

readme

About

Node.js/TypeScript port of the Python pandocfilters for filtering with Pandoc

Install

npm install -g pandoc-filter

Example

#!/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);
    }
});

Compatibility Notes

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.

Credits

Thanks to John MacFarlane for Pandoc.

License

MIT