/README.markdown
Markdown | 131 lines | 95 code | 36 blank | 0 comment | 0 complexity | 7305342a6875e0a40231d66cb8c23f74 MD5 | raw file
- Sundown
- =======
- `Sundown` is a Markdown parser based on the original code of the
- [Upskirt library](http://fossil.instinctive.eu/libupskirt/index) by Natacha Porté.
- Features
- --------
- * **Fully standards compliant**
- `Sundown` passes out of the box the official Markdown v1.0.0 and v1.0.3
- 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**
- `Sundown` has optional support for several (unofficial) Markdown extensions,
- such as non-strict emphasis, fenced code blocks, tables, autolinks,
- strikethrough and more.
- * **UTF-8 aware**
- `Sundown` is fully UTF-8 aware, both when parsing the source document and when
- generating the resulting (X)HTML code.
- * **Tested & Ready to be used on production**
- `Sundown` has been extensively security audited, and includes protection against
- all possible DOS attacks (stack overflows, out of memory situations, malformed
- Markdown syntax...) and against client attacks through malicious embedded HTML.
- We've worked very hard to make `Sundown` never crash or run out of memory
- under *any* input. `Sundown` renders all the Markdown content in GitHub and so
- far hasn't crashed a single time.
- * **Customizable renderers**
- `Sundown` is not stuck with XHTML output: the Markdown parser of the library
- is decoupled from the renderer, so it's trivial to extend the library with
- custom renderers. A fully functional (X)HTML renderer is included.
- * **Optimized for speed**
- `Sundown` is written in C, with a special emphasis on performance. When wrapped
- 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**
- `Sundown` is a zero-dependency library composed of 3 `.c` files and their headers.
- No dependencies, no bullshit. Only standard C99 that builds everywhere.
- Credits
- -------
- `Sundown` is based on the original Upskirt parser by Natacha Porté, with many additions
- by Vicent Marti (@tanoku) and contributions from the following authors:
- Ben Noordhuis, Bruno Michel, Joseph Koshy, Krzysztof Kowalczyk, Samuel Bronson,
- Shuhei Tanuma
- Bindings
- --------
- `Sundown` is available from other programming languages thanks to these bindings developed
- by our awesome contributors.
- - [Redcarpet](https://github.com/tanoku/redcarpet) (Ruby)
- - [RobotSkirt](https://github.com/benmills/robotskirt) (Node.js)
- - [Misaka](https://github.com/FSX/misaka) (Python)
- - [ffi-sundown](https://github.com/postmodern/ffi-sundown) (Ruby FFI)
- - [Sundown HS](https://github.com/rostayob/sundown) (Haskell)
- - [Goskirt](https://github.com/madari/goskirt) (Go)
- - [Upskirt.go](https://github.com/buu700/upskirt.go) (Go)
- - [MoonShine](https://github.com/brandonc/moonshine) (.NET)
- - [PHP-Sundown](https://github.com/chobie/php-sundown) (PHP)
- - [Sundown.net](https://github.com/txdv/sundown.net) (.NET)
- Help us
- -------
- `Sundown` 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,
- either directly via email or by opening an Issue on GitHub, and help make the web safer
- for everybody.
- Unicode character handling
- --------------------------
- Given that the Markdown spec makes no provision for Unicode character handling, `Sundown`
- 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.
- Install
- -------
- There is nothing to install. `Sundown` is composed of 3 `.c` files (`markdown.c`,
- `buffer.c` and `array.c`), so just throw them in your project. Zero-dependency means
- zero-dependency. You might want to include `render/html.c` if you want to use the
- included XHTML renderer, or write your own renderer. Either way, it's all fun and joy.
- If you are hardcore, you can use the included `Makefile` to build `Sundown` into a dynamic
- library, or to build the sample `sundown` executable, which is just a commandline
- Markdown to XHTML parser. (If gcc gives you grief about `-fPIC`, e.g. with MinGW, try
- `make MFLAGS=` instead of just `make`.)
- License
- -------
- Permission to use, copy, modify, and distribute this software for any
- purpose with or without fee is hereby granted, provided that the above
- copyright notice and this permission notice appear in all copies.
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- <!-- Local Variables: -->
- <!-- fill-column: 89 -->
- <!-- End: -->