Skip to main content

pandocfilters

A python module for writing pandoc filters. Pandoc filters are pipes that read a JSON serialization of the Pandoc AST from stdin, transform it in some way, and write it to stdout. They can be used with pandoc (>= 1.12) either using pipes::

pandoc -t json -s | ./caps.py | pandoc -f json

or using the --filter (or -F) command-line option::

pandoc --filter ./caps.py -s

For more on pandoc filters, see the pandoc documentation under --filter and the tutorial on writing filters.

To install:

python setup.py install

The source repository contains a number of illustrative examples in the examples subdirectory.

The pandocfilters module exports the following functions:

walk(x, action, format, meta)

Walk a tree, applying an action to every object. Returns a modified tree.

toJSONFilter(action)

Converts an action into a filter that reads a JSON-formatted pandoc document from stdin, transforms it by walking the tree with the action, and returns a new JSON-formatted pandoc document to stdout. The argument is a function action(key, value, format, meta), where key is the type of the pandoc object (e.g. ‘Str’, ‘Para’), value is the contents of the object (e.g. a string for ‘Str’, a list of inline elements for ‘Para’), format is the target output format (which will be taken for the first command line argument if present), and meta is the document’s metadata. If the function returns None, the object to which it applies will remain unchanged. If it returns an object, the object will be replaced. If it returns a list, the list will be spliced in to the list to which the target object belongs. (So, returning an empty list deletes the object.)

stringify(x)

Walks the tree x and returns concatenated string content, leaving out all formatting.

attributes(attrs)

Returns an attribute list, constructed from the dictionary attrs.

Most users will only need toJSONFilter. Here is a simple example of its use::

#!/usr/bin/env python

"""
Pandoc filter to convert all regular text to uppercase.
Code, link URLs, etc. are not affected.
"""

from pandocfilters import toJSONFilter

def caps(key, value, format, meta):
  if key == 'Str':
    return {'Str': value.upper()}

if __name__ == "__main__":
  toJSONFilter(caps)

Metadata

Release files for pandocfilters 1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pandocfilters 1.1
File Size Uploaded
pandocfilters-1.1.tar.gz 6.7 kB Details

Release files / pandocfilters-1.1.tar.gz

Download URL pandocfilters-1.1.tar.gz
Size 6.7 kB
Tags Source
SHA-256 checksum
How to use checksums
13af030bac826fc52d440191b6b9cdd00c42d0378ffe2adb7026f8b794d3b5e7
BLAKE2b-256 checksum
How to use checksums
594cf0b703eda696967b21d67e937dbc6e0c380e7bfa2ea31b814fa9898a906f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

1.5.1

2 release files

1.5.0

2 release files

1.4.3

1 release file

1.4.2

1 release file

1.4.1

1 release file

1.4.0

1 release file

1.3.0

1 release file

1.2.4

1 release file

1.2.3

1 release file

1.2.2

1 release file

1.2.1

1 release file

1.2

1 release file

1.1.1

1 release file

This release

1.1 This release

1 release file

1.0.1

1 release file

1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page