2 stable releases
1.0.2 | Nov 10, 2022 |
---|---|
1.0.1 | Nov 6, 2022 |
#1641 in Text processing
225KB
5.5K
SLoC
Rustextile - Rust Textile parser
Rustextile is a parser of a popular Textile markup language written in pure Rust. It is a port of two libraries: the python-textile library and the "canonical" PHP Textile implementation (on which the python-textile library is based too).
Functionality
This port passes the same automated tests as the original libraries do, and supports the same full set of functionality, including
- Decorated text spans
- Images
- Tables
- Ordered/unordered lists
- Definition lists
- Complex quotations
- Code blocks
- CSS styles, classes and ID attributes
- Raw HTML inserts
- Footnotes and references
- "Restricted" parsing for untrusted user input and other safety perks
- Rendering in either XHTML or HTML5
- and more...
There is another similar Rust library called textile-rs, which was written from scratch, but sadly supports only basic capabilities of Textile and is not fully compatible with documents created for more advanced canonical parser.
This implementation is a direct port of the canonical PHP parser. It uses a similar code structure, the same regular expressions, mostly the same variable names and the same tests fixtures. This makes it not only more compatible, but also allows to back-port new features and fixes from still actively developing PHP version.
For me this was also a good demonstration that one can rewrite a PHP or Python code in Rust without sacrificing brevity and readability typical for such high-level interpreted languages.
Dependencies
~9–22MB
~322K SLoC