11const TAGS = {
22 '' : [ '<em>' , '</em>' ] ,
33 _ : [ '<strong>' , '</strong>' ] ,
4+ '*' : [ '<strong>' , '</strong>' ] ,
45 '~' : [ '<s>' , '</s>' ] ,
56 '\n' : [ '<br />' ] ,
67 ' ' : [ '<br />' ] ,
@@ -31,11 +32,12 @@ export default function parse(md, prevLinks) {
3132 chunk , prev , token , inner , t ;
3233
3334 function tag ( token ) {
34- var desc = TAGS [ token . replace ( / \* / g , '_' ) [ 1 ] || '' ] ,
35- end = context [ context . length - 1 ] == token ;
35+ let desc = TAGS [ token [ 1 ] || '' ] ;
36+ let end = context [ context . length - 1 ] == token ;
3637 if ( ! desc ) return token ;
3738 if ( ! desc [ 1 ] ) return desc [ 0 ] ;
38- context [ end ?'pop' :'push' ] ( token ) ;
39+ if ( end ) context . pop ( ) ;
40+ else context . push ( token ) ;
3941 return desc [ end | 0 ] ;
4042 }
4143
@@ -58,17 +60,16 @@ export default function parse(md, prevLinks) {
5860 // escaped
5961 }
6062 // Code/Indent blocks:
61- else if ( token [ 3 ] || token [ 4 ] ) {
62- chunk = '<pre class="code ' + ( token [ 4 ] ?'poetry' :token [ 2 ] . toLowerCase ( ) ) + '"><code' + ( token [ 2 ] ? ` class="language-${ token [ 2 ] . toLowerCase ( ) } "` : '' ) + '>' + outdent ( encodeAttr ( token [ 3 ] || token [ 4 ] ) . replace ( / ^ \n + | \n + $ / g, '' ) ) + '</code></pre>' ;
63+ else if ( t = ( token [ 3 ] || token [ 4 ] ) ) {
64+ chunk = '<pre class="code ' + ( token [ 4 ] ?'poetry' :token [ 2 ] . toLowerCase ( ) ) + '"><code' + ( token [ 2 ] ? ` class="language-${ token [ 2 ] . toLowerCase ( ) } "` : '' ) + '>' + outdent ( encodeAttr ( t ) . replace ( / ^ \n + | \n + $ / g, '' ) ) + '</code></pre>' ;
6365 }
6466 // > Quotes, -* lists:
65- else if ( token [ 6 ] ) {
66- t = token [ 6 ] ;
67+ else if ( t = token [ 6 ] ) {
6768 if ( t . match ( / \. / ) ) {
6869 token [ 5 ] = token [ 5 ] . replace ( / ^ \d + / gm, '' ) ;
6970 }
7071 inner = parse ( outdent ( token [ 5 ] . replace ( / ^ \s * [ > * + . - ] / gm, '' ) ) ) ;
71- if ( t === '>' ) t = 'blockquote' ;
72+ if ( t == '>' ) t = 'blockquote' ;
7273 else {
7374 t = t . match ( / \. / ) ? 'ol' : 'ul' ;
7475 inner = inner . replace ( / ^ ( .* ) ( \n | $ ) / gm, '<li>$1</li>' ) ;
@@ -89,7 +90,7 @@ export default function parse(md, prevLinks) {
8990 }
9091 // Headings:
9192 else if ( token [ 12 ] || token [ 14 ] ) {
92- t = 'h' + ( token [ 14 ] ? token [ 14 ] . length : ( token [ 13 ] [ 0 ] === '=' ? 1 : 2 ) ) ;
93+ t = 'h' + ( token [ 14 ] ? token [ 14 ] . length : ( token [ 13 ] > '=' ? 1 : 2 ) ) ;
9394 chunk = '<' + t + '>' + parse ( token [ 12 ] || token [ 15 ] , links ) + '</' + t + '>' ;
9495 }
9596 // `code`:
@@ -104,5 +105,5 @@ export default function parse(md, prevLinks) {
104105 out += chunk ;
105106 }
106107
107- return ( out + md . substring ( last ) + flush ( ) ) . trim ( ) ;
108+ return ( out + md . substring ( last ) + flush ( ) ) . replace ( / ^ \n + | \n + $ / g , '' ) ;
108109}
0 commit comments