@@ -69,7 +69,7 @@ block.html = edit(block.html, 'i')
6969
7070block . paragraph = edit ( block . _paragraph )
7171 . replace ( 'hr' , block . hr )
72- . replace ( 'heading' , ' {0,3}#{1,6} + ' )
72+ . replace ( 'heading' , ' {0,3}#{1,6} ' )
7373 . replace ( '|lheading' , '' ) // setex headings don't interrupt commonmark paragraphs
7474 . replace ( 'blockquote' , ' {0,3}>' )
7575 . replace ( 'fences' , ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n' )
@@ -94,9 +94,23 @@ block.normal = merge({}, block);
9494
9595block . gfm = merge ( { } , block . normal , {
9696 nptable : / ^ * ( [ ^ | \n ] .* \| .* ) \n * ( [ - : ] + * \| [ - | : ] * ) (?: \n ( (?: .* [ ^ > \n ] .* (?: \n | $ ) ) * ) \n * | $ ) / ,
97- table : / ^ * \| ( .+ ) \n * \| ? ( * [ - : ] + [ - | : ] * ) (?: \n ( (?: * [ ^ > \n ] .* (?: \n | $ ) ) * ) \n * | $ ) /
97+ table : '^ *\\|(.+)\\n' // Header
98+ + ' *\\|?( *[-:]+[-| :]*)' // Align
99+ + '(?:\\n((?:(?!^|>|\\n| |hr|heading|lheading|code|fences|list|html).*(?:\\n|$))*)\\n*|$)' // Cells
98100} ) ;
99101
102+ block . gfm . table = edit ( block . gfm . table )
103+ . replace ( 'hr' , block . hr )
104+ . replace ( 'heading' , ' {0,3}#{1,6} ' )
105+ . replace ( 'lheading' , '([^\\n]+)\\n {0,3}(=+|-+) *(?:\\n+|$)' )
106+ . replace ( 'blockquote' , ' {0,3}>' )
107+ . replace ( 'code' , ' {4}[^\\n]' )
108+ . replace ( 'fences' , ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n' )
109+ . replace ( 'list' , ' {0,3}(?:[*+-]|1[.)]) ' ) // only lists starting from 1 can interrupt
110+ . replace ( 'html' , '</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|!--)' )
111+ . replace ( 'tag' , block . _tag ) // pars can be interrupted by type (6) html blocks
112+ . getRegex ( ) ;
113+
100114/**
101115 * Pedantic grammar (original John Gruber's loose markdown specification)
102116 */
0 commit comments