hoedown/README.md

105 lines
3.9 KiB
Markdown
Raw Permalink Normal View History

2013-09-19 14:25:00 +00:00
Hoedown
2011-04-15 08:36:46 +00:00
=======
2013-09-26 01:17:30 +00:00
[![Build Status](https://travis-ci.org/hoedown/hoedown.png?branch=master)](https://travis-ci.org/hoedown/hoedown)
2013-09-21 01:02:58 +00:00
2013-09-19 14:25:00 +00:00
`Hoedown` is a revived fork of [Sundown](https://github.com/vmg/sundown),
the Markdown parser based on the original code of the
[Upskirt library](http://fossil.instinctive.eu/libupskirt/index)
by Natacha Porté.
2011-04-15 08:36:46 +00:00
Features
--------
2011-04-15 08:58:19 +00:00
2011-07-19 08:03:14 +00:00
* **Fully standards compliant**
2011-04-15 08:36:46 +00:00
2013-09-19 14:25:00 +00:00
`Hoedown` passes out of the box the official Markdown v1.0.0 and v1.0.3
2011-04-15 08:36:46 +00:00
test suites, and has been extensively tested with additional corner cases
to make sure its output is as sane as possible at all times.
* **Massive extension support**
2011-04-15 08:36:46 +00:00
2013-09-19 14:25:00 +00:00
`Hoedown` has optional support for several (unofficial) Markdown extensions,
2011-04-15 08:36:46 +00:00
such as non-strict emphasis, fenced code blocks, tables, autolinks,
strikethrough and more.
2011-09-02 21:28:20 +00:00
* **UTF-8 aware**
2013-09-19 14:25:00 +00:00
`Hoedown` is fully UTF-8 aware, both when parsing the source document and when
2011-09-02 21:28:20 +00:00
generating the resulting (X)HTML code.
* **Tested & Ready to be used on production**
2011-09-02 21:07:02 +00:00
`Hoedown` has been extensively security audited, and includes protection against
2011-04-15 08:36:46 +00:00
all possible DOS attacks (stack overflows, out of memory situations, malformed
2014-04-07 15:20:12 +00:00
Markdown syntax...).
2011-04-15 08:36:46 +00:00
We've worked very hard to make `Hoedown` never leak or crash under *any* input.
2011-04-15 08:36:46 +00:00
2014-04-07 15:20:12 +00:00
**Warning**: `Hoedown` doesn't validate or post-process the HTML in Markdown documents.
Unless you use `HTML_ESCAPE` or `HTML_SKIP`, you should strongly consider using a
good post-processor in conjunction with Hoedown to prevent client-side attacks.
* **Customizable renderers**
2011-04-15 08:36:46 +00:00
2013-09-19 14:25:00 +00:00
`Hoedown` is not stuck with XHTML output: the Markdown parser of the library
2011-04-15 08:36:46 +00:00
is decoupled from the renderer, so it's trivial to extend the library with
custom renderers. A fully functional (X)HTML renderer is included.
2011-04-15 08:36:46 +00:00
* **Optimized for speed**
2011-04-15 08:36:46 +00:00
2013-09-19 14:25:00 +00:00
`Hoedown` is written in C, with a special emphasis on performance. When wrapped
2011-04-15 08:36:46 +00:00
on a dynamic language such as Python or Ruby, it has shown to be up to 40
times faster than other native alternatives.
* **Zero-dependency**
2011-04-15 08:36:46 +00:00
`Hoedown` is a zero-dependency library composed of some `.c` files and their
headers. No dependencies, no bullshit. Only standard C99 that builds everywhere.
2011-04-15 08:36:46 +00:00
2014-02-07 14:34:30 +00:00
* **Additional features**
`Hoedown` comes with a fully functional implementation of SmartyPants,
a separate autolinker, escaping utilities, buffers and stacks.
2011-05-11 17:11:55 +00:00
Bindings
--------
2013-09-20 15:28:25 +00:00
You can see a community-maintained list of `Hoedown` bindings at
2013-10-03 11:42:29 +00:00
[the wiki](https://github.com/hoedown/hoedown/wiki/Bindings). There is also a
2013-09-27 23:07:44 +00:00
[migration guide](https://github.com/hoedown/hoedown/wiki/Migration-Guide)
available for authors of Sundown bindings.
2011-05-11 17:11:55 +00:00
2011-04-15 08:36:46 +00:00
Help us
-------
2013-09-19 14:25:00 +00:00
`Hoedown` is all about security. If you find a (potential) security vulnerability in the
library, or a way to make it crash through malicious input, please report it to us by
emailing the private [Hoedown Security](mailto:hoedown-security@googlegroups.com)
mailing list. The `Hoedown` security team will review the vulnerability and work with you
to reproduce and resolve it.
2011-04-15 08:36:46 +00:00
2011-09-02 21:28:20 +00:00
Unicode character handling
--------------------------
2013-09-19 14:25:00 +00:00
Given that the Markdown spec makes no provision for Unicode character handling, `Hoedown`
2011-09-02 21:28:20 +00:00
takes a conservative approach towards deciding which extended characters trigger Markdown
features:
* Punctuation characters outside of the U+007F codepoint are not handled as punctuation.
They are considered as normal, in-word characters for word-boundary checks.
* Whitespace characters outside of the U+007F codepoint are not considered as
whitespace. They are considered as normal, in-word characters for word-boundary checks.
2011-04-15 08:36:46 +00:00
Install
-------
Just typing `make` will build `Hoedown` into a dynamic library and create the `hoedown`
and `smartypants` executables, which are command-line tools to render Markdown to HTML
and perform SmartyPants, respectively.
2011-04-15 08:36:46 +00:00
If you are using [CocoaPods](http://cocoapods.org), just add the line `pod 'hoedown'` to your Podfile and call `pod install`.
Or, if you prefer, you can just throw the files at `src` into your project.