Blame view

node_modules/markdown-it/README.md 8.9 KB
290144e9   易尊强   第一次
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
  # markdown-it
  
  [![Build Status](https://img.shields.io/travis/markdown-it/markdown-it/master.svg?style=flat)](https://travis-ci.org/markdown-it/markdown-it)
  [![NPM version](https://img.shields.io/npm/v/markdown-it.svg?style=flat)](https://www.npmjs.org/package/markdown-it)
  [![Coverage Status](https://coveralls.io/repos/markdown-it/markdown-it/badge.svg?branch=master&service=github)](https://coveralls.io/github/markdown-it/markdown-it?branch=master)
  [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/markdown-it/markdown-it)
  
  > Markdown parser done right. Fast and easy to extend.
  
  __[Live demo](https://markdown-it.github.io)__
  
  - Follows the __[CommonMark spec](http://spec.commonmark.org/)__ + adds syntax extensions & sugar (URL autolinking, typographer).
  - Configurable syntax! You can add new rules and even replace existing ones.
  - High speed.
  - [Safe](https://github.com/markdown-it/markdown-it/tree/master/docs/security.md) by default.
  - Community-written __[plugins](https://www.npmjs.org/browse/keyword/markdown-it-plugin)__ and [other packages](https://www.npmjs.org/browse/keyword/markdown-it) on npm.
  
  __Table of content__
  
  - [Install](#install)
  - [Usage examples](#usage-examples)
  - [API](#api)
  - [Syntax extensions](#syntax-extensions)
  - [Benchmark](#benchmark)
  - [Authors](#authors)
  - [References / Thanks](#references--thanks)
  - [License](#license)
  
  ## Install
  
  **node.js** & **bower**:
  
  ```bash
  npm install markdown-it --save
  bower install markdown-it --save
  ```
  
  **browser (CDN):**
  
  - [jsDeliver CDN](http://www.jsdelivr.com/#!markdown-it "jsDelivr CDN")
  - [cdnjs.com CDN](https://cdnjs.com/libraries/markdown-it "cdnjs.com")
  
  
  ## Usage examples
  
  See also:
  
  - __[API documentation](https://markdown-it.github.io/markdown-it/)__ - for more
    info and examples.
  - [Development info](https://github.com/markdown-it/markdown-it/tree/master/docs) -
    for plugins writers.
  
  
  ### Simple
  
  ```js
  // node.js, "classic" way:
  var MarkdownIt = require('markdown-it'),
      md = new MarkdownIt();
  var result = md.render('# markdown-it rulezz!');
  
  // node.js, the same, but with sugar:
  var md = require('markdown-it')();
  var result = md.render('# markdown-it rulezz!');
  
  // browser without AMD, added to "window" on script load
  // Note, there is no dash in "markdownit".
  var md = window.markdownit();
  var result = md.render('# markdown-it rulezz!');
  ```
  
  Single line rendering, without paragraph wrap:
  
  ```js
  var md = require('markdown-it')();
  var result = md.renderInline('__markdown-it__ rulezz!');
  ```
  
  
  ### Init with presets and options
  
  (*) presets define combinations of active rules and options. Can be
  `"commonmark"`, `"zero"` or `"default"` (if skipped). See
  [API docs](https://markdown-it.github.io/markdown-it/#MarkdownIt.new) for more details.
  
  ```js
  // commonmark mode
  var md = require('markdown-it')('commonmark');
  
  // default mode
  var md = require('markdown-it')();
  
  // enable everything
  var md = require('markdown-it')({
    html: true,
    linkify: true,
    typographer: true
  });
  
  // full options list (defaults)
  var md = require('markdown-it')({
    html:         false,        // Enable HTML tags in source
    xhtmlOut:     false,        // Use '/' to close single tags (<br />).
                                // This is only for full CommonMark compatibility.
    breaks:       false,        // Convert '\n' in paragraphs into <br>
    langPrefix:   'language-',  // CSS language prefix for fenced blocks. Can be
                                // useful for external highlighters.
    linkify:      false,        // Autoconvert URL-like text to links
  
    // Enable some language-neutral replacement + quotes beautification
    typographer:  false,
  
    // Double + single quotes replacement pairs, when typographer enabled,
    // and smartquotes on. Could be either a String or an Array.
    //
    // For example, you can use '«»„“' for Russian, '„“‚‘' for German,
    // and ['«\xA0', '\xA0»', '‹\xA0', '\xA0›'] for French (including nbsp).
    quotes: '“”‘’',
  
    // Highlighter function. Should return escaped HTML,
    // or '' if the source string is not changed and should be escaped externally.
    // If result starts with <pre... internal wrapper is skipped.
    highlight: function (/*str, lang*/) { return ''; }
  });
  ```
  
  ### Plugins load
  
  ```js
  var md = require('markdown-it')()
              .use(plugin1)
              .use(plugin2, opts, ...)
              .use(plugin3);
  ```
  
  
  ### Syntax highlighting
  
  Apply syntax highlighting to fenced code blocks with the `highlight` option:
  
  ```js
  var hljs = require('highlight.js'); // https://highlightjs.org/
  
  // Actual default values
  var md = require('markdown-it')({
    highlight: function (str, lang) {
      if (lang && hljs.getLanguage(lang)) {
        try {
          return hljs.highlight(lang, str).value;
        } catch (__) {}
      }
  
      return ''; // use external default escaping
    }
  });
  ```
  
  Or with full wrapper override (if you need assign class to `<pre>`):
  
  ```js
  var hljs = require('highlight.js'); // https://highlightjs.org/
  
  // Actual default values
  var md = require('markdown-it')({
    highlight: function (str, lang) {
      if (lang && hljs.getLanguage(lang)) {
        try {
          return '<pre class="hljs"><code>' +
                 hljs.highlight(lang, str, true).value +
                 '</code></pre>';
        } catch (__) {}
      }
  
      return '<pre class="hljs"><code>' + md.utils.escapeHtml(str) + '</code></pre>';
    }
  });
  ```
  
  ### Linkify
  
  `linkify: true` uses [linkify-it](https://github.com/markdown-it/linkify-it). To
  configure linkify-it, access the linkify instance through `md.linkify`:
  
  ```js
  md.linkify.tlds('.py', false);  // disables .py as top level domain
  ```
  
  
  ## API
  
  __[API documentation](https://markdown-it.github.io/markdown-it/)__
  
  If you are going to write plugins - take a look at
  [Development info](https://github.com/markdown-it/markdown-it/tree/master/docs).
  
  
  ## Syntax extensions
  
  Embedded (enabled by default):
  
  - [Tables](https://help.github.com/articles/organizing-information-with-tables/) (GFM)
  - [Strikethrough](https://help.github.com/articles/basic-writing-and-formatting-syntax/#styling-text) (GFM)
  
  Via plugins:
  
  - [subscript](https://github.com/markdown-it/markdown-it-sub)
  - [superscript](https://github.com/markdown-it/markdown-it-sup)
  - [footnote](https://github.com/markdown-it/markdown-it-footnote)
  - [definition list](https://github.com/markdown-it/markdown-it-deflist)
  - [abbreviation](https://github.com/markdown-it/markdown-it-abbr)
  - [emoji](https://github.com/markdown-it/markdown-it-emoji)
  - [custom container](https://github.com/markdown-it/markdown-it-container)
  - [insert](https://github.com/markdown-it/markdown-it-ins)
  - [mark](https://github.com/markdown-it/markdown-it-mark)
  - ... and [others](https://www.npmjs.org/browse/keyword/markdown-it-plugin)
  
  
  ### Manage rules
  
  By default all rules are enabled, but can be restricted by options. On plugin
  load all its rules are enabled automatically.
  
  ```js
  // Activate/deactivate rules, with curring
  var md = require('markdown-it')()
              .disable([ 'link', 'image' ])
              .enable([ 'link' ])
              .enable('image');
  
  // Enable everything
  md = require('markdown-it')({
    html: true,
    linkify: true,
    typographer: true,
  });
  ```
  
  
  ## Benchmark
  
  Here is the result of readme parse at MB Pro Retina 2013 (2.4 GHz):
  
  ```bash
  make benchmark-deps
  benchmark/benchmark.js readme
  
  Selected samples: (1 of 28)
   > README
  
  Sample: README.md (7774 bytes)
   > commonmark-reference x 1,222 ops/sec ±0.96% (97 runs sampled)
   > current x 743 ops/sec ±0.84% (97 runs sampled)
   > current-commonmark x 1,568 ops/sec ±0.84% (98 runs sampled)
   > marked x 1,587 ops/sec ±4.31% (93 runs sampled)
  ```
  
  __Note.__ CommonMark version runs with [simplified link normalizers](https://github.com/markdown-it/markdown-it/blob/master/benchmark/implementations/current-commonmark/index.js)
  for more "honest" compare. Difference is ~ 1.5x.
  
  As you can see, `markdown-it` doesn't pay with speed for it's flexibility.
  Slowdown of "full" version caused by additional features not available in
  other implementations.
  
  
  ## Authors
  
  - Alex Kocharin [github/rlidwka](https://github.com/rlidwka)
  - Vitaly Puzrin [github/puzrin](https://github.com/puzrin)
  
  _markdown-it_ is the result of the decision of the authors who contributed to
  99% of the _Remarkable_ code to move to a project with the same authorship but
  new leadership (Vitaly and Alex). It's not a fork.
  
  ## References / Thanks
  
  Big thanks to [John MacFarlane](https://github.com/jgm) for his work on the
  CommonMark spec and reference implementations. His work saved us a lot of time
  during this project's development.
  
  **Related Links:**
  
  - https://github.com/jgm/CommonMark - reference CommonMark implementations in C & JS,
    also contains latest spec & online demo.
  - http://talk.commonmark.org - CommonMark forum, good place to collaborate
    developers' efforts.
  
  **Ports**
  
  - [motion-markdown-it](https://github.com/digitalmoksha/motion-markdown-it) - Ruby/RubyMotion
  
  
  ## License
  
  [MIT](https://github.com/markdown-it/markdown-it/blob/master/LICENSE)