This is a pre-production deployment of Warehouse, however changes made here WILL affect the production instance of PyPI.
Latest Version Dependencies status unknown Test status unknown Test coverage unknown
Project Description

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

scholdoc -t json | ./caps.py | scholdoc -f json

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

scholdoc --filter ./caps.py

Scholdocfilters is just jgm’s pandocfilters with element types adapted to the slightly richer Scholdoc AST. For more usage information, see John MacFarlane’s original pandoc documentation under --filter and the tutorial on writing filters.

To install:

python setup.py install

The scholdocfilters 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 Scholdoc document from stdin, transforms it by walking the tree with the action, and returns a new JSON-formatted Scholdoc document to stdout. The argument is a function action(key, value, format, meta), where key is the type of the Scholdoc 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

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

from scholdocfilters import toJSONFilter, Str

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

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

Examples

NOTE: These example are written for pandocfilters. As such, some examples are not working due to an incompatible AST between Scholdoc and Pandoc. This will be remedied ASAP.

The examples subdirectory in the source repository contains the following filters. These filters should provide a useful starting point for developing your own scholdocfilters.

  • abc.py

    Pandoc filter to process code blocks with class abc containing ABC notation into images. Assumes that abcm2ps and ImageMagick’s convert are in the path. Images are put in the abc-images directory.

  • caps.py

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

  • comments.py

    Pandoc filter that causes everything between <!-- BEGIN COMMENT --> and <!-- END COMMENT --> to be ignored. The comment lines must appear on lines by themselves, with blank lines surrounding

  • deemph.py

    Pandoc filter that causes emphasized text to be displayed in ALL CAPS.

  • deflists.py

    Pandoc filter to convert definition lists to bullet lists with the defined terms in strong emphasis (for compatibility with standard markdown).

  • graphviz.py

    Pandoc filter to process code blocks with class graphviz into graphviz-generated images.

  • metavars.py

    Pandoc filter to allow interpolation of metadata fields into a document. %{fields} will be replaced by the field’s value, assuming it is of the type MetaInlines or MetaString.

  • myemph.py

    Pandoc filter that causes emphasis to be rendered using the custom macro \myemph{...} rather than \emph{...} in latex. Other output formats are unaffected.

  • theorem.py

    Pandoc filter to convert divs with class="theorem" to LaTeX theorem environments in LaTeX output, and to numbered theorems in HTML output.

  • tikz.py

    Pandoc filter to process raw latex tikz environments into images. Assumes that pdflatex is in the path, and that the standalone package is available. Also assumes that ImageMagick’s convert is in the path. Images are put in the tikz-images directory.

Release History

Release History

0.1.1

This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Download Files

Download Files

TODO: Brief introduction on what you do with files - including link to relevant help section.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
scholdocfilters-0.1.1.tar.gz (5.4 kB) Copy SHA256 Checksum SHA256 Source Jul 16, 2015

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS HPE HPE Development Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting