Welcome to Foliant!¶
Foliant is a all-in-one documentation authoring tool. It lets you produce standalone documents in pdf and docx, as well as websites, from single Markdown source.
Foliant preprocessors let you include parts of documents in other documents, show and hide content with flags, render diagrams from text, and much more.
Logo made by Hand Drawn Goods from www.flaticon.com.
Who Is It for?¶
You’ll love Foliant if you:
- need to ship documentation as pdf, docx, and website forms
- want to use Markdown with consistent extension system instead of custome syntax for every new bit of functionality
- like reStructuredText’s extensibility and Asciidoc’s flexibility, but actually would rather use Markdown
- want a tool that you can actually write custom extensions for without dealing with something as overengineered as Sphinx
- have documentation spread across many repos and want to reuse parts between documents
- Allow to specify custom options for EscapeCode preprocessor as the
escape_code.optionsconfig parameter value.
- Pass the
BaseParser()as an optional argument for using in config extensions.
escape_codeconfig option. To use it, escapecode and unescapecode preprocessors must be installed.
- Process attribute values of pseudo-XML tags as YAML.
- Allow single quotes for enclosing attribute values of pseudo-XML tags.
- Restore quiet mode.
- Add the
output()method for using in preprocessors.
- Remove spinner made with Halo.
- Abolish quiet mode because it is useless if extensions are allowed to write anything to STDOUT.
- Show full tracebacks in debug mode; write full tracebacks into logs.
- CLI: If no args are provided, print help.
- Fix tags searching pattern in _unescape preprocessor.
- Allow to override default config file name in CLI.
- Allow multiline tags. Process
falseattribute values as boolean, not as integer.
- Add tests.
- Improve code style.
- Breaking change. Add logging to all stages of building a project. Config parser extensions, CLI extensions, backends, and preprocessors can now access
self.loggerand create child loggers with
self.logger = self.logger.getChild('newbackend').
pretarget that applies the preprocessors from the config and returns a Foliant project that doesn't require any preprocessing.
makenow returns its result, which makes is easier to call it from extensions.
- Fix critical issue when config parsing would fail if any config value contained non-latin characters.
- Use README.md as package description.
- Fix critical bug with CLI module caused by missing version definition in the root
- Complete rewrite.