render_readme 0.15.0

Render Markdown or reStructuredText with syntax highlighting and image filtering similar to GitHub's
Documentation

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.
  • 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.