-
Notifications
You must be signed in to change notification settings - Fork 6
PlantUML support for RST [Completed]
There are fundamental choices.
- Create something better than the existing
uml-plantUml
integration - Use Sphinx, which offers it. Since this effort pre-dates sphinx, the idea of standing alone (relying only on docutils) is appealing. However, Sphinx seems like it might be a much cleaner approach, with lots and lots of options and styling.
See https://plantuml.com/docutils
The idea is to add a directive to wrap the PlantUML. This must be handled by a docutils extension. There arw two ways to package this:
- As a module that's incorporated as needed. See https://gist.github.com/mastbaum/2655700 for the template for this kind of module.
- As a change to docutils. See https://docutils.sourceforge.io/sandbox/uml-plantUml/ This seems unwieldy.
This does not extend to other languages like LaTeX or HTML.
For HTML, see https://plantuml.com/jquery. The .w document would contain the necessary JQ add-on.
Fr LaTeX, see https://plantuml.com/latex. It's an addition to the tool chain, in effect. The .w document would incorporate the needed LaTeX add-ons.
Use Sphinx and the PlantUML add-on.
This is a separate project. New github repo, etc.
See https://docutils.sourceforge.io/docs/howto/rst-directives.html Specifically the implementation of the image node.
- Parse all the PlantUML command-line options. https://plantuml.com/command-line.
- Create the image node in the document.
This can start as an application-specific directive, which means a special front-end command-line tool. See https://docutils.sourceforge.io/docs/howto/cmdline-tool.html. First, register the new option; then carry on normally.
-gui To run the graphical user interface
-tpng To generate images using PNG format (default)
-tsvg To generate images using SVG format
-teps To generate images using EPS format
-tpdf To generate images using PDF format
-tvdx To generate images using VDX format
-txmi To generate XMI file for class diagram
-tscxml To generate SCXML file for state diagram
-thtml To generate HTML file for class diagram
-ttxt To generate images with ASCII art
-tutxt To generate images with ASCII art using Unicode characters
-tlatex To generate images using LaTeX/Tikz format
-tlatex:nopreamble To generate images using LaTeX/Tikz format without preamble
-o[utput] "dir" To generate images in the specified directory
-DVAR1=value To set a preprocessing variable as if '!define VAR1 value' were used
-Sparam1=value To set a skin parameter as if 'skinparam param1 value' were used
-Ppragma1=value To set pragma as if '!pragma pragma1 value' were used
-I\path\to\file To include file as if '!include file' were used
-I\path\to\*.puml To include files with pattern
-theme xxx To use a specific theme
-charset xxx To use a specific charset (default is windows-1251)
-e[x]clude pattern To exclude files that match the provided pattern
-metadata To retrieve PlantUML sources from PNG images
-nometadata To NOT export metadata in PNG/SVG generated files
-checkmetadata Skip PNG files that don't need to be regenerated
-version To display information about PlantUML and Java versions
-v[erbose] To have log information
-quiet To NOT print error message into the console
-debugsvek To generate intermediate svek files
-h[elp] To display this help message
-testdot To test the installation of graphviz
-graphvizdot "exe" To specify dot executable
-p[ipe] To use stdin for PlantUML source and stdout for PNG/SVG/EPS generation
-encodesprite 4|8|16[z] "file" To encode a sprite at gray level (z for compression) from an image
-computeurl|-encodeurl To compute the encoded URL of a PlantUML source file
-decodeurl To retrieve the PlantUML source from an encoded URL
-syntax To report any syntax error from standard input without generating images
-language To print the list of PlantUML keywords
-checkonly To check the syntax of files without generating images
-failfast To stop processing as soon as a syntax error in diagram occurs
-failfast2 To do a first syntax check before processing files, to fail even faster
-noerror To skip images when error in diagrams
-duration To print the duration of complete diagrams processing
-nbthread N To use (N) threads for processing
-nbthread auto To use 4 threads for processing
-timeout N Processing timeout in (N) seconds. Defaults to 15 minutes (900 seconds).
-author[s] To print information about PlantUML authors
-overwrite To allow to overwrite read only files
-printfonts To print fonts available on your system
-enablestats To enable statistics computation
-disablestats To disable statistics computation (default)
-htmlstats To output general statistics in file plantuml-stats.html
-xmlstats To output general statistics in file plantuml-stats.xml
-realtimestats To generate statistics on the fly rather than at the end
-loopstats To continuously print statistics about usage
-splash To display a splash screen with some progress bar
-progress To display a textual progress bar in console
-pipeimageindex N To generate the Nth image with pipe option
-stdlib To print standard library info
-extractstdlib To extract PlantUML Standard Library into stdlib folder
-filedir xxx To behave as if the PlantUML source is in this dir (only affects '-pipe' and PicoWeb 'POST /render')
-filename "example.puml" To override %filename% variable
-preproc To output preprocessor text of diagrams
-cypher To cypher texts of diagrams so that you can share them
-picoweb To start internal HTTP Server. See https://plantuml.com/picoweb
Of these, some are not useful. -gui, -picoweb, -filedir, -h, -testdot are for an interactive user, as are -syntax, -language, and -checkonly, -author, -splash. The -I... and -e[x], -pipeimageindex, similarly, aren't appropriate from inside RST.
The Docutils directive defines the options from the parsed node. It will also gather the PlantUML source.
When "run":
- Write a temporary file.
- Run the Java image to convert, creating either a temporary file or the expected named file.
- Build the image node.