81fe61c0891ce0fb23f322bab053fd7e2a3e7f38
[roojs1] / docs / src / Roo_Markdown.js.html
1 <html><head><title>Roo/Markdown.js</title><link rel="stylesheet" type="text/css" href="../../css/highlight-js.css"/></head><body class="highlightpage"><code class="jsdoc-pretty"><span class="jsdoc-comment">//
2  /**
3  * marked - a markdown parser
4  * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)
5  * https://github.com/chjj/marked
6  */
7
8
9 /**
10  *
11  * Roo.Markdown - is a very crude wrapper around marked..
12  *
13  * usage:
14  * 
15  * alert( Roo.Markdown.toHtml(&quot;Markdown *rocks*.&quot;) );
16  * 
17  * Note: move the sample code to the bottom of this
18  * file before uncommenting it.
19  *
20  */
21
22 </span><span class="jsdoc-var">Roo.Markdown </span><span class="jsdoc-syntax">= {};
23 </span><span class="jsdoc-var">Roo.Markdown.toHtml </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">) {
24
25     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">c </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.Markdown.marked.setOptions</span><span class="jsdoc-syntax">({
26             </span><span class="jsdoc-var">renderer</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.Markdown.marked.Renderer</span><span class="jsdoc-syntax">(),
27             </span><span class="jsdoc-var">gfm</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
28             </span><span class="jsdoc-var">tables</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
29             </span><span class="jsdoc-var">breaks</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
30             </span><span class="jsdoc-var">pedantic</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
31             </span><span class="jsdoc-var">sanitize</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
32             </span><span class="jsdoc-var">smartLists</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
33             </span><span class="jsdoc-var">smartypants</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false
34           </span><span class="jsdoc-syntax">});
35     </span><span class="jsdoc-comment">// A FEW HACKS!!?
36
37     </span><span class="jsdoc-var">text </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">text.replace</span><span class="jsdoc-syntax">(/\\\n/g,</span><span class="jsdoc-string">' '</span><span class="jsdoc-syntax">);
38     </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">Roo.Markdown.marked</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">);
39 };
40 </span><span class="jsdoc-comment">//
41 // converter
42 //
43 // Wraps all &quot;globals&quot; so that the only thing
44 // exposed is makeHtml().
45 //
46 </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() {
47
48     </span><span class="jsdoc-comment">/**
49      * Block-Level Grammar
50      */
51
52     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">block </span><span class="jsdoc-syntax">= {
53       </span><span class="jsdoc-var">newline</span><span class="jsdoc-syntax">: /^\n+/,
54       </span><span class="jsdoc-var">code</span><span class="jsdoc-syntax">: /^( {4}[^\n]+\n*)+/,
55       </span><span class="jsdoc-var">fences</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">noop</span><span class="jsdoc-syntax">,
56       </span><span class="jsdoc-var">hr</span><span class="jsdoc-syntax">: /^( *[-*_]){3,} *(?:\n+|$)/,
57       </span><span class="jsdoc-var">heading</span><span class="jsdoc-syntax">: /^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,
58       </span><span class="jsdoc-var">nptable</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">noop</span><span class="jsdoc-syntax">,
59       </span><span class="jsdoc-var">lheading</span><span class="jsdoc-syntax">: /^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,
60       </span><span class="jsdoc-var">blockquote</span><span class="jsdoc-syntax">: /^( *&gt;[^\n]+(\n(?!def)[^\n]+)*\n*)+/,
61       </span><span class="jsdoc-var">list</span><span class="jsdoc-syntax">: /^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,
62       </span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">: /^ *(?:comment *(?:\n|\s*$)|closed *(?:\n{2,}|\s*$)|closing *(?:\n{2,}|\s*$))/,
63       </span><span class="jsdoc-var">def</span><span class="jsdoc-syntax">: /^ *\[([^\]]+)\]: *&lt;?([^\s&gt;]+)&gt;?(?: +[&quot;(]([^\n]+)[&quot;)])? *(?:\n+|$)/,
64       </span><span class="jsdoc-var">table</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">noop</span><span class="jsdoc-syntax">,
65       </span><span class="jsdoc-var">paragraph</span><span class="jsdoc-syntax">: /^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/,
66       </span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">: /^[^\n]+/
67     };
68
69     </span><span class="jsdoc-var">block.bullet </span><span class="jsdoc-syntax">= /(?:[*+-]|\d+\.)/;
70     </span><span class="jsdoc-var">block.item </span><span class="jsdoc-syntax">= /^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/;
71     </span><span class="jsdoc-var">block.item </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">replace</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">block.item</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'gm'</span><span class="jsdoc-syntax">)
72       (/bull/g, </span><span class="jsdoc-var">block.bullet</span><span class="jsdoc-syntax">)
73       ();
74
75     </span><span class="jsdoc-var">block.list </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">replace</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">block.list</span><span class="jsdoc-syntax">)
76       (/bull/g, </span><span class="jsdoc-var">block.bullet</span><span class="jsdoc-syntax">)
77       (</span><span class="jsdoc-string">'hr'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'\\n+(?=\\1?(?:[-*_] *){3,}(?:\\n+|$))'</span><span class="jsdoc-syntax">)
78       (</span><span class="jsdoc-string">'def'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'\\n+(?=' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">block.def.source </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">')'</span><span class="jsdoc-syntax">)
79       ();
80
81     </span><span class="jsdoc-var">block.blockquote </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">replace</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">block.blockquote</span><span class="jsdoc-syntax">)
82       (</span><span class="jsdoc-string">'def'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">block.def</span><span class="jsdoc-syntax">)
83       ();
84
85     </span><span class="jsdoc-var">block._tag </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'(?!(?:'
86       </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'
87       </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'
88       </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|[^\\w\\s@]*@)\\b'</span><span class="jsdoc-syntax">;
89
90     </span><span class="jsdoc-var">block.html </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">replace</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">block.html</span><span class="jsdoc-syntax">)
91       (</span><span class="jsdoc-string">'comment'</span><span class="jsdoc-syntax">, /&lt;!--[\s\S]*?--&gt;/)
92       (</span><span class="jsdoc-string">'closed'</span><span class="jsdoc-syntax">, /&lt;(tag)[\s\S]+?&lt;\/\1&gt;/)
93       (</span><span class="jsdoc-string">'closing'</span><span class="jsdoc-syntax">, /&lt;tag(?:&quot;[^&quot;]*&quot;|'[^']*'|[^'&quot;&gt;])*?&gt;/)
94       (/tag/g, </span><span class="jsdoc-var">block._tag</span><span class="jsdoc-syntax">)
95       ();
96
97     </span><span class="jsdoc-var">block.paragraph </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">replace</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">block.paragraph</span><span class="jsdoc-syntax">)
98       (</span><span class="jsdoc-string">'hr'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">block.hr</span><span class="jsdoc-syntax">)
99       (</span><span class="jsdoc-string">'heading'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">block.heading</span><span class="jsdoc-syntax">)
100       (</span><span class="jsdoc-string">'lheading'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">block.lheading</span><span class="jsdoc-syntax">)
101       (</span><span class="jsdoc-string">'blockquote'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">block.blockquote</span><span class="jsdoc-syntax">)
102       (</span><span class="jsdoc-string">'tag'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'&lt;' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">block._tag</span><span class="jsdoc-syntax">)
103       (</span><span class="jsdoc-string">'def'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">block.def</span><span class="jsdoc-syntax">)
104       ();
105
106     </span><span class="jsdoc-comment">/**
107      * Normal Block Grammar
108      */
109
110     </span><span class="jsdoc-var">block.normal </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">merge</span><span class="jsdoc-syntax">({}, </span><span class="jsdoc-var">block</span><span class="jsdoc-syntax">);
111
112     </span><span class="jsdoc-comment">/**
113      * GFM Block Grammar
114      */
115
116     </span><span class="jsdoc-var">block.gfm </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">merge</span><span class="jsdoc-syntax">({}, </span><span class="jsdoc-var">block.normal</span><span class="jsdoc-syntax">, {
117       </span><span class="jsdoc-var">fences</span><span class="jsdoc-syntax">: /^ *(`{3,}|~{3,})[ \.]*(\S+)? *\n([\s\S]*?)\s*\1 *(?:\n+|$)/,
118       </span><span class="jsdoc-var">paragraph</span><span class="jsdoc-syntax">: /^/,
119       </span><span class="jsdoc-var">heading</span><span class="jsdoc-syntax">: /^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/
120     });
121
122     </span><span class="jsdoc-var">block.gfm.paragraph </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">replace</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">block.paragraph</span><span class="jsdoc-syntax">)
123       (</span><span class="jsdoc-string">'(?!'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'(?!'
124         </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">block.gfm.fences.source.replace</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'\\1'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'\\2'</span><span class="jsdoc-syntax">) + </span><span class="jsdoc-string">'|'
125         </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">block.list.source.replace</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'\\1'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'\\3'</span><span class="jsdoc-syntax">) + </span><span class="jsdoc-string">'|'</span><span class="jsdoc-syntax">)
126       ();
127
128     </span><span class="jsdoc-comment">/**
129      * GFM + Tables Block Grammar
130      */
131
132     </span><span class="jsdoc-var">block.tables </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">merge</span><span class="jsdoc-syntax">({}, </span><span class="jsdoc-var">block.gfm</span><span class="jsdoc-syntax">, {
133       </span><span class="jsdoc-var">nptable</span><span class="jsdoc-syntax">: /^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,
134       </span><span class="jsdoc-var">table</span><span class="jsdoc-syntax">: /^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/
135     });
136
137     </span><span class="jsdoc-comment">/**
138      * Block Lexer
139      */
140
141     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">Lexer </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">options</span><span class="jsdoc-syntax">) {
142       </span><span class="jsdoc-var">this.tokens </span><span class="jsdoc-syntax">= [];
143       </span><span class="jsdoc-var">this.tokens.links </span><span class="jsdoc-syntax">= {};
144       </span><span class="jsdoc-var">this.options </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">options </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">marked.defaults</span><span class="jsdoc-syntax">;
145       </span><span class="jsdoc-var">this.rules </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">block.normal</span><span class="jsdoc-syntax">;
146
147       </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.options.gfm</span><span class="jsdoc-syntax">) {
148         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.options.tables</span><span class="jsdoc-syntax">) {
149           </span><span class="jsdoc-var">this.rules </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">block.tables</span><span class="jsdoc-syntax">;
150         } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
151           </span><span class="jsdoc-var">this.rules </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">block.gfm</span><span class="jsdoc-syntax">;
152         }
153       }
154     }
155
156     </span><span class="jsdoc-comment">/**
157      * Expose Block Rules
158      */
159
160     </span><span class="jsdoc-var">Lexer.rules </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">block</span><span class="jsdoc-syntax">;
161
162     </span><span class="jsdoc-comment">/**
163      * Static Lex Method
164      */
165
166     </span><span class="jsdoc-var">Lexer.lex </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">options</span><span class="jsdoc-syntax">) {
167       </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">lexer </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Lexer</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">options</span><span class="jsdoc-syntax">);
168       </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">lexer.lex</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">);
169     };
170
171     </span><span class="jsdoc-comment">/**
172      * Preprocessing
173      */
174
175     </span><span class="jsdoc-var">Lexer.prototype.lex </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">) {
176       </span><span class="jsdoc-var">src </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">src
177         .replace</span><span class="jsdoc-syntax">(/\r\n|\r/g, </span><span class="jsdoc-string">'\n'</span><span class="jsdoc-syntax">)
178         </span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/\t/g, </span><span class="jsdoc-string">'    '</span><span class="jsdoc-syntax">)
179         </span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/\u00a0/g, </span><span class="jsdoc-string">' '</span><span class="jsdoc-syntax">)
180         </span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/\u2424/g, </span><span class="jsdoc-string">'\n'</span><span class="jsdoc-syntax">);
181
182       </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.token</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
183     };
184
185     </span><span class="jsdoc-comment">/**
186      * Lexing
187      */
188
189     </span><span class="jsdoc-var">Lexer.prototype.token </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">top</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">bq</span><span class="jsdoc-syntax">) {
190       </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">src </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">src.replace</span><span class="jsdoc-syntax">(/^ +$/gm, </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">)
191         , </span><span class="jsdoc-var">next
192         </span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">loose
193         </span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">cap
194         </span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">bull
195         </span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">b
196         </span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">item
197         </span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">space
198         </span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">i
199         </span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">l</span><span class="jsdoc-syntax">;
200
201       </span><span class="jsdoc-keyword">while </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">) {
202         </span><span class="jsdoc-comment">// newline
203         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.rules.newline.exec</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">)) {
204           </span><span class="jsdoc-var">src </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">src.substring</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.length</span><span class="jsdoc-syntax">);
205           </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.length </span><span class="jsdoc-syntax">&gt; 1) {
206             </span><span class="jsdoc-var">this.tokens.push</span><span class="jsdoc-syntax">({
207               </span><span class="jsdoc-var">type</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'space'
208             </span><span class="jsdoc-syntax">});
209           }
210         }
211
212         </span><span class="jsdoc-comment">// code
213         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.rules.code.exec</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">)) {
214           </span><span class="jsdoc-var">src </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">src.substring</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.length</span><span class="jsdoc-syntax">);
215           </span><span class="jsdoc-var">cap </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/^ {4}/gm, </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">);
216           </span><span class="jsdoc-var">this.tokens.push</span><span class="jsdoc-syntax">({
217             </span><span class="jsdoc-var">type</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'code'</span><span class="jsdoc-syntax">,
218             </span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">: !</span><span class="jsdoc-var">this.options.pedantic
219               </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">cap.replace</span><span class="jsdoc-syntax">(/\n+$/, </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">)
220               : </span><span class="jsdoc-var">cap
221           </span><span class="jsdoc-syntax">});
222           </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
223         }
224
225         </span><span class="jsdoc-comment">// fences (gfm)
226         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.rules.fences.exec</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">)) {
227           </span><span class="jsdoc-var">src </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">src.substring</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.length</span><span class="jsdoc-syntax">);
228           </span><span class="jsdoc-var">this.tokens.push</span><span class="jsdoc-syntax">({
229             </span><span class="jsdoc-var">type</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'code'</span><span class="jsdoc-syntax">,
230             </span><span class="jsdoc-var">lang</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[2],
231             </span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[3] || </span><span class="jsdoc-string">''
232           </span><span class="jsdoc-syntax">});
233           </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
234         }
235
236         </span><span class="jsdoc-comment">// heading
237         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.rules.heading.exec</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">)) {
238           </span><span class="jsdoc-var">src </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">src.substring</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.length</span><span class="jsdoc-syntax">);
239           </span><span class="jsdoc-var">this.tokens.push</span><span class="jsdoc-syntax">({
240             </span><span class="jsdoc-var">type</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'heading'</span><span class="jsdoc-syntax">,
241             </span><span class="jsdoc-var">depth</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[1]</span><span class="jsdoc-var">.length</span><span class="jsdoc-syntax">,
242             </span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[2]
243           });
244           </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
245         }
246
247         </span><span class="jsdoc-comment">// table no leading pipe (gfm)
248         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">top </span><span class="jsdoc-syntax">&amp;&amp; (</span><span class="jsdoc-var">cap </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.rules.nptable.exec</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">))) {
249           </span><span class="jsdoc-var">src </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">src.substring</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.length</span><span class="jsdoc-syntax">);
250
251           </span><span class="jsdoc-var">item </span><span class="jsdoc-syntax">= {
252             </span><span class="jsdoc-var">type</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'table'</span><span class="jsdoc-syntax">,
253             </span><span class="jsdoc-var">header</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[1]</span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/^ *| *\| *$/g, </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.split</span><span class="jsdoc-syntax">(/ *\| */),
254             </span><span class="jsdoc-var">align</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[2]</span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/^ *|\| *$/g, </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.split</span><span class="jsdoc-syntax">(/ *\| */),
255             </span><span class="jsdoc-var">cells</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[3]</span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/\n$/, </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.split</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'\n'</span><span class="jsdoc-syntax">)
256           };
257
258           </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">item.align.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
259             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(/^ *-+: *$/</span><span class="jsdoc-var">.test</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">item.align</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">])) {
260               </span><span class="jsdoc-var">item.align</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-string">'right'</span><span class="jsdoc-syntax">;
261             } </span><span class="jsdoc-keyword">else if </span><span class="jsdoc-syntax">(/^ *:-+: *$/</span><span class="jsdoc-var">.test</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">item.align</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">])) {
262               </span><span class="jsdoc-var">item.align</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-string">'center'</span><span class="jsdoc-syntax">;
263             } </span><span class="jsdoc-keyword">else if </span><span class="jsdoc-syntax">(/^ *:-+ *$/</span><span class="jsdoc-var">.test</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">item.align</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">])) {
264               </span><span class="jsdoc-var">item.align</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-string">'left'</span><span class="jsdoc-syntax">;
265             } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
266               </span><span class="jsdoc-var">item.align</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">;
267             }
268           }
269
270           </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">item.cells.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
271             </span><span class="jsdoc-var">item.cells</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-var">item.cells</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.split</span><span class="jsdoc-syntax">(/ *\| */);
272           }
273
274           </span><span class="jsdoc-var">this.tokens.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">item</span><span class="jsdoc-syntax">);
275
276           </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
277         }
278
279         </span><span class="jsdoc-comment">// lheading
280         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.rules.lheading.exec</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">)) {
281           </span><span class="jsdoc-var">src </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">src.substring</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.length</span><span class="jsdoc-syntax">);
282           </span><span class="jsdoc-var">this.tokens.push</span><span class="jsdoc-syntax">({
283             </span><span class="jsdoc-var">type</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'heading'</span><span class="jsdoc-syntax">,
284             </span><span class="jsdoc-var">depth</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[2] === </span><span class="jsdoc-string">'=' </span><span class="jsdoc-syntax">? 1 : 2,
285             </span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[1]
286           });
287           </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
288         }
289
290         </span><span class="jsdoc-comment">// hr
291         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.rules.hr.exec</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">)) {
292           </span><span class="jsdoc-var">src </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">src.substring</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.length</span><span class="jsdoc-syntax">);
293           </span><span class="jsdoc-var">this.tokens.push</span><span class="jsdoc-syntax">({
294             </span><span class="jsdoc-var">type</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'hr'
295           </span><span class="jsdoc-syntax">});
296           </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
297         }
298
299         </span><span class="jsdoc-comment">// blockquote
300         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.rules.blockquote.exec</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">)) {
301           </span><span class="jsdoc-var">src </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">src.substring</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.length</span><span class="jsdoc-syntax">);
302
303           </span><span class="jsdoc-var">this.tokens.push</span><span class="jsdoc-syntax">({
304             </span><span class="jsdoc-var">type</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'blockquote_start'
305           </span><span class="jsdoc-syntax">});
306
307           </span><span class="jsdoc-var">cap </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/^ *&gt; ?/gm, </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">);
308
309           </span><span class="jsdoc-comment">// Pass `top` to keep the current
310           // &quot;toplevel&quot; state. This is exactly
311           // how markdown.pl works.
312           </span><span class="jsdoc-var">this.token</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">top</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
313
314           </span><span class="jsdoc-var">this.tokens.push</span><span class="jsdoc-syntax">({
315             </span><span class="jsdoc-var">type</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'blockquote_end'
316           </span><span class="jsdoc-syntax">});
317
318           </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
319         }
320
321         </span><span class="jsdoc-comment">// list
322         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.rules.list.exec</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">)) {
323           </span><span class="jsdoc-var">src </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">src.substring</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.length</span><span class="jsdoc-syntax">);
324           </span><span class="jsdoc-var">bull </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[2];
325
326           </span><span class="jsdoc-var">this.tokens.push</span><span class="jsdoc-syntax">({
327             </span><span class="jsdoc-var">type</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'list_start'</span><span class="jsdoc-syntax">,
328             </span><span class="jsdoc-var">ordered</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">bull.length </span><span class="jsdoc-syntax">&gt; 1
329           });
330
331           </span><span class="jsdoc-comment">// Get each top-level item.
332           </span><span class="jsdoc-var">cap </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.match</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.rules.item</span><span class="jsdoc-syntax">);
333
334           </span><span class="jsdoc-var">next </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
335           </span><span class="jsdoc-var">l </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">cap.length</span><span class="jsdoc-syntax">;
336           </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0;
337
338           </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">l</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
339             </span><span class="jsdoc-var">item </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">];
340
341             </span><span class="jsdoc-comment">// Remove the list item's bullet
342             // so it is seen as the next token.
343             </span><span class="jsdoc-var">space </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">item.length</span><span class="jsdoc-syntax">;
344             </span><span class="jsdoc-var">item </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">item.replace</span><span class="jsdoc-syntax">(/^ *([*+-]|\d+\.) +/, </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">);
345
346             </span><span class="jsdoc-comment">// Outdent whatever the
347             // list item contains. Hacky.
348             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(~</span><span class="jsdoc-var">item.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'\n '</span><span class="jsdoc-syntax">)) {
349               </span><span class="jsdoc-var">space </span><span class="jsdoc-syntax">-= </span><span class="jsdoc-var">item.length</span><span class="jsdoc-syntax">;
350               </span><span class="jsdoc-var">item </span><span class="jsdoc-syntax">= !</span><span class="jsdoc-var">this.options.pedantic
351                 </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">item.replace</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">RegExp</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'^ {1,' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">space </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'}'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'gm'</span><span class="jsdoc-syntax">), </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">)
352                 : </span><span class="jsdoc-var">item.replace</span><span class="jsdoc-syntax">(/^ {1,4}/gm, </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">);
353             }
354
355             </span><span class="jsdoc-comment">// Determine whether the next list item belongs here.
356             // Backpedal if it does not belong in this list.
357             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.options.smartLists </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-var">l </span><span class="jsdoc-syntax">- 1) {
358               </span><span class="jsdoc-var">b </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">block.bullet.exec</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">+ 1])[0];
359               </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">bull </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-var">b </span><span class="jsdoc-syntax">&amp;&amp; !(</span><span class="jsdoc-var">bull.length </span><span class="jsdoc-syntax">&gt; 1 &amp;&amp; </span><span class="jsdoc-var">b.length </span><span class="jsdoc-syntax">&gt; 1)) {
360                 </span><span class="jsdoc-var">src </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">cap.slice</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">+ 1)</span><span class="jsdoc-var">.join</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'\n'</span><span class="jsdoc-syntax">) + </span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">;
361                 </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">l </span><span class="jsdoc-syntax">- 1;
362               }
363             }
364
365             </span><span class="jsdoc-comment">// Determine whether item is loose or not.
366             // Use: /(^|\n)(?! )[^\n]+\n\n(?!\s*$)/
367             // for discount behavior.
368             </span><span class="jsdoc-var">loose </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">next </span><span class="jsdoc-syntax">|| /\n\n(?!\s*$)/</span><span class="jsdoc-var">.test</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">item</span><span class="jsdoc-syntax">);
369             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-var">l </span><span class="jsdoc-syntax">- 1) {
370               </span><span class="jsdoc-var">next </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">item.charAt</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">item.length </span><span class="jsdoc-syntax">- 1) === </span><span class="jsdoc-string">'\n'</span><span class="jsdoc-syntax">;
371               </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">loose</span><span class="jsdoc-syntax">) { </span><span class="jsdoc-var">loose </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">next</span><span class="jsdoc-syntax">; }
372             }
373
374             </span><span class="jsdoc-var">this.tokens.push</span><span class="jsdoc-syntax">({
375               </span><span class="jsdoc-var">type</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">loose
376                 </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">'loose_item_start'
377                 </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'list_item_start'
378             </span><span class="jsdoc-syntax">});
379
380             </span><span class="jsdoc-comment">// Recurse.
381             </span><span class="jsdoc-var">this.token</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">item</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">bq</span><span class="jsdoc-syntax">);
382
383             </span><span class="jsdoc-var">this.tokens.push</span><span class="jsdoc-syntax">({
384               </span><span class="jsdoc-var">type</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'list_item_end'
385             </span><span class="jsdoc-syntax">});
386           }
387
388           </span><span class="jsdoc-var">this.tokens.push</span><span class="jsdoc-syntax">({
389             </span><span class="jsdoc-var">type</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'list_end'
390           </span><span class="jsdoc-syntax">});
391
392           </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
393         }
394
395         </span><span class="jsdoc-comment">// html
396         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.rules.html.exec</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">)) {
397           </span><span class="jsdoc-var">src </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">src.substring</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.length</span><span class="jsdoc-syntax">);
398           </span><span class="jsdoc-var">this.tokens.push</span><span class="jsdoc-syntax">({
399             </span><span class="jsdoc-var">type</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.options.sanitize
400               </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">'paragraph'
401               </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'html'</span><span class="jsdoc-syntax">,
402             </span><span class="jsdoc-var">pre</span><span class="jsdoc-syntax">: !</span><span class="jsdoc-var">this.options.sanitizer
403               </span><span class="jsdoc-syntax">&amp;&amp; (</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[1] === </span><span class="jsdoc-string">'pre' </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[1] === </span><span class="jsdoc-string">'script' </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[1] === </span><span class="jsdoc-string">'style'</span><span class="jsdoc-syntax">),
404             </span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[0]
405           });
406           </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
407         }
408
409         </span><span class="jsdoc-comment">// def
410         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">((!</span><span class="jsdoc-var">bq </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">top</span><span class="jsdoc-syntax">) &amp;&amp; (</span><span class="jsdoc-var">cap </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.rules.def.exec</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">))) {
411           </span><span class="jsdoc-var">src </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">src.substring</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.length</span><span class="jsdoc-syntax">);
412           </span><span class="jsdoc-var">this.tokens.links</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[1]</span><span class="jsdoc-var">.toLowerCase</span><span class="jsdoc-syntax">()] = {
413             </span><span class="jsdoc-var">href</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[2],
414             </span><span class="jsdoc-var">title</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[3]
415           };
416           </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
417         }
418
419         </span><span class="jsdoc-comment">// table (gfm)
420         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">top </span><span class="jsdoc-syntax">&amp;&amp; (</span><span class="jsdoc-var">cap </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.rules.table.exec</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">))) {
421           </span><span class="jsdoc-var">src </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">src.substring</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.length</span><span class="jsdoc-syntax">);
422
423           </span><span class="jsdoc-var">item </span><span class="jsdoc-syntax">= {
424             </span><span class="jsdoc-var">type</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'table'</span><span class="jsdoc-syntax">,
425             </span><span class="jsdoc-var">header</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[1]</span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/^ *| *\| *$/g, </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.split</span><span class="jsdoc-syntax">(/ *\| */),
426             </span><span class="jsdoc-var">align</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[2]</span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/^ *|\| *$/g, </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.split</span><span class="jsdoc-syntax">(/ *\| */),
427             </span><span class="jsdoc-var">cells</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[3]</span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/(?: *\| *)?\n$/, </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.split</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'\n'</span><span class="jsdoc-syntax">)
428           };
429
430           </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">item.align.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
431             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(/^ *-+: *$/</span><span class="jsdoc-var">.test</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">item.align</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">])) {
432               </span><span class="jsdoc-var">item.align</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-string">'right'</span><span class="jsdoc-syntax">;
433             } </span><span class="jsdoc-keyword">else if </span><span class="jsdoc-syntax">(/^ *:-+: *$/</span><span class="jsdoc-var">.test</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">item.align</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">])) {
434               </span><span class="jsdoc-var">item.align</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-string">'center'</span><span class="jsdoc-syntax">;
435             } </span><span class="jsdoc-keyword">else if </span><span class="jsdoc-syntax">(/^ *:-+ *$/</span><span class="jsdoc-var">.test</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">item.align</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">])) {
436               </span><span class="jsdoc-var">item.align</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-string">'left'</span><span class="jsdoc-syntax">;
437             } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
438               </span><span class="jsdoc-var">item.align</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">;
439             }
440           }
441
442           </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">item.cells.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
443             </span><span class="jsdoc-var">item.cells</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-var">item.cells</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]
444               </span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/^ *\| *| *\| *$/g, </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">)
445               </span><span class="jsdoc-var">.split</span><span class="jsdoc-syntax">(/ *\| */);
446           }
447
448           </span><span class="jsdoc-var">this.tokens.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">item</span><span class="jsdoc-syntax">);
449
450           </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
451         }
452
453         </span><span class="jsdoc-comment">// top-level paragraph
454         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">top </span><span class="jsdoc-syntax">&amp;&amp; (</span><span class="jsdoc-var">cap </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.rules.paragraph.exec</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">))) {
455           </span><span class="jsdoc-var">src </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">src.substring</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.length</span><span class="jsdoc-syntax">);
456           </span><span class="jsdoc-var">this.tokens.push</span><span class="jsdoc-syntax">({
457             </span><span class="jsdoc-var">type</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'paragraph'</span><span class="jsdoc-syntax">,
458             </span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[1]</span><span class="jsdoc-var">.charAt</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[1]</span><span class="jsdoc-var">.length </span><span class="jsdoc-syntax">- 1) === </span><span class="jsdoc-string">'\n'
459               </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[1]</span><span class="jsdoc-var">.slice</span><span class="jsdoc-syntax">(0, -1)
460               : </span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[1]
461           });
462           </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
463         }
464
465         </span><span class="jsdoc-comment">// text
466         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.rules.text.exec</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">)) {
467           </span><span class="jsdoc-comment">// Top-level should never reach here.
468           </span><span class="jsdoc-var">src </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">src.substring</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.length</span><span class="jsdoc-syntax">);
469           </span><span class="jsdoc-var">this.tokens.push</span><span class="jsdoc-syntax">({
470             </span><span class="jsdoc-var">type</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'text'</span><span class="jsdoc-syntax">,
471             </span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[0]
472           });
473           </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
474         }
475
476         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">) {
477           </span><span class="jsdoc-keyword">throw new
478             </span><span class="jsdoc-var">Error</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'Infinite loop on byte: ' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">src.charCodeAt</span><span class="jsdoc-syntax">(0));
479         }
480       }
481
482       </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.tokens</span><span class="jsdoc-syntax">;
483     };
484
485     </span><span class="jsdoc-comment">/**
486      * Inline-Level Grammar
487      */
488
489     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">inline </span><span class="jsdoc-syntax">= {
490       </span><span class="jsdoc-var">escape</span><span class="jsdoc-syntax">: /^\\([\\`*{}\[\]()#+\-.!_&gt;])/,
491       </span><span class="jsdoc-var">autolink</span><span class="jsdoc-syntax">: /^&lt;([^ &gt;]+(@|:\/)[^ &gt;]+)&gt;/,
492       </span><span class="jsdoc-var">url</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">noop</span><span class="jsdoc-syntax">,
493       </span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">: /^&lt;!--[\s\S]*?--&gt;|^&lt;\/?\w+(?:&quot;[^&quot;]*&quot;|'[^']*'|[^'&quot;&gt;])*?&gt;/,
494       </span><span class="jsdoc-var">link</span><span class="jsdoc-syntax">: /^!?\[(inside)\]\(href\)/,
495       </span><span class="jsdoc-var">reflink</span><span class="jsdoc-syntax">: /^!?\[(inside)\]\s*\[([^\]]*)\]/,
496       </span><span class="jsdoc-var">nolink</span><span class="jsdoc-syntax">: /^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,
497       </span><span class="jsdoc-var">strong</span><span class="jsdoc-syntax">: /^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,
498       </span><span class="jsdoc-var">em</span><span class="jsdoc-syntax">: /^\b_((?:[^_]|__)+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,
499       </span><span class="jsdoc-var">code</span><span class="jsdoc-syntax">: /^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,
500       </span><span class="jsdoc-var">br</span><span class="jsdoc-syntax">: /^ {2,}\n(?!\s*$)/,
501       </span><span class="jsdoc-var">del</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">noop</span><span class="jsdoc-syntax">,
502       </span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">: /^[\s\S]+?(?=[\\&lt;!\[_*`]| {2,}\n|$)/
503     };
504
505     </span><span class="jsdoc-var">inline._inside </span><span class="jsdoc-syntax">= /(?:\[[^\]]*\]|[^\[\]]|\](?=[^\[]*\]))*/;
506     </span><span class="jsdoc-var">inline._href </span><span class="jsdoc-syntax">= /\s*&lt;?([\s\S]*?)&gt;?(?:\s+['&quot;]([\s\S]*?)['&quot;])?\s*/;
507
508     </span><span class="jsdoc-var">inline.link </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">replace</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">inline.link</span><span class="jsdoc-syntax">)
509       (</span><span class="jsdoc-string">'inside'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">inline._inside</span><span class="jsdoc-syntax">)
510       (</span><span class="jsdoc-string">'href'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">inline._href</span><span class="jsdoc-syntax">)
511       ();
512
513     </span><span class="jsdoc-var">inline.reflink </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">replace</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">inline.reflink</span><span class="jsdoc-syntax">)
514       (</span><span class="jsdoc-string">'inside'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">inline._inside</span><span class="jsdoc-syntax">)
515       ();
516
517     </span><span class="jsdoc-comment">/**
518      * Normal Inline Grammar
519      */
520
521     </span><span class="jsdoc-var">inline.normal </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">merge</span><span class="jsdoc-syntax">({}, </span><span class="jsdoc-var">inline</span><span class="jsdoc-syntax">);
522
523     </span><span class="jsdoc-comment">/**
524      * Pedantic Inline Grammar
525      */
526
527     </span><span class="jsdoc-var">inline.pedantic </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">merge</span><span class="jsdoc-syntax">({}, </span><span class="jsdoc-var">inline.normal</span><span class="jsdoc-syntax">, {
528       </span><span class="jsdoc-var">strong</span><span class="jsdoc-syntax">: /^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,
529       </span><span class="jsdoc-var">em</span><span class="jsdoc-syntax">: /^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/
530     });
531
532     </span><span class="jsdoc-comment">/**
533      * GFM Inline Grammar
534      */
535
536     </span><span class="jsdoc-var">inline.gfm </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">merge</span><span class="jsdoc-syntax">({}, </span><span class="jsdoc-var">inline.normal</span><span class="jsdoc-syntax">, {
537       </span><span class="jsdoc-var">escape</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">replace</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">inline.escape</span><span class="jsdoc-syntax">)(</span><span class="jsdoc-string">'])'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'~|])'</span><span class="jsdoc-syntax">)(),
538       </span><span class="jsdoc-var">url</span><span class="jsdoc-syntax">: /^(https?:\/\/[^\s&lt;]+[^&lt;.,:;&quot;')\]\s])/,
539       </span><span class="jsdoc-var">del</span><span class="jsdoc-syntax">: /^~~(?=\S)([\s\S]*?\S)~~/,
540       </span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">replace</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">inline.text</span><span class="jsdoc-syntax">)
541         (</span><span class="jsdoc-string">']|'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'~]|'</span><span class="jsdoc-syntax">)
542         (</span><span class="jsdoc-string">'|'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'|https?://|'</span><span class="jsdoc-syntax">)
543         ()
544     });
545
546     </span><span class="jsdoc-comment">/**
547      * GFM + Line Breaks Inline Grammar
548      */
549
550     </span><span class="jsdoc-var">inline.breaks </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">merge</span><span class="jsdoc-syntax">({}, </span><span class="jsdoc-var">inline.gfm</span><span class="jsdoc-syntax">, {
551       </span><span class="jsdoc-var">br</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">replace</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">inline.br</span><span class="jsdoc-syntax">)(</span><span class="jsdoc-string">'{2,}'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'*'</span><span class="jsdoc-syntax">)(),
552       </span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">replace</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">inline.gfm.text</span><span class="jsdoc-syntax">)(</span><span class="jsdoc-string">'{2,}'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'*'</span><span class="jsdoc-syntax">)()
553     });
554
555     </span><span class="jsdoc-comment">/**
556      * Inline Lexer &amp; Compiler
557      */
558
559     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">InlineLexer </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">links</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">options</span><span class="jsdoc-syntax">) {
560       </span><span class="jsdoc-var">this.options </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">options </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">marked.defaults</span><span class="jsdoc-syntax">;
561       </span><span class="jsdoc-var">this.links </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">links</span><span class="jsdoc-syntax">;
562       </span><span class="jsdoc-var">this.rules </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">inline.normal</span><span class="jsdoc-syntax">;
563       </span><span class="jsdoc-var">this.renderer </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.options.renderer </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Renderer</span><span class="jsdoc-syntax">;
564       </span><span class="jsdoc-var">this.renderer.options </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.options</span><span class="jsdoc-syntax">;
565
566       </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.links</span><span class="jsdoc-syntax">) {
567         </span><span class="jsdoc-keyword">throw new
568           </span><span class="jsdoc-var">Error</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'Tokens array requires a `links` property.'</span><span class="jsdoc-syntax">);
569       }
570
571       </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.options.gfm</span><span class="jsdoc-syntax">) {
572         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.options.breaks</span><span class="jsdoc-syntax">) {
573           </span><span class="jsdoc-var">this.rules </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">inline.breaks</span><span class="jsdoc-syntax">;
574         } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
575           </span><span class="jsdoc-var">this.rules </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">inline.gfm</span><span class="jsdoc-syntax">;
576         }
577       } </span><span class="jsdoc-keyword">else if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.options.pedantic</span><span class="jsdoc-syntax">) {
578         </span><span class="jsdoc-var">this.rules </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">inline.pedantic</span><span class="jsdoc-syntax">;
579       }
580     }
581
582     </span><span class="jsdoc-comment">/**
583      * Expose Inline Rules
584      */
585
586     </span><span class="jsdoc-var">InlineLexer.rules </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">inline</span><span class="jsdoc-syntax">;
587
588     </span><span class="jsdoc-comment">/**
589      * Static Lexing/Compiling Method
590      */
591
592     </span><span class="jsdoc-var">InlineLexer.output </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">links</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">options</span><span class="jsdoc-syntax">) {
593       </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">inline </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">InlineLexer</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">links</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">options</span><span class="jsdoc-syntax">);
594       </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">inline.output</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">);
595     };
596
597     </span><span class="jsdoc-comment">/**
598      * Lexing/Compiling
599      */
600
601     </span><span class="jsdoc-var">InlineLexer.prototype.output </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">) {
602       </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">out </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">''
603         </span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">link
604         </span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">text
605         </span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">href
606         </span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">;
607
608       </span><span class="jsdoc-keyword">while </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">) {
609         </span><span class="jsdoc-comment">// escape
610         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.rules.escape.exec</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">)) {
611           </span><span class="jsdoc-var">src </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">src.substring</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.length</span><span class="jsdoc-syntax">);
612           </span><span class="jsdoc-var">out </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[1];
613           </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
614         }
615
616         </span><span class="jsdoc-comment">// autolink
617         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.rules.autolink.exec</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">)) {
618           </span><span class="jsdoc-var">src </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">src.substring</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.length</span><span class="jsdoc-syntax">);
619           </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[2] === </span><span class="jsdoc-string">'@'</span><span class="jsdoc-syntax">) {
620             </span><span class="jsdoc-var">text </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[1]</span><span class="jsdoc-var">.charAt</span><span class="jsdoc-syntax">(6) === </span><span class="jsdoc-string">':'
621               </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">this.mangle</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[1]</span><span class="jsdoc-var">.substring</span><span class="jsdoc-syntax">(7))
622               : </span><span class="jsdoc-var">this.mangle</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[1]);
623             </span><span class="jsdoc-var">href </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.mangle</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'mailto:'</span><span class="jsdoc-syntax">) + </span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">;
624           } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
625             </span><span class="jsdoc-var">text </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">escape</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[1]);
626             </span><span class="jsdoc-var">href </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">;
627           }
628           </span><span class="jsdoc-var">out </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">this.renderer.link</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">href</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">);
629           </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
630         }
631
632         </span><span class="jsdoc-comment">// url (gfm)
633         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.inLink </span><span class="jsdoc-syntax">&amp;&amp; (</span><span class="jsdoc-var">cap </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.rules.url.exec</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">))) {
634           </span><span class="jsdoc-var">src </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">src.substring</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.length</span><span class="jsdoc-syntax">);
635           </span><span class="jsdoc-var">text </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">escape</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[1]);
636           </span><span class="jsdoc-var">href </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">;
637           </span><span class="jsdoc-var">out </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">this.renderer.link</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">href</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">);
638           </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
639         }
640
641         </span><span class="jsdoc-comment">// tag
642         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.rules.tag.exec</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">)) {
643           </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.inLink </span><span class="jsdoc-syntax">&amp;&amp; /^&lt;a /i</span><span class="jsdoc-var">.test</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[0])) {
644             </span><span class="jsdoc-var">this.inLink </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
645           } </span><span class="jsdoc-keyword">else if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.inLink </span><span class="jsdoc-syntax">&amp;&amp; /^&lt;\/a&gt;/i</span><span class="jsdoc-var">.test</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[0])) {
646             </span><span class="jsdoc-var">this.inLink </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
647           }
648           </span><span class="jsdoc-var">src </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">src.substring</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.length</span><span class="jsdoc-syntax">);
649           </span><span class="jsdoc-var">out </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">this.options.sanitize
650             </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">this.options.sanitizer
651               </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">this.options.sanitizer</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[0])
652               : </span><span class="jsdoc-var">escape</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[0])
653             : </span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[0];
654           </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
655         }
656
657         </span><span class="jsdoc-comment">// link
658         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.rules.link.exec</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">)) {
659           </span><span class="jsdoc-var">src </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">src.substring</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.length</span><span class="jsdoc-syntax">);
660           </span><span class="jsdoc-var">this.inLink </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
661           </span><span class="jsdoc-var">out </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">this.outputLink</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">, {
662             </span><span class="jsdoc-var">href</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[2],
663             </span><span class="jsdoc-var">title</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[3]
664           });
665           </span><span class="jsdoc-var">this.inLink </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
666           </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
667         }
668
669         </span><span class="jsdoc-comment">// reflink, nolink
670         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">((</span><span class="jsdoc-var">cap </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.rules.reflink.exec</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">))
671             || (</span><span class="jsdoc-var">cap </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.rules.nolink.exec</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">))) {
672           </span><span class="jsdoc-var">src </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">src.substring</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.length</span><span class="jsdoc-syntax">);
673           </span><span class="jsdoc-var">link </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[2] || </span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[1])</span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/\s+/g, </span><span class="jsdoc-string">' '</span><span class="jsdoc-syntax">);
674           </span><span class="jsdoc-var">link </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.links</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">link.toLowerCase</span><span class="jsdoc-syntax">()];
675           </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">link </span><span class="jsdoc-syntax">|| !</span><span class="jsdoc-var">link.href</span><span class="jsdoc-syntax">) {
676             </span><span class="jsdoc-var">out </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.charAt</span><span class="jsdoc-syntax">(0);
677             </span><span class="jsdoc-var">src </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.substring</span><span class="jsdoc-syntax">(1) + </span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">;
678             </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
679           }
680           </span><span class="jsdoc-var">this.inLink </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
681           </span><span class="jsdoc-var">out </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">this.outputLink</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">link</span><span class="jsdoc-syntax">);
682           </span><span class="jsdoc-var">this.inLink </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
683           </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
684         }
685
686         </span><span class="jsdoc-comment">// strong
687         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.rules.strong.exec</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">)) {
688           </span><span class="jsdoc-var">src </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">src.substring</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.length</span><span class="jsdoc-syntax">);
689           </span><span class="jsdoc-var">out </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">this.renderer.strong</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.output</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[2] || </span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[1]));
690           </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
691         }
692
693         </span><span class="jsdoc-comment">// em
694         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.rules.em.exec</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">)) {
695           </span><span class="jsdoc-var">src </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">src.substring</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.length</span><span class="jsdoc-syntax">);
696           </span><span class="jsdoc-var">out </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">this.renderer.em</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.output</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[2] || </span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[1]));
697           </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
698         }
699
700         </span><span class="jsdoc-comment">// code
701         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.rules.code.exec</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">)) {
702           </span><span class="jsdoc-var">src </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">src.substring</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.length</span><span class="jsdoc-syntax">);
703           </span><span class="jsdoc-var">out </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">this.renderer.codespan</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">escape</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[2], </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">));
704           </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
705         }
706
707         </span><span class="jsdoc-comment">// br
708         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.rules.br.exec</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">)) {
709           </span><span class="jsdoc-var">src </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">src.substring</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.length</span><span class="jsdoc-syntax">);
710           </span><span class="jsdoc-var">out </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">this.renderer.br</span><span class="jsdoc-syntax">();
711           </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
712         }
713
714         </span><span class="jsdoc-comment">// del (gfm)
715         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.rules.del.exec</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">)) {
716           </span><span class="jsdoc-var">src </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">src.substring</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.length</span><span class="jsdoc-syntax">);
717           </span><span class="jsdoc-var">out </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">this.renderer.del</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.output</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[1]));
718           </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
719         }
720
721         </span><span class="jsdoc-comment">// text
722         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.rules.text.exec</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">)) {
723           </span><span class="jsdoc-var">src </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">src.substring</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.length</span><span class="jsdoc-syntax">);
724           </span><span class="jsdoc-var">out </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">this.renderer.text</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">escape</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.smartypants</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[0])));
725           </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
726         }
727
728         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">) {
729           </span><span class="jsdoc-keyword">throw new
730             </span><span class="jsdoc-var">Error</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'Infinite loop on byte: ' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">src.charCodeAt</span><span class="jsdoc-syntax">(0));
731         }
732       }
733
734       </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">out</span><span class="jsdoc-syntax">;
735     };
736
737     </span><span class="jsdoc-comment">/**
738      * Compile Link
739      */
740
741     </span><span class="jsdoc-var">InlineLexer.prototype.outputLink </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">link</span><span class="jsdoc-syntax">) {
742       </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">href </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">escape</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">link.href</span><span class="jsdoc-syntax">)
743         , </span><span class="jsdoc-var">title </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">link.title </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">escape</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">link.title</span><span class="jsdoc-syntax">) : </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">;
744
745       </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.charAt</span><span class="jsdoc-syntax">(0) !== </span><span class="jsdoc-string">'!'
746         </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">this.renderer.link</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">href</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">title</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.output</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[1]))
747         : </span><span class="jsdoc-var">this.renderer.image</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">href</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">title</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">escape</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cap</span><span class="jsdoc-syntax">[1]));
748     };
749
750     </span><span class="jsdoc-comment">/**
751      * Smartypants Transformations
752      */
753
754     </span><span class="jsdoc-var">InlineLexer.prototype.smartypants </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">) {
755       </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.options.smartypants</span><span class="jsdoc-syntax">)  { </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">; }
756       </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">text
757         </span><span class="jsdoc-comment">// em-dashes
758         </span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/---/g, </span><span class="jsdoc-string">'\u2014'</span><span class="jsdoc-syntax">)
759         </span><span class="jsdoc-comment">// en-dashes
760         </span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/--/g, </span><span class="jsdoc-string">'\u2013'</span><span class="jsdoc-syntax">)
761         </span><span class="jsdoc-comment">// opening singles
762         </span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/(^|[-\u2014/(\[{&quot;\s])'/g, </span><span class="jsdoc-string">'$1\u2018'</span><span class="jsdoc-syntax">)
763         </span><span class="jsdoc-comment">// closing singles &amp; apostrophes
764         </span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/'/g, </span><span class="jsdoc-string">'\u2019'</span><span class="jsdoc-syntax">)
765         </span><span class="jsdoc-comment">// opening doubles
766         </span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/(^|[-\u2014/(\[{\u2018\s])&quot;/g, </span><span class="jsdoc-string">'$1\u201c'</span><span class="jsdoc-syntax">)
767         </span><span class="jsdoc-comment">// closing doubles
768         </span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/&quot;/g, </span><span class="jsdoc-string">'\u201d'</span><span class="jsdoc-syntax">)
769         </span><span class="jsdoc-comment">// ellipses
770         </span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/\.{3}/g, </span><span class="jsdoc-string">'\u2026'</span><span class="jsdoc-syntax">);
771     };
772
773     </span><span class="jsdoc-comment">/**
774      * Mangle Links
775      */
776
777     </span><span class="jsdoc-var">InlineLexer.prototype.mangle </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">) {
778       </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.options.mangle</span><span class="jsdoc-syntax">) { </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">; }
779       </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">out </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">''
780         </span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">l </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">text.length
781         </span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0
782         , </span><span class="jsdoc-var">ch</span><span class="jsdoc-syntax">;
783
784       </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">l</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
785         </span><span class="jsdoc-var">ch </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">text.charCodeAt</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">);
786         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Math.random</span><span class="jsdoc-syntax">() &gt; 0.5) {
787           </span><span class="jsdoc-var">ch </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'x' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">ch.toString</span><span class="jsdoc-syntax">(16);
788         }
789         </span><span class="jsdoc-var">out </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-string">'&amp;#' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">ch </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">';'</span><span class="jsdoc-syntax">;
790       }
791
792       </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">out</span><span class="jsdoc-syntax">;
793     };
794
795     </span><span class="jsdoc-comment">/**
796      * Renderer
797      */
798
799     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">Renderer </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">options</span><span class="jsdoc-syntax">) {
800       </span><span class="jsdoc-var">this.options </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">options </span><span class="jsdoc-syntax">|| {};
801     }
802
803     </span><span class="jsdoc-var">Renderer.prototype.code </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">code</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">lang</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">escaped</span><span class="jsdoc-syntax">) {
804       </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.options.highlight</span><span class="jsdoc-syntax">) {
805         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">out </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.options.highlight</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">code</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">lang</span><span class="jsdoc-syntax">);
806         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">out </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-keyword">null </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">out </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-var">code</span><span class="jsdoc-syntax">) {
807           </span><span class="jsdoc-var">escaped </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
808           </span><span class="jsdoc-var">code </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">out</span><span class="jsdoc-syntax">;
809         }
810       } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
811             </span><span class="jsdoc-comment">// hack!!! - it's already escapeD?
812             </span><span class="jsdoc-var">escaped </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
813       }
814
815       </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">lang</span><span class="jsdoc-syntax">) {
816         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">'&lt;pre&gt;&lt;code&gt;'
817           </span><span class="jsdoc-syntax">+ (</span><span class="jsdoc-var">escaped </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">code </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">escape</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">code</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">))
818           + </span><span class="jsdoc-string">'\n&lt;/code&gt;&lt;/pre&gt;'</span><span class="jsdoc-syntax">;
819       }
820
821       </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">'&lt;pre&gt;&lt;code class=&quot;'
822         </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">this.options.langPrefix
823         </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">escape</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">lang</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">)
824         + </span><span class="jsdoc-string">'&quot;&gt;'
825         </span><span class="jsdoc-syntax">+ (</span><span class="jsdoc-var">escaped </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">code </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">escape</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">code</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">))
826         + </span><span class="jsdoc-string">'\n&lt;/code&gt;&lt;/pre&gt;\n'</span><span class="jsdoc-syntax">;
827     };
828
829     </span><span class="jsdoc-var">Renderer.prototype.blockquote </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">quote</span><span class="jsdoc-syntax">) {
830       </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">'&lt;blockquote&gt;\n' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">quote </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&lt;/blockquote&gt;\n'</span><span class="jsdoc-syntax">;
831     };
832
833     </span><span class="jsdoc-var">Renderer.prototype.html </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">) {
834       </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">;
835     };
836
837     </span><span class="jsdoc-var">Renderer.prototype.heading </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">level</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">raw</span><span class="jsdoc-syntax">) {
838       </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">'&lt;h'
839         </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">level
840         </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">' id=&quot;'
841         </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">this.options.headerPrefix
842         </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">raw.toLowerCase</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/[^\w]+/g, </span><span class="jsdoc-string">'-'</span><span class="jsdoc-syntax">)
843         + </span><span class="jsdoc-string">'&quot;&gt;'
844         </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">text
845         </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&lt;/h'
846         </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">level
847         </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&gt;\n'</span><span class="jsdoc-syntax">;
848     };
849
850     </span><span class="jsdoc-var">Renderer.prototype.hr </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() {
851       </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.options.xhtml </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">'&lt;hr/&gt;\n' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'&lt;hr&gt;\n'</span><span class="jsdoc-syntax">;
852     };
853
854     </span><span class="jsdoc-var">Renderer.prototype.list </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">body</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">ordered</span><span class="jsdoc-syntax">) {
855       </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">type </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">ordered </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">'ol' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'ul'</span><span class="jsdoc-syntax">;
856       </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">'&lt;' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">type </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&gt;\n' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">body </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&lt;/' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">type </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&gt;\n'</span><span class="jsdoc-syntax">;
857     };
858
859     </span><span class="jsdoc-var">Renderer.prototype.listitem </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">) {
860       </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">'&lt;li&gt;' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">text </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&lt;/li&gt;\n'</span><span class="jsdoc-syntax">;
861     };
862
863     </span><span class="jsdoc-var">Renderer.prototype.paragraph </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">) {
864       </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">'&lt;p&gt;' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">text </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&lt;/p&gt;\n'</span><span class="jsdoc-syntax">;
865     };
866
867     </span><span class="jsdoc-var">Renderer.prototype.table </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">header</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">body</span><span class="jsdoc-syntax">) {
868       </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">'&lt;table class=&quot;table table-striped&quot;&gt;\n'
869         </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&lt;thead&gt;\n'
870         </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">header
871         </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&lt;/thead&gt;\n'
872         </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&lt;tbody&gt;\n'
873         </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">body
874         </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&lt;/tbody&gt;\n'
875         </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&lt;/table&gt;\n'</span><span class="jsdoc-syntax">;
876     };
877
878     </span><span class="jsdoc-var">Renderer.prototype.tablerow </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">content</span><span class="jsdoc-syntax">) {
879       </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">'&lt;tr&gt;\n' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">content </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&lt;/tr&gt;\n'</span><span class="jsdoc-syntax">;
880     };
881
882     </span><span class="jsdoc-var">Renderer.prototype.tablecell </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">content</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">flags</span><span class="jsdoc-syntax">) {
883       </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">type </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">flags.header </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">'th' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'td'</span><span class="jsdoc-syntax">;
884       </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">tag </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">flags.align
885         </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">'&lt;' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">type </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">' style=&quot;text-align:' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">flags.align </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&quot;&gt;'
886         </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'&lt;' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">type </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&gt;'</span><span class="jsdoc-syntax">;
887       </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">tag </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">content </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&lt;/' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">type </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&gt;\n'</span><span class="jsdoc-syntax">;
888     };
889
890     </span><span class="jsdoc-comment">// span level renderer
891     </span><span class="jsdoc-var">Renderer.prototype.strong </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">) {
892       </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">'&lt;strong&gt;' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">text </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&lt;/strong&gt;'</span><span class="jsdoc-syntax">;
893     };
894
895     </span><span class="jsdoc-var">Renderer.prototype.em </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">) {
896       </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">'&lt;em&gt;' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">text </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&lt;/em&gt;'</span><span class="jsdoc-syntax">;
897     };
898
899     </span><span class="jsdoc-var">Renderer.prototype.codespan </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">) {
900       </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">'&lt;code&gt;' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">text </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&lt;/code&gt;'</span><span class="jsdoc-syntax">;
901     };
902
903     </span><span class="jsdoc-var">Renderer.prototype.br </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() {
904       </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.options.xhtml </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">'&lt;br/&gt;' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'&lt;br&gt;'</span><span class="jsdoc-syntax">;
905     };
906
907     </span><span class="jsdoc-var">Renderer.prototype.del </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">) {
908       </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">'&lt;del&gt;' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">text </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&lt;/del&gt;'</span><span class="jsdoc-syntax">;
909     };
910
911     </span><span class="jsdoc-var">Renderer.prototype.link </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">href</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">title</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">) {
912       </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.options.sanitize</span><span class="jsdoc-syntax">) {
913         </span><span class="jsdoc-keyword">try </span><span class="jsdoc-syntax">{
914           </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">prot </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">decodeURIComponent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">unescape</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">href</span><span class="jsdoc-syntax">))
915             </span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/[^\w:]/g, </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">)
916             </span><span class="jsdoc-var">.toLowerCase</span><span class="jsdoc-syntax">();
917         } </span><span class="jsdoc-keyword">catch </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) {
918           </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
919         }
920         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">prot.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'javascript:'</span><span class="jsdoc-syntax">) === 0 || </span><span class="jsdoc-var">prot.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'vbscript:'</span><span class="jsdoc-syntax">) === 0) {
921           </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
922         }
923       }
924       </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">out </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'&lt;a href=&quot;' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">href </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&quot;'</span><span class="jsdoc-syntax">;
925       </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">title</span><span class="jsdoc-syntax">) {
926         </span><span class="jsdoc-var">out </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-string">' title=&quot;' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">title </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&quot;'</span><span class="jsdoc-syntax">;
927       }
928       </span><span class="jsdoc-var">out </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-string">'&gt;' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">text </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&lt;/a&gt;'</span><span class="jsdoc-syntax">;
929       </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">out</span><span class="jsdoc-syntax">;
930     };
931
932     </span><span class="jsdoc-var">Renderer.prototype.image </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">href</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">title</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">) {
933       </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">out </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'&lt;img src=&quot;' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">href </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&quot; alt=&quot;' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">text </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&quot;'</span><span class="jsdoc-syntax">;
934       </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">title</span><span class="jsdoc-syntax">) {
935         </span><span class="jsdoc-var">out </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-string">' title=&quot;' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">title </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&quot;'</span><span class="jsdoc-syntax">;
936       }
937       </span><span class="jsdoc-var">out </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">this.options.xhtml </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">'/&gt;' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'&gt;'</span><span class="jsdoc-syntax">;
938       </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">out</span><span class="jsdoc-syntax">;
939     };
940
941     </span><span class="jsdoc-var">Renderer.prototype.text </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">) {
942       </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">;
943     };
944
945     </span><span class="jsdoc-comment">/**
946      * Parsing &amp; Compiling
947      */
948
949     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">Parser </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">options</span><span class="jsdoc-syntax">) {
950       </span><span class="jsdoc-var">this.tokens </span><span class="jsdoc-syntax">= [];
951       </span><span class="jsdoc-var">this.token </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">;
952       </span><span class="jsdoc-var">this.options </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">options </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">marked.defaults</span><span class="jsdoc-syntax">;
953       </span><span class="jsdoc-var">this.options.renderer </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.options.renderer </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Renderer</span><span class="jsdoc-syntax">;
954       </span><span class="jsdoc-var">this.renderer </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.options.renderer</span><span class="jsdoc-syntax">;
955       </span><span class="jsdoc-var">this.renderer.options </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.options</span><span class="jsdoc-syntax">;
956     }
957
958     </span><span class="jsdoc-comment">/**
959      * Static Parse Method
960      */
961
962     </span><span class="jsdoc-var">Parser.parse </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">options</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">renderer</span><span class="jsdoc-syntax">) {
963       </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">parser </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Parser</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">options</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">renderer</span><span class="jsdoc-syntax">);
964       </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">parser.parse</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">);
965     };
966
967     </span><span class="jsdoc-comment">/**
968      * Parse Loop
969      */
970
971     </span><span class="jsdoc-var">Parser.prototype.parse </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">) {
972       </span><span class="jsdoc-var">this.inline </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">InlineLexer</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src.links</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.options</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.renderer</span><span class="jsdoc-syntax">);
973       </span><span class="jsdoc-var">this.tokens </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">src.reverse</span><span class="jsdoc-syntax">();
974
975       </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">out </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
976       </span><span class="jsdoc-keyword">while </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.next</span><span class="jsdoc-syntax">()) {
977         </span><span class="jsdoc-var">out </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">this.tok</span><span class="jsdoc-syntax">();
978       }
979
980       </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">out</span><span class="jsdoc-syntax">;
981     };
982
983     </span><span class="jsdoc-comment">/**
984      * Next Token
985      */
986
987     </span><span class="jsdoc-var">Parser.prototype.next </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() {
988       </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.token </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.tokens.pop</span><span class="jsdoc-syntax">();
989     };
990
991     </span><span class="jsdoc-comment">/**
992      * Preview Next Token
993      */
994
995     </span><span class="jsdoc-var">Parser.prototype.peek </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() {
996       </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.tokens</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">this.tokens.length </span><span class="jsdoc-syntax">- 1] || 0;
997     };
998
999     </span><span class="jsdoc-comment">/**
1000      * Parse Text Tokens
1001      */
1002
1003     </span><span class="jsdoc-var">Parser.prototype.parseText </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() {
1004       </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">body </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.token.text</span><span class="jsdoc-syntax">;
1005
1006       </span><span class="jsdoc-keyword">while </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.peek</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.type </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-string">'text'</span><span class="jsdoc-syntax">) {
1007         </span><span class="jsdoc-var">body </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-string">'\n' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">this.next</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.text</span><span class="jsdoc-syntax">;
1008       }
1009
1010       </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.inline.output</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">body</span><span class="jsdoc-syntax">);
1011     };
1012
1013     </span><span class="jsdoc-comment">/**
1014      * Parse Current Token
1015      */
1016
1017     </span><span class="jsdoc-var">Parser.prototype.tok </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() {
1018       </span><span class="jsdoc-keyword">switch </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.token.type</span><span class="jsdoc-syntax">) {
1019         </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">'space'</span><span class="jsdoc-syntax">: {
1020           </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
1021         }
1022         </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">'hr'</span><span class="jsdoc-syntax">: {
1023           </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.renderer.hr</span><span class="jsdoc-syntax">();
1024         }
1025         </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">'heading'</span><span class="jsdoc-syntax">: {
1026           </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.renderer.heading</span><span class="jsdoc-syntax">(
1027             </span><span class="jsdoc-var">this.inline.output</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.token.text</span><span class="jsdoc-syntax">),
1028             </span><span class="jsdoc-var">this.token.depth</span><span class="jsdoc-syntax">,
1029             </span><span class="jsdoc-var">this.token.text</span><span class="jsdoc-syntax">);
1030         }
1031         </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">'code'</span><span class="jsdoc-syntax">: {
1032           </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.renderer.code</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.token.text</span><span class="jsdoc-syntax">,
1033             </span><span class="jsdoc-var">this.token.lang</span><span class="jsdoc-syntax">,
1034             </span><span class="jsdoc-var">this.token.escaped</span><span class="jsdoc-syntax">);
1035         }
1036         </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">'table'</span><span class="jsdoc-syntax">: {
1037           </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">header </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">''
1038             </span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">body </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">''
1039             </span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">i
1040             </span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">row
1041             </span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">cell
1042             </span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">flags
1043             </span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">j</span><span class="jsdoc-syntax">;
1044
1045           </span><span class="jsdoc-comment">// header
1046           </span><span class="jsdoc-var">cell </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
1047           </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">this.token.header.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
1048             </span><span class="jsdoc-var">flags </span><span class="jsdoc-syntax">= { </span><span class="jsdoc-var">header</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">align</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.token.align</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">] };
1049             </span><span class="jsdoc-var">cell </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">this.renderer.tablecell</span><span class="jsdoc-syntax">(
1050               </span><span class="jsdoc-var">this.inline.output</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.token.header</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]),
1051               { </span><span class="jsdoc-var">header</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">align</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.token.align</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">] }
1052             );
1053           }
1054           </span><span class="jsdoc-var">header </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">this.renderer.tablerow</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cell</span><span class="jsdoc-syntax">);
1055
1056           </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">this.token.cells.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
1057             </span><span class="jsdoc-var">row </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.token.cells</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">];
1058
1059             </span><span class="jsdoc-var">cell </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
1060             </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">j </span><span class="jsdoc-syntax">= 0; </span><span class="jsdoc-var">j </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">row.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">j</span><span class="jsdoc-syntax">++) {
1061               </span><span class="jsdoc-var">cell </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">this.renderer.tablecell</span><span class="jsdoc-syntax">(
1062                 </span><span class="jsdoc-var">this.inline.output</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">row</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">j</span><span class="jsdoc-syntax">]),
1063                 { </span><span class="jsdoc-var">header</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">align</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.token.align</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">j</span><span class="jsdoc-syntax">] }
1064               );
1065             }
1066
1067             </span><span class="jsdoc-var">body </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">this.renderer.tablerow</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cell</span><span class="jsdoc-syntax">);
1068           }
1069           </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.renderer.table</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">header</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">body</span><span class="jsdoc-syntax">);
1070         }
1071         </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">'blockquote_start'</span><span class="jsdoc-syntax">: {
1072           </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">body </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
1073
1074           </span><span class="jsdoc-keyword">while </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.next</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.type </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-string">'blockquote_end'</span><span class="jsdoc-syntax">) {
1075             </span><span class="jsdoc-var">body </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">this.tok</span><span class="jsdoc-syntax">();
1076           }
1077
1078           </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.renderer.blockquote</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">body</span><span class="jsdoc-syntax">);
1079         }
1080         </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">'list_start'</span><span class="jsdoc-syntax">: {
1081           </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">body </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">''
1082             </span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">ordered </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.token.ordered</span><span class="jsdoc-syntax">;
1083
1084           </span><span class="jsdoc-keyword">while </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.next</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.type </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-string">'list_end'</span><span class="jsdoc-syntax">) {
1085             </span><span class="jsdoc-var">body </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">this.tok</span><span class="jsdoc-syntax">();
1086           }
1087
1088           </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.renderer.list</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">body</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">ordered</span><span class="jsdoc-syntax">);
1089         }
1090         </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">'list_item_start'</span><span class="jsdoc-syntax">: {
1091           </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">body </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
1092
1093           </span><span class="jsdoc-keyword">while </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.next</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.type </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-string">'list_item_end'</span><span class="jsdoc-syntax">) {
1094             </span><span class="jsdoc-var">body </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">this.token.type </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-string">'text'
1095               </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">this.parseText</span><span class="jsdoc-syntax">()
1096               : </span><span class="jsdoc-var">this.tok</span><span class="jsdoc-syntax">();
1097           }
1098
1099           </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.renderer.listitem</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">body</span><span class="jsdoc-syntax">);
1100         }
1101         </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">'loose_item_start'</span><span class="jsdoc-syntax">: {
1102           </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">body </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
1103
1104           </span><span class="jsdoc-keyword">while </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.next</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.type </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-string">'list_item_end'</span><span class="jsdoc-syntax">) {
1105             </span><span class="jsdoc-var">body </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">this.tok</span><span class="jsdoc-syntax">();
1106           }
1107
1108           </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.renderer.listitem</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">body</span><span class="jsdoc-syntax">);
1109         }
1110         </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">'html'</span><span class="jsdoc-syntax">: {
1111           </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">html </span><span class="jsdoc-syntax">= !</span><span class="jsdoc-var">this.token.pre </span><span class="jsdoc-syntax">&amp;&amp; !</span><span class="jsdoc-var">this.options.pedantic
1112             </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">this.inline.output</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.token.text</span><span class="jsdoc-syntax">)
1113             : </span><span class="jsdoc-var">this.token.text</span><span class="jsdoc-syntax">;
1114           </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.renderer.html</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">);
1115         }
1116         </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">'paragraph'</span><span class="jsdoc-syntax">: {
1117           </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.renderer.paragraph</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.inline.output</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.token.text</span><span class="jsdoc-syntax">));
1118         }
1119         </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">'text'</span><span class="jsdoc-syntax">: {
1120           </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.renderer.paragraph</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.parseText</span><span class="jsdoc-syntax">());
1121         }
1122       }
1123     };
1124
1125     </span><span class="jsdoc-comment">/**
1126      * Helpers
1127      */
1128
1129     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">escape </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">encode</span><span class="jsdoc-syntax">) {
1130       </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">html
1131         .replace</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">encode </span><span class="jsdoc-syntax">? /&amp;(?!#?\w+;)/g : /&amp;/g, </span><span class="jsdoc-string">'&amp;amp;'</span><span class="jsdoc-syntax">)
1132         </span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/&lt;/g, </span><span class="jsdoc-string">'&amp;lt;'</span><span class="jsdoc-syntax">)
1133         </span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/&gt;/g, </span><span class="jsdoc-string">'&amp;gt;'</span><span class="jsdoc-syntax">)
1134         </span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/&quot;/g, </span><span class="jsdoc-string">'&amp;quot;'</span><span class="jsdoc-syntax">)
1135         </span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/'/g, </span><span class="jsdoc-string">'&amp;#39;'</span><span class="jsdoc-syntax">);
1136     }
1137
1138     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">unescape </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">) {
1139         </span><span class="jsdoc-comment">// explicitly match decimal, hex, and named HTML entities 
1140       </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">html.replace</span><span class="jsdoc-syntax">(/&amp;(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/g, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">_</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">) {
1141         </span><span class="jsdoc-var">n </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">n.toLowerCase</span><span class="jsdoc-syntax">();
1142         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-string">'colon'</span><span class="jsdoc-syntax">) { </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">':'</span><span class="jsdoc-syntax">; }
1143         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n.charAt</span><span class="jsdoc-syntax">(0) === </span><span class="jsdoc-string">'#'</span><span class="jsdoc-syntax">) {
1144           </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">n.charAt</span><span class="jsdoc-syntax">(1) === </span><span class="jsdoc-string">'x'
1145             </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">String.fromCharCode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">parseInt</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n.substring</span><span class="jsdoc-syntax">(2), 16))
1146             : </span><span class="jsdoc-var">String.fromCharCode</span><span class="jsdoc-syntax">(+</span><span class="jsdoc-var">n.substring</span><span class="jsdoc-syntax">(1));
1147         }
1148         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
1149       });
1150     }
1151
1152     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">replace </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">regex</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">opt</span><span class="jsdoc-syntax">) {
1153       </span><span class="jsdoc-var">regex </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">regex.source</span><span class="jsdoc-syntax">;
1154       </span><span class="jsdoc-var">opt </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">opt </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
1155       </span><span class="jsdoc-keyword">return function </span><span class="jsdoc-var">self</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">name</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">val</span><span class="jsdoc-syntax">) {
1156         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">name</span><span class="jsdoc-syntax">) { </span><span class="jsdoc-keyword">return new </span><span class="jsdoc-var">RegExp</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">regex</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">opt</span><span class="jsdoc-syntax">); }
1157         </span><span class="jsdoc-var">val </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">val.source </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">val</span><span class="jsdoc-syntax">;
1158         </span><span class="jsdoc-var">val </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">val.replace</span><span class="jsdoc-syntax">(/(^|[^\[])\^/g, </span><span class="jsdoc-string">'$1'</span><span class="jsdoc-syntax">);
1159         </span><span class="jsdoc-var">regex </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">regex.replace</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">name</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">val</span><span class="jsdoc-syntax">);
1160         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">self</span><span class="jsdoc-syntax">;
1161       };
1162     }
1163
1164     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">noop </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">() {}
1165     </span><span class="jsdoc-var">noop.exec </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">noop</span><span class="jsdoc-syntax">;
1166
1167     </span><span class="jsdoc-keyword">function </span><span class="jsdoc-var">merge</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">obj</span><span class="jsdoc-syntax">) {
1168       </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 1
1169         , </span><span class="jsdoc-var">target
1170         </span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">key</span><span class="jsdoc-syntax">;
1171
1172       </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">arguments.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
1173         </span><span class="jsdoc-var">target </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">arguments</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">];
1174         </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">key </span><span class="jsdoc-keyword">in </span><span class="jsdoc-var">target</span><span class="jsdoc-syntax">) {
1175           </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Object.prototype.hasOwnProperty.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">target</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">key</span><span class="jsdoc-syntax">)) {
1176             </span><span class="jsdoc-var">obj</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">key</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-var">target</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">key</span><span class="jsdoc-syntax">];
1177           }
1178         }
1179       }
1180
1181       </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">obj</span><span class="jsdoc-syntax">;
1182     }
1183
1184
1185     </span><span class="jsdoc-comment">/**
1186      * Marked
1187      */
1188
1189     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">marked </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">opt</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">callback</span><span class="jsdoc-syntax">) {
1190       </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">callback </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">opt </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-string">'function'</span><span class="jsdoc-syntax">) {
1191         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">callback</span><span class="jsdoc-syntax">) {
1192           </span><span class="jsdoc-var">callback </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">opt</span><span class="jsdoc-syntax">;
1193           </span><span class="jsdoc-var">opt </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">;
1194         }
1195
1196         </span><span class="jsdoc-var">opt </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">merge</span><span class="jsdoc-syntax">({}, </span><span class="jsdoc-var">marked.defaults</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">opt </span><span class="jsdoc-syntax">|| {});
1197
1198         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">highlight </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">opt.highlight
1199           </span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">tokens
1200           </span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">pending
1201           </span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0;
1202
1203         </span><span class="jsdoc-keyword">try </span><span class="jsdoc-syntax">{
1204           </span><span class="jsdoc-var">tokens </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Lexer.lex</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">opt</span><span class="jsdoc-syntax">)
1205         } </span><span class="jsdoc-keyword">catch </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) {
1206           </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">callback</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
1207         }
1208
1209         </span><span class="jsdoc-var">pending </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">tokens.length</span><span class="jsdoc-syntax">;
1210
1211         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">done </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">err</span><span class="jsdoc-syntax">) {
1212           </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">err</span><span class="jsdoc-syntax">) {
1213             </span><span class="jsdoc-var">opt.highlight </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">highlight</span><span class="jsdoc-syntax">;
1214             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">callback</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">err</span><span class="jsdoc-syntax">);
1215           }
1216
1217           </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">out</span><span class="jsdoc-syntax">;
1218
1219           </span><span class="jsdoc-keyword">try </span><span class="jsdoc-syntax">{
1220             </span><span class="jsdoc-var">out </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Parser.parse</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tokens</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">opt</span><span class="jsdoc-syntax">);
1221           } </span><span class="jsdoc-keyword">catch </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) {
1222             </span><span class="jsdoc-var">err </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">;
1223           }
1224
1225           </span><span class="jsdoc-var">opt.highlight </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">highlight</span><span class="jsdoc-syntax">;
1226
1227           </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">err
1228             </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">callback</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">err</span><span class="jsdoc-syntax">)
1229             : </span><span class="jsdoc-var">callback</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">out</span><span class="jsdoc-syntax">);
1230         };
1231
1232         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">highlight </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">highlight.length </span><span class="jsdoc-syntax">&lt; 3) {
1233           </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">done</span><span class="jsdoc-syntax">();
1234         }
1235
1236         </span><span class="jsdoc-keyword">delete </span><span class="jsdoc-var">opt.highlight</span><span class="jsdoc-syntax">;
1237
1238         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">pending</span><span class="jsdoc-syntax">) { </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">done</span><span class="jsdoc-syntax">(); }
1239
1240         </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">tokens.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
1241           (</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">token</span><span class="jsdoc-syntax">) {
1242             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">token.type </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-string">'code'</span><span class="jsdoc-syntax">) {
1243               </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">--</span><span class="jsdoc-var">pending </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">done</span><span class="jsdoc-syntax">();
1244             }
1245             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">highlight</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">token.text</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">token.lang</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">err</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">code</span><span class="jsdoc-syntax">) {
1246               </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">err</span><span class="jsdoc-syntax">) { </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">done</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">err</span><span class="jsdoc-syntax">); }
1247               </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">code </span><span class="jsdoc-syntax">== </span><span class="jsdoc-keyword">null </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">code </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-var">token.text</span><span class="jsdoc-syntax">) {
1248                 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">--</span><span class="jsdoc-var">pending </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">done</span><span class="jsdoc-syntax">();
1249               }
1250               </span><span class="jsdoc-var">token.text </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">code</span><span class="jsdoc-syntax">;
1251               </span><span class="jsdoc-var">token.escaped </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
1252               --</span><span class="jsdoc-var">pending </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">done</span><span class="jsdoc-syntax">();
1253             });
1254           })(</span><span class="jsdoc-var">tokens</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]);
1255         }
1256
1257         </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
1258       }
1259       </span><span class="jsdoc-keyword">try </span><span class="jsdoc-syntax">{
1260         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">opt</span><span class="jsdoc-syntax">) { </span><span class="jsdoc-var">opt </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">merge</span><span class="jsdoc-syntax">({}, </span><span class="jsdoc-var">marked.defaults</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">opt</span><span class="jsdoc-syntax">); }
1261         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">Parser.parse</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Lexer.lex</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">opt</span><span class="jsdoc-syntax">), </span><span class="jsdoc-var">opt</span><span class="jsdoc-syntax">);
1262       } </span><span class="jsdoc-keyword">catch </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) {
1263         </span><span class="jsdoc-var">e.message </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-string">'\nPlease report this to https://github.com/chjj/marked.'</span><span class="jsdoc-syntax">;
1264         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">((</span><span class="jsdoc-var">opt </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">marked.defaults</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.silent</span><span class="jsdoc-syntax">) {
1265           </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">'&lt;p&gt;An error occured:&lt;/p&gt;&lt;pre&gt;'
1266             </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">escape</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e.message </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">)
1267             + </span><span class="jsdoc-string">'&lt;/pre&gt;'</span><span class="jsdoc-syntax">;
1268         }
1269         </span><span class="jsdoc-keyword">throw </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">;
1270       }
1271     }
1272
1273     </span><span class="jsdoc-comment">/**
1274      * Options
1275      */
1276
1277     </span><span class="jsdoc-var">marked.options </span><span class="jsdoc-syntax">=
1278     </span><span class="jsdoc-var">marked.setOptions </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">opt</span><span class="jsdoc-syntax">) {
1279       </span><span class="jsdoc-var">merge</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">marked.defaults</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">opt</span><span class="jsdoc-syntax">);
1280       </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">marked</span><span class="jsdoc-syntax">;
1281     };
1282
1283     </span><span class="jsdoc-var">marked.defaults </span><span class="jsdoc-syntax">= {
1284       </span><span class="jsdoc-var">gfm</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
1285       </span><span class="jsdoc-var">tables</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
1286       </span><span class="jsdoc-var">breaks</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
1287       </span><span class="jsdoc-var">pedantic</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
1288       </span><span class="jsdoc-var">sanitize</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
1289       </span><span class="jsdoc-var">sanitizer</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">,
1290       </span><span class="jsdoc-var">mangle</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
1291       </span><span class="jsdoc-var">smartLists</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
1292       </span><span class="jsdoc-var">silent</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
1293       </span><span class="jsdoc-var">highlight</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">,
1294       </span><span class="jsdoc-var">langPrefix</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'lang-'</span><span class="jsdoc-syntax">,
1295       </span><span class="jsdoc-var">smartypants</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
1296       </span><span class="jsdoc-var">headerPrefix</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">,
1297       </span><span class="jsdoc-var">renderer</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Renderer</span><span class="jsdoc-syntax">,
1298       </span><span class="jsdoc-var">xhtml</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false
1299     </span><span class="jsdoc-syntax">};
1300
1301     </span><span class="jsdoc-comment">/**
1302      * Expose
1303      */
1304
1305     </span><span class="jsdoc-var">marked.Parser </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Parser</span><span class="jsdoc-syntax">;
1306     </span><span class="jsdoc-var">marked.parser </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Parser.parse</span><span class="jsdoc-syntax">;
1307
1308     </span><span class="jsdoc-var">marked.Renderer </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Renderer</span><span class="jsdoc-syntax">;
1309
1310     </span><span class="jsdoc-var">marked.Lexer </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Lexer</span><span class="jsdoc-syntax">;
1311     </span><span class="jsdoc-var">marked.lexer </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Lexer.lex</span><span class="jsdoc-syntax">;
1312
1313     </span><span class="jsdoc-var">marked.InlineLexer </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">InlineLexer</span><span class="jsdoc-syntax">;
1314     </span><span class="jsdoc-var">marked.inlineLexer </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">InlineLexer.output</span><span class="jsdoc-syntax">;
1315
1316     </span><span class="jsdoc-var">marked.parse </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">marked</span><span class="jsdoc-syntax">;
1317
1318     </span><span class="jsdoc-var">Roo.Markdown.marked </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">marked</span><span class="jsdoc-syntax">;
1319
1320 })();</span></code></body></html>