# Render README files the same way(ish) as GitHub et al.
Readme to HTML conversion for lib.rs.
Supports:
* Markdown with GitHub's extensions (natively in Rust), reStructuredText (via `rst2html`), and a tiny subset of AsciiDoc.
* URL rewriting.
* Filtering out unsafe HTML.
* GitHub Emoji.
* GitHub's hack for light/dark images.
* Supports syntax highlighting using Sublime Text syntax definitions. The markup is color agnostic.
Instead of hardcoding colors, it writes scope class names. Actual theme colors are in the [style subproject](https://gitlab.com/lib.rs/style).
* Fuzzy detection of programming languages used in `<code>` tags, tuned for languages mentioned by Rust crates.
## Installation
Install `docutils` package, so that `rst2html` command is available (in `PATH`).
It needs to write a file to system's temp directory for `rst2html`. If you clear temp while the program is running, rst support may fail.
## Making a theme
It generates HTML `<span>` class names based on scope names from Sublime Syntax files, but:
* words used in the scopes are abbreviated. See `highlight.rs` for the list of abbreviations.
* Only scopes with 2 and 3 levels are added (more specific scopes are truncated to the first 3 words).
## Adding more languages
All languages are precompiled from `syntaxes/` submodule.
`tmLanguage` definitions need to be [converted first](https://github.com/aziz/SublimeSyntaxConvertor).