https://github.com/mvhenderson/pandoc-filter-node
Pandoc filtering for Node.js
https://github.com/mvhenderson/pandoc-filter-node
Last synced: 16 days ago
JSON representation
Pandoc filtering for Node.js
- Host: GitHub
- URL: https://github.com/mvhenderson/pandoc-filter-node
- Owner: mvhenderson
- License: mit
- Created: 2014-05-13T12:37:15.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2023-07-24T14:59:16.000Z (over 1 year ago)
- Last Synced: 2025-03-04T21:17:30.490Z (about 1 month ago)
- Language: TypeScript
- Size: 329 KB
- Stars: 104
- Watchers: 6
- Forks: 18
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- jimsghstars - mvhenderson/pandoc-filter-node - Pandoc filtering for Node.js (TypeScript)
README
## About
Node.js/TypeScript port of the Python [pandocfilters][] for filtering with [Pandoc][]
## Install
```bash
npm install -g pandoc-filter
```## Example
```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);
}
});
```## 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](https://github.com/mvhenderson/pandoc-filter-node/issues/5) for details.## Credits
Thanks to [John MacFarlane](https://github.com/jgm) for Pandoc.
## License
MIT
[pandoc]: http://johnmacfarlane.net/pandoc
[pandocfilters]: https://github.com/jgm/pandocfilters