From 97f3a83c2963ffbb6c52f88cd267f42118d5cf3d Mon Sep 17 00:00:00 2001 From: Vitaly Puzrin Date: Fri, 10 Oct 2014 09:16:03 +0400 Subject: [PATCH] Docs update --- README.md | 88 ++++++++++++++++++++++++++++++++----- demo/sample.md | 4 ++ lib/defaults/typographer.js | 17 ++++--- 3 files changed, 90 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index ab5ab2c..1275a6f 100644 --- a/README.md +++ b/README.md @@ -8,11 +8,14 @@ remarkable Markdown parser done right. Fast and easy to extend. +- Configurable syntax! You can add new rules and even replace existing ones. +- Support [CommonMark](http://commonmark.org/) spec. +- Very high speed. + __[Live demo](http://jonschlinkert.github.io/remarkable/demo/)__ -Install -------- +## Install node.js: @@ -27,8 +30,7 @@ bower install remarkable --save ``` -Usage ------ +## Usage ```javascript var Remarkable = require('remarkable'); @@ -38,7 +40,7 @@ var md = new Remarkable({ xhtmlOut: false, // Use '/' to close single tags (
) breaks: false, // Convert '\n' in paragraphs into
langPrefix: 'language-', // CSS language prefix for fenced blocks - linkify: false, // autoconvert url-like texts to links + linkify: false, // Autoconvert url-like texts to links typographer: false, // Enable smartypants and other sweet transforms // Highlighter function. Should return escaped html, @@ -62,16 +64,82 @@ md.set({ }); ``` +__Note.__ To acheive best performance, don't modify `Remarkable` instance on +the fly. If you need several configurations - create multiple instances and +setup each appropriately. + +You can also reset parser to strict [CommonMark](http://commonmark.org/) mode: + +```javascript +var Remarkable = require('remarkable'); +var md = new Remarkable('commonmark'); +``` + +### Typorgapher + +Though full weigh typograpic replacements are language specific, `remarkabple` +provides the most common and universal case coverage: + +```javascript +var Remarkable = require('remarkable'); +var md = new Remarkable({ typographer: true }); + +md.typographer.set({ + singleQuotes: '‘’', + doubleQuotes: '“”', // «» - russian, „“ - deutch + copyright: true, // (c) (C) -> © + trademark: true, // (tm) (TM) -> ™ + registered: true, // (r) (R) -> ® + plusminus: true, // +- -> ± + paragraph: true, // (p) (P) -> § + ellipsis: true, // ... -> … + dupes: true, // ???????? -> ???, !!!!! -> !!!, `,,` -> `,` + emDashes: true // -- -> — +}) +``` + + +## References / Thanks + +Big thanks to [John MacFarlane](https://github.com/jgm) for his work on +CommonMark spec and reference implementations. His work saved us a lot of time +during this project development. + +Links: + +1. https://github.com/jgm/stmd - reference CommonMark implementations in C & JS, + also contains latest spec & online demo. +2. http://talk.commonmark.org - CommonMark forum, good place to collaborate + developpers efforts. + + +## Development / Modification + +Parser consists of several responsibilities chains, filled with rules. You can +reconfigure anyone as you wish. Render also can be modified and extended. See +source code to understand details. Pay attention to this properties: + +```javascript +Remarkable.block +Remarkable.block.ruler +Remarkable.inline +Remarkable.inline.ruler +Remarkable.typographer +Remarkable.typographer.ruler +Remarkable.linkifier +Remarkable.linkifier.ruler +Remarkable.renderer +Remarkable.renderer.rules +``` + -Authors -------- +## Authors - Jon Schlinkert [github/jonschlinkert](https://github.com/jonschlinkert) - Alex Kocharin [github/rlidwka](https://github.com/rlidwka) - Vitaly Puzrin [github/puzrin](https://github.com/puzrin) -License -------- +## License -[MIT](https://github.com/jonschlinkert/remarkable/blob/master/LICENSE) \ No newline at end of file +[MIT](https://github.com/jonschlinkert/remarkable/blob/master/LICENSE) diff --git a/demo/sample.md b/demo/sample.md index d3fc50e..a51c708 100644 --- a/demo/sample.md +++ b/demo/sample.md @@ -27,6 +27,10 @@ test.. test... test..... test?..... test!.... Remarkable -- awesome +"Smartypants, double quotes" + +'Smartypants, single quotes' + ## Emphasis diff --git a/lib/defaults/typographer.js b/lib/defaults/typographer.js index b4d7963..3d637d4 100644 --- a/lib/defaults/typographer.js +++ b/lib/defaults/typographer.js @@ -6,13 +6,12 @@ module.exports = { singleQuotes: '‘’', doubleQuotes: '“”', // «» - russian, „“ - deutch - copyright: true, - trademark: true, - registered: true, - plusminus: true, - paragraph: true, - ellipsis: true, - dupes: true, - emDashes: true, - linkify: true + copyright: true, // (c) (C) -> © + trademark: true, // (tm) (TM) -> ™ + registered: true, // (r) (R) -> ® + plusminus: true, // +- -> ± + paragraph: true, // (p) (P) -> § + ellipsis: true, // ... -> … + dupes: true, // ???????? -> ???, !!!!! -> !!!, `,,` -> `,` + emDashes: true // -- -> — };