summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authorDevin Torres <devin@devintorr.es>2013-09-20 01:09:52 -0500
committerDevin Torres <devin@devintorr.es>2013-09-20 01:14:14 -0500
commit189b325f19bc91691cf7ee24484de86f1c3c8a73 (patch)
treee1b254dc180e3b60a30a8de85857e817bc8138b2 /README.md
parent2a4559138422c3320dd6a51d7673168aaaa8eb68 (diff)
downloadrust-hoedown-189b325f19bc91691cf7ee24484de86f1c3c8a73.tar.gz
Begin code reorganization
Diffstat (limited to 'README.md')
-rw-r--r--README.md135
1 files changed, 135 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..39979eb
--- /dev/null
+++ b/README.md
@@ -0,0 +1,135 @@
+Hoedown
+=======
+
+`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é.
+
+Features
+--------
+
+* **Fully standards compliant**
+
+ `Hoedown` 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**
+
+ `Hoedown` has optional support for several (unofficial) Markdown extensions,
+ such as non-strict emphasis, fenced code blocks, tables, autolinks,
+ strikethrough and more.
+
+* **UTF-8 aware**
+
+ `Hoedown` 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 `Hoedown` never crash or run out of memory
+ under *any* input. `Hoedown` renders all the Markdown content in GitHub and so
+ far hasn't crashed a single time.
+
+* **Customizable renderers**
+
+ `Hoedown` 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**
+
+ `Hoedown` 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**
+
+ `Hoedown` is a zero-dependency library composed of 3 `.c` files and their headers.
+ No dependencies, no bullshit. Only standard C99 that builds everywhere.
+
+Credits
+-------
+
+`Hoedown` is a fork of `Sundown`.
+
+`Sundown` is based on the original Upskirt parser by Natacha Porté, with many additions
+by Vicent Marti (@vmg) and contributions from the following authors:
+
+ Ben Noordhuis, Bruno Michel, Joseph Koshy, Krzysztof Kowalczyk, Samuel Bronson,
+ Shuhei Tanuma
+
+Bindings
+--------
+
+`Hoedown` is available from other programming languages thanks to these bindings developed
+by our awesome contributors.
+
+- [Redcarpet](https://github.com/vmg/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/bitonic/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
+-------
+
+`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,
+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, `Hoedown`
+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. `Hoedown` 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 `Hoedown` 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: -->