2011-07-24 08:15:35 -05:00
|
|
|
# marked
|
|
|
|
|
2011-10-22 09:16:14 -05:00
|
|
|
A full-featured markdown parser and compiler implemented in ~430 lines of JS.
|
2011-07-24 08:15:35 -05:00
|
|
|
Built for speed.
|
|
|
|
|
|
|
|
## Benchmarks
|
|
|
|
|
2011-08-10 21:52:54 -05:00
|
|
|
``` bash
|
2011-08-26 05:20:42 -05:00
|
|
|
$ node test --bench
|
2011-10-22 09:16:14 -05:00
|
|
|
marked completed in 12071ms.
|
|
|
|
showdown (reuse converter) completed in 27387ms.
|
|
|
|
showdown (new converter) completed in 75617ms.
|
|
|
|
markdown-js completed in 70069ms.
|
2011-08-10 21:52:54 -05:00
|
|
|
```
|
2011-07-24 08:15:35 -05:00
|
|
|
|
2011-08-26 05:20:42 -05:00
|
|
|
## Install
|
|
|
|
|
|
|
|
``` bash
|
|
|
|
$ npm install marked
|
|
|
|
```
|
|
|
|
|
|
|
|
# Another javascript markdown parser
|
2011-08-23 00:07:50 -05:00
|
|
|
|
2011-10-22 09:16:14 -05:00
|
|
|
The point of marked was to create a markdown compiler where it was possible to
|
|
|
|
frequently parse huge chunks of markdown without having to worry about
|
2011-07-24 08:15:35 -05:00
|
|
|
caching the compiled output somehow...or blocking for an unnecesarily long time.
|
|
|
|
|
2011-10-22 09:16:14 -05:00
|
|
|
marked lingers around 430 (may vary) lines long and still implements all
|
2011-08-14 03:34:10 -05:00
|
|
|
markdown features. It is also now fully compatible with the client-side.
|
2011-07-24 08:15:35 -05:00
|
|
|
|
2011-10-22 09:16:14 -05:00
|
|
|
marked more or less passes the official markdown test suite in its
|
|
|
|
entirety. This is important because a surprising number of markdown compilers
|
|
|
|
cannot pass more than a few tests. It was very difficult to get marked as
|
|
|
|
compliant as it is. It could have cut corners in several areas for the sake
|
|
|
|
of performance, but did not in order to be exactly what you expect in terms
|
|
|
|
of a markdown rendering. In fact, this is why marked could be considered at a
|
2011-08-26 05:20:42 -05:00
|
|
|
disadvantage in the benchmarks above.
|
2011-07-24 08:15:35 -05:00
|
|
|
|
|
|
|
## Usage
|
|
|
|
|
2011-08-10 21:50:25 -05:00
|
|
|
``` js
|
|
|
|
var marked = require('marked');
|
|
|
|
console.log(marked('i am using __markdown__.'));
|
|
|
|
```
|
2011-07-24 08:15:35 -05:00
|
|
|
|
|
|
|
You also have direct access to the lexer and parser if you so desire.
|
|
|
|
|
2011-08-10 21:50:25 -05:00
|
|
|
``` js
|
|
|
|
var tokens = marked.lexer(str);
|
|
|
|
console.log(marked.parser(tokens));
|
|
|
|
```
|
2011-07-24 08:15:35 -05:00
|
|
|
|
2011-08-26 05:20:42 -05:00
|
|
|
``` bash
|
|
|
|
$ node
|
|
|
|
> require('marked').lexer('> i am using marked.')
|
|
|
|
[ { type: 'blockquote_start' },
|
|
|
|
{ type: 'text', text: ' i am using marked.' },
|
|
|
|
{ type: 'blockquote_end' },
|
|
|
|
links: {} ]
|
|
|
|
```
|
|
|
|
|
2011-07-24 08:15:35 -05:00
|
|
|
## Todo (& notes to self)
|
|
|
|
|
|
|
|
- Implement GFM features.
|
2011-10-22 09:16:14 -05:00
|
|
|
- Possibly add some
|
|
|
|
[ReMarkable](http://camendesign.com/code/remarkable/documentation.html)
|
2011-07-24 08:15:35 -05:00
|
|
|
features while remaining backwardly compatible with all markdown syntax.
|
2011-08-26 05:20:42 -05:00
|
|
|
- Optimize the lexer to return an iterator instead of a collection of tokens.
|
2011-07-24 08:15:35 -05:00
|
|
|
- Add an explicit pretty printing and minification feature.
|