pandoc-filter
TypeScript icon, indicating that this package has built-in type declarations

2.2.0 • Public • Published

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

Dependents (30)

Package Sidebar

Install

npm i pandoc-filter

Weekly Downloads

1,193

Version

2.2.0

License

MIT

Unpacked Size

25.1 kB

Total Files

10

Last publish

Collaborators

  • mvhenderson