Skip to content

tumidi/pandoc-filter-node

 
 

Repository files navigation

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

About

Pandoc filtering for Node.js

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 55.1%
  • JavaScript 44.9%