A Python Markdown extension to convert plain-text diagrams to images.
Ditaa is an Open Source program that converts diagrams drawn
using ASCII art to nice image files. Python Markdown is the
most used implementation of Markdown for Python. It allows for custom
Markdown extensions.
This extension replaces some (labeled) code blocks with the images
generated by ditaa
program.
Download mdx_ditaa.py file, edit DITAA_CMD
according to
where ditaa
is installed, and put the file where Python can find it
(like in the current directory).
Write your Ditaa diagrams as fenced code blocks in
GitHub Flavored Markdown, and use ditaa
language identifier:
```ditaa
+-----+ +-----+
|hello| --> |world|
+-----+ +-----+
```
This extension will call ditaa
and replace the code block with an
image like this:
Add "ditaa"
to the list of Markdown extensions when you generate HTML.
>>> import markdown as md
>>> source = """Test diagram:
...
... ```ditaa
...
... +---+
... | A |
... +---+
...
... ```
... """
>>> md.markdown(source, extensions=["ditaa"])
u'<p>Test diagram:</p>\n<p><img alt="diagram-2a5303bc.png" src="diagram-2a5303bc.png" /></p>'
Code block was replaced with an image, a new image file
diagram-2a5303bc.png
was generated. Image files are generated in
the current directory, unless an environment variable
DITAA_IMAGE_DIR
is set.
On the command line:
python -m markdown -x ditaa input.md > output.html
This extension assumes that there is a ditaa
executable on your
PATH
. If it is not the case, or you want to override default
ditaa
parameters, set DITAA_CMD
environment variable to be the
desired command line to invoke ditaa
, for example:
export DITAA_CMD="java -jar /usr/share/java/ditaa/ditaa-0_9.jar {infile} {outfile} --overwrite"
where {infile}
and {outfile}
are placeholders for input and output file
names.
You may use ditaa
extension together with fenced_code
extension;
ditaa
is supposed to act first.