summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2022-12-23 21:03:50 +0000
committerKarl Berry <karl@freefriends.org>2022-12-23 21:03:50 +0000
commit8d383d484835575910b71ef5e1746d57be9afef3 (patch)
tree5d61e2067af838ba094af5faed2682ca07373ff1 /Master/texmf-dist/tex
parent23f484c87d10a1d39e2ea85bab67f04e17adff4a (diff)
markdown (23dec22)
git-svn-id: svn://tug.org/texlive/trunk@65339 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r--Master/texmf-dist/tex/generic/markdown/markdown.tex1063
-rw-r--r--Master/texmf-dist/tex/luatex/markdown/markdown.lua909
2 files changed, 1102 insertions, 870 deletions
diff --git a/Master/texmf-dist/tex/generic/markdown/markdown.tex b/Master/texmf-dist/tex/generic/markdown/markdown.tex
index 885c7598b09..bc769262a08 100644
--- a/Master/texmf-dist/tex/generic/markdown/markdown.tex
+++ b/Master/texmf-dist/tex/generic/markdown/markdown.tex
@@ -341,10 +341,18 @@
{ boolean }
{ false }
\__markdown_add_lua_option:nnn
+ { blankBeforeDivFence }
+ { boolean }
+ { false }
+\__markdown_add_lua_option:nnn
{ blankBeforeHeading }
{ boolean }
{ false }
\__markdown_add_lua_option:nnn
+ { bracketedSpans }
+ { boolean }
+ { false }
+\__markdown_add_lua_option:nnn
{ breakableBlockquotes }
{ boolean }
{ false }
@@ -376,6 +384,10 @@
{ eagerCache }
{ boolean }
{ true }
+\__markdown_add_lua_option:nnn
+ { expectJekyllData }
+ { boolean }
+ { false }
\cs_generate_variant:Nn
\__markdown_add_lua_option:nnn
{ nnV }
@@ -384,10 +396,6 @@
{ clist }
\c_empty_clist
\__markdown_add_lua_option:nnn
- { expectJekyllData }
- { boolean }
- { false }
-\__markdown_add_lua_option:nnn
{ fancyLists }
{ boolean }
{ false }
@@ -396,15 +404,11 @@
{ boolean }
{ false }
\__markdown_add_lua_option:nnn
- { finalizeCache }
+ { fencedDivs }
{ boolean }
{ false }
\__markdown_add_lua_option:nnn
- { footnotes }
- { boolean }
- { false }
-\__markdown_add_lua_option:nnn
- { notes }
+ { finalizeCache }
{ boolean }
{ false }
\__markdown_add_lua_option:nnn
@@ -444,6 +448,14 @@
{ boolean }
{ false }
\__markdown_add_lua_option:nnn
+ { footnotes }
+ { boolean }
+ { false }
+\__markdown_add_lua_option:nnn
+ { notes }
+ { boolean }
+ { false }
+\__markdown_add_lua_option:nnn
{ pipeTables }
{ boolean }
{ false }
@@ -512,8 +524,8 @@
{ boolean }
{ true }
\ExplSyntaxOff
-\def\markdownLastModified{2022-10-30}%
-\def\markdownVersion{2.18.0-0-gd8ae860}%
+\def\markdownLastModified{2022-12-23}%
+\def\markdownVersion{2.19.0-0-g80fcf20}%
\let\markdownBegin\relax
\let\markdownEnd\relax
\let\markdownInput\relax
@@ -666,952 +678,961 @@
\seq_new:N \g__markdown_renderers_seq
\prop_new:N \g__markdown_renderer_arities_prop
\ExplSyntaxOff
-\def\markdownRendererTickedBox{%
- \markdownRendererTickedBoxPrototype}%
+\def\markdownRendererAttributeIdentifier{%
+ \markdownRendererAttributeIdentifierPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { tickedBox }
+ { attributeIdentifier }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { tickedBox }
- { 0 }
+ { attributeIdentifier }
+ { 1 }
\ExplSyntaxOff
-\def\markdownRendererHalfTickedBox{%
- \markdownRendererHalfTickedBoxPrototype}%
+\def\markdownRendererAttributeClassName{%
+ \markdownRendererAttributeClassNamePrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { halfTickedBox }
+ { attributeClassName }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { halfTickedBox }
- { 0 }
+ { attributeClassName }
+ { 1 }
\ExplSyntaxOff
-\def\markdownRendererUntickedBox{%
- \markdownRendererUntickedBoxPrototype}%
+\def\markdownRendererAttributeKeyValue{%
+ \markdownRendererAttributeKeyValuePrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { untickedBox }
+ { attributeKeyValue }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { untickedBox }
- { 0 }
+ { attributeKeyValue }
+ { 2 }
\ExplSyntaxOff
-\def\markdownRendererDocumentBegin{%
- \markdownRendererDocumentBeginPrototype}%
+\def\markdownRendererBlockQuoteBegin{%
+ \markdownRendererBlockQuoteBeginPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { documentBegin }
+ { blockQuoteBegin }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { documentBegin }
+ { blockQuoteBegin }
{ 0 }
\ExplSyntaxOff
-\def\markdownRendererDocumentEnd{%
- \markdownRendererDocumentEndPrototype}%
+\def\markdownRendererBlockQuoteEnd{%
+ \markdownRendererBlockQuoteEndPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { documentEnd }
+ { blockQuoteEnd }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { documentEnd }
+ { blockQuoteEnd }
{ 0 }
\ExplSyntaxOff
-\def\markdownRendererInterblockSeparator{%
- \markdownRendererInterblockSeparatorPrototype}%
+\def\markdownRendererBracketedSpanAttributeContextBegin{%
+ \markdownRendererBracketedSpanAttributeContextBeginPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { interblockSeparator }
+ { bracketedSpanAttributeContextBegin }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { interblockSeparator }
+ { bracketedSpanAttributeContextBegin }
{ 0 }
\ExplSyntaxOff
-\def\markdownRendererLineBreak{%
- \markdownRendererLineBreakPrototype}%
+\def\markdownRendererBracketedSpanAttributeContextEnd{%
+ \markdownRendererBracketedSpanAttributeContextEndPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { lineBreak }
+ { bracketedSpanAttributeContextEnd }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { lineBreak }
+ { bracketedSpanAttributeContextEnd }
{ 0 }
\ExplSyntaxOff
-\def\markdownRendererEllipsis{%
- \markdownRendererEllipsisPrototype}%
+\def\markdownRendererUlBegin{%
+ \markdownRendererUlBeginPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { ellipsis }
+ { ulBegin }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { ellipsis }
+ { ulBegin }
{ 0 }
\ExplSyntaxOff
-\def\markdownRendererNbsp{%
- \markdownRendererNbspPrototype}%
+\def\markdownRendererUlBeginTight{%
+ \markdownRendererUlBeginTightPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { nbsp }
+ { ulBeginTight }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { nbsp }
+ { ulBeginTight }
{ 0 }
\ExplSyntaxOff
-\def\markdownRendererLeftBrace{%
- \markdownRendererLeftBracePrototype}%
+\def\markdownRendererUlItem{%
+ \markdownRendererUlItemPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { leftBrace }
+ { ulItem }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { leftBrace }
+ { ulItem }
{ 0 }
\ExplSyntaxOff
-\def\markdownRendererRightBrace{%
- \markdownRendererRightBracePrototype}%
+\def\markdownRendererUlItemEnd{%
+ \markdownRendererUlItemEndPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { rightBrace }
+ { ulItemEnd }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { rightBrace }
+ { ulItemEnd }
{ 0 }
\ExplSyntaxOff
-\def\markdownRendererDollarSign{%
- \markdownRendererDollarSignPrototype}%
+\def\markdownRendererUlEnd{%
+ \markdownRendererUlEndPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { dollarSign }
+ { ulEnd }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { dollarSign }
+ { ulEnd }
{ 0 }
\ExplSyntaxOff
-\def\markdownRendererPercentSign{%
- \markdownRendererPercentSignPrototype}%
+\def\markdownRendererUlEndTight{%
+ \markdownRendererUlEndTightPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { percentSign }
+ { ulEndTight }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { percentSign }
+ { ulEndTight }
{ 0 }
\ExplSyntaxOff
-\def\markdownRendererAmpersand{%
- \markdownRendererAmpersandPrototype}%
+\def\markdownRendererInputVerbatim{%
+ \markdownRendererInputVerbatimPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { ampersand }
+ { inputVerbatim }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { ampersand }
- { 0 }
+ { inputVerbatim }
+ { 1 }
\ExplSyntaxOff
-\def\markdownRendererUnderscore{%
- \markdownRendererUnderscorePrototype}%
+\def\markdownRendererInputFencedCode{%
+ \markdownRendererInputFencedCodePrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { underscore }
+ { inputFencedCode }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { underscore }
- { 0 }
+ { inputFencedCode }
+ { 2 }
\ExplSyntaxOff
-\def\markdownRendererHash{%
- \markdownRendererHashPrototype}%
+\def\markdownRendererCodeSpan{%
+ \markdownRendererCodeSpanPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { hash }
+ { codeSpan }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { hash }
- { 0 }
+ { codeSpan }
+ { 1 }
\ExplSyntaxOff
-\def\markdownRendererCircumflex{%
- \markdownRendererCircumflexPrototype}%
+\def\markdownRendererContentBlock{%
+ \markdownRendererContentBlockPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { circumflex }
+ { contentBlock }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { circumflex }
- { 0 }
+ { contentBlock }
+ { 4 }
\ExplSyntaxOff
-\def\markdownRendererBackslash{%
- \markdownRendererBackslashPrototype}%
+\def\markdownRendererContentBlockOnlineImage{%
+ \markdownRendererContentBlockOnlineImagePrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { backslash }
+ { contentBlockOnlineImage }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { backslash }
- { 0 }
+ { contentBlockOnlineImage }
+ { 4 }
\ExplSyntaxOff
-\def\markdownRendererTilde{%
- \markdownRendererTildePrototype}%
+\def\markdownRendererContentBlockCode{%
+ \markdownRendererContentBlockCodePrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { tilde }
+ { contentBlockCode }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { tilde }
- { 0 }
+ { contentBlockCode }
+ { 5 }
\ExplSyntaxOff
-\def\markdownRendererPipe{%
- \markdownRendererPipePrototype}%
+\def\markdownRendererDlBegin{%
+ \markdownRendererDlBeginPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { pipe }
+ { dlBegin }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { pipe }
+ { dlBegin }
{ 0 }
\ExplSyntaxOff
-\def\markdownRendererCodeSpan{%
- \markdownRendererCodeSpanPrototype}%
+\def\markdownRendererDlBeginTight{%
+ \markdownRendererDlBeginTightPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { codeSpan }
+ { dlBeginTight }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { codeSpan }
- { 1 }
+ { dlBeginTight }
+ { 0 }
\ExplSyntaxOff
-\def\markdownRendererLink{%
- \markdownRendererLinkPrototype}%
+\def\markdownRendererDlItem{%
+ \markdownRendererDlItemPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { link }
+ { dlItem }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { link }
- { 4 }
+ { dlItem }
+ { 1 }
\ExplSyntaxOff
-\def\markdownRendererImage{%
- \markdownRendererImagePrototype}%
+\def\markdownRendererDlItemEnd{%
+ \markdownRendererDlItemEndPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { image }
+ { dlItemEnd }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { image }
- { 4 }
+ { dlItemEnd }
+ { 0 }
\ExplSyntaxOff
-\def\markdownRendererContentBlock{%
- \markdownRendererContentBlockPrototype}%
+\def\markdownRendererDlDefinitionBegin{%
+ \markdownRendererDlDefinitionBeginPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { contentBlock }
+ { dlDefinitionBegin }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { contentBlock }
- { 4 }
+ { dlDefinitionBegin }
+ { 0 }
\ExplSyntaxOff
-\def\markdownRendererContentBlockOnlineImage{%
- \markdownRendererContentBlockOnlineImagePrototype}%
+\def\markdownRendererDlDefinitionEnd{%
+ \markdownRendererDlDefinitionEndPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { contentBlockOnlineImage }
+ { dlDefinitionEnd }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { contentBlockOnlineImage }
- { 4 }
+ { dlDefinitionEnd }
+ { 0 }
\ExplSyntaxOff
-\def\markdownRendererContentBlockCode{%
- \markdownRendererContentBlockCodePrototype}%
+\def\markdownRendererDlEnd{%
+ \markdownRendererDlEndPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { contentBlockCode }
+ { dlEnd }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { contentBlockCode }
- { 5 }
+ { dlEnd }
+ { 0 }
\ExplSyntaxOff
-\def\markdownRendererUlBegin{%
- \markdownRendererUlBeginPrototype}%
+\def\markdownRendererDlEndTight{%
+ \markdownRendererDlEndTightPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { ulBegin }
+ { dlEndTight }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { ulBegin }
+ { dlEndTight }
{ 0 }
\ExplSyntaxOff
-\def\markdownRendererUlBeginTight{%
- \markdownRendererUlBeginTightPrototype}%
+\def\markdownRendererEllipsis{%
+ \markdownRendererEllipsisPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { ulBeginTight }
+ { ellipsis }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { ulBeginTight }
+ { ellipsis }
{ 0 }
\ExplSyntaxOff
-\def\markdownRendererUlItem{%
- \markdownRendererUlItemPrototype}%
+\def\markdownRendererEmphasis{%
+ \markdownRendererEmphasisPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { ulItem }
+ { emphasis }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { ulItem }
- { 0 }
+ { emphasis }
+ { 1 }
\ExplSyntaxOff
-\def\markdownRendererUlItemEnd{%
- \markdownRendererUlItemEndPrototype}%
+\def\markdownRendererStrongEmphasis{%
+ \markdownRendererStrongEmphasisPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { ulItemEnd }
+ { strongEmphasis }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { ulItemEnd }
- { 0 }
+ { strongEmphasis }
+ { 1 }
\ExplSyntaxOff
-\def\markdownRendererUlEnd{%
- \markdownRendererUlEndPrototype}%
+\def\markdownRendererFencedDivAttributeContextBegin{%
+ \markdownRendererFencedDivAttributeContextBeginPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { ulEnd }
+ { fencedDivAttributeContextBegin }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { ulEnd }
+ { fencedDivAttributeContextBegin }
{ 0 }
\ExplSyntaxOff
-\def\markdownRendererUlEndTight{%
- \markdownRendererUlEndTightPrototype}%
+\def\markdownRendererFencedDivAttributeContextEnd{%
+ \markdownRendererFencedDivAttributeContextEndPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { ulEndTight }
+ { fencedDivAttributeContextEnd }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { ulEndTight }
+ { fencedDivAttributeContextEnd }
{ 0 }
\ExplSyntaxOff
-\def\markdownRendererOlBegin{%
- \markdownRendererOlBeginPrototype}%
+\def\markdownRendererHeaderAttributeContextBegin{%
+ \markdownRendererHeaderAttributeContextBeginPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { olBegin }
+ { headerAttributeContextBegin }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { olBegin }
+ { headerAttributeContextBegin }
{ 0 }
\ExplSyntaxOff
-\def\markdownRendererOlBeginTight{%
- \markdownRendererOlBeginTightPrototype}%
+\def\markdownRendererHeaderAttributeContextEnd{%
+ \markdownRendererHeaderAttributeContextEndPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { olBeginTight }
+ { headerAttributeContextEnd }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { olBeginTight }
+ { headerAttributeContextEnd }
{ 0 }
\ExplSyntaxOff
-\def\markdownRendererFancyOlBegin{%
- \markdownRendererFancyOlBeginPrototype}%
+\def\markdownRendererHeadingOne{%
+ \markdownRendererHeadingOnePrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { fancyOlBegin }
+ { headingOne }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { fancyOlBegin }
- { 2 }
+ { headingOne }
+ { 1 }
\ExplSyntaxOff
-\def\markdownRendererFancyOlBeginTight{%
- \markdownRendererFancyOlBeginTightPrototype}%
+\def\markdownRendererHeadingTwo{%
+ \markdownRendererHeadingTwoPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { fancyOlBeginTight }
+ { headingTwo }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { fancyOlBeginTight }
- { 2 }
+ { headingTwo }
+ { 1 }
\ExplSyntaxOff
-\def\markdownRendererOlItem{%
- \markdownRendererOlItemPrototype}%
+\def\markdownRendererHeadingThree{%
+ \markdownRendererHeadingThreePrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { olItem }
+ { headingThree }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { olItem }
- { 0 }
+ { headingThree }
+ { 1 }
\ExplSyntaxOff
-\def\markdownRendererOlItemEnd{%
- \markdownRendererOlItemEndPrototype}%
+\def\markdownRendererHeadingFour{%
+ \markdownRendererHeadingFourPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { olItemEnd }
+ { headingFour }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { olItemEnd }
- { 0 }
+ { headingFour }
+ { 1 }
\ExplSyntaxOff
-\def\markdownRendererOlItemWithNumber{%
- \markdownRendererOlItemWithNumberPrototype}%
+\def\markdownRendererHeadingFive{%
+ \markdownRendererHeadingFivePrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { olItemWithNumber }
+ { headingFive }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { olItemWithNumber }
+ { headingFive }
{ 1 }
\ExplSyntaxOff
-\def\markdownRendererFancyOlItem{%
- \markdownRendererFancyOlItemPrototype}%
+\def\markdownRendererHeadingSix{%
+ \markdownRendererHeadingSixPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { fancyOlItem }
+ { headingSix }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { fancyOlItem }
- { 0 }
+ { headingSix }
+ { 1 }
\ExplSyntaxOff
-\def\markdownRendererFancyOlItemEnd{%
- \markdownRendererFancyOlItemEndPrototype}%
+\def\markdownRendererInlineHtmlComment{%
+ \markdownRendererInlineHtmlCommentPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { fancyOlItemEnd }
+ { inlineHtmlComment }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { fancyOlItemEnd }
- { 0 }
+ { inlineHtmlComment }
+ { 1 }
\ExplSyntaxOff
-\def\markdownRendererFancyOlItemWithNumber{%
- \markdownRendererFancyOlItemWithNumberPrototype}%
+\def\markdownRendererBlockHtmlCommentBegin{%
+ \markdownRendererBlockHtmlCommentBeginPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { fancyOlItemWithNumber }
+ { blockHtmlCommentBegin }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { fancyOlItemWithNumber }
- { 1 }
+ { blockHtmlCommentBegin }
+ { 0 }
\ExplSyntaxOff
-\def\markdownRendererOlEnd{%
- \markdownRendererOlEndPrototype}%
+\def\markdownRendererBlockHtmlCommentEnd{%
+ \markdownRendererBlockHtmlCommentEndPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { olEnd }
+ { blockHtmlCommentEnd }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { olEnd }
+ { blockHtmlCommentEnd }
{ 0 }
\ExplSyntaxOff
-\def\markdownRendererOlEndTight{%
- \markdownRendererOlEndTightPrototype}%
+\def\markdownRendererInlineHtmlTag{%
+ \markdownRendererInlineHtmlTagPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { olEndTight }
+ { inlineHtmlTag }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { olEndTight }
- { 0 }
+ { inlineHtmlTag }
+ { 1 }
\ExplSyntaxOff
-\def\markdownRendererFancyOlEnd{%
- \markdownRendererFancyOlEndPrototype}%
+\def\markdownRendererInputBlockHtmlElement{%
+ \markdownRendererInputBlockHtmlElementPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { fancyOlEnd }
+ { inputBlockHtmlElement }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { fancyOlEnd }
- { 0 }
+ { inputBlockHtmlElement }
+ { 1 }
\ExplSyntaxOff
-\def\markdownRendererFancyOlEndTight{%
- \markdownRendererFancyOlEndTightPrototype}%
+\def\markdownRendererImage{%
+ \markdownRendererImagePrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { fancyOlEndTight }
+ { image }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { fancyOlEndTight }
- { 0 }
+ { image }
+ { 4 }
\ExplSyntaxOff
-\def\markdownRendererDlBegin{%
- \markdownRendererDlBeginPrototype}%
+\def\markdownRendererInterblockSeparator{%
+ \markdownRendererInterblockSeparatorPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { dlBegin }
+ { interblockSeparator }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { dlBegin }
+ { interblockSeparator }
{ 0 }
\ExplSyntaxOff
-\def\markdownRendererDlBeginTight{%
- \markdownRendererDlBeginTightPrototype}%
+\def\markdownRendererLineBreak{%
+ \markdownRendererLineBreakPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { dlBeginTight }
+ { lineBreak }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { dlBeginTight }
+ { lineBreak }
{ 0 }
\ExplSyntaxOff
-\def\markdownRendererDlItem{%
- \markdownRendererDlItemPrototype}%
+\def\markdownRendererLink{%
+ \markdownRendererLinkPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { dlItem }
+ { link }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { dlItem }
- { 1 }
+ { link }
+ { 4 }
\ExplSyntaxOff
-\def\markdownRendererDlItemEnd{%
- \markdownRendererDlItemEndPrototype}%
+\def\markdownRendererDocumentBegin{%
+ \markdownRendererDocumentBeginPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { dlItemEnd }
+ { documentBegin }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { dlItemEnd }
+ { documentBegin }
{ 0 }
\ExplSyntaxOff
-\def\markdownRendererDlDefinitionBegin{%
- \markdownRendererDlDefinitionBeginPrototype}%
+\def\markdownRendererDocumentEnd{%
+ \markdownRendererDocumentEndPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { dlDefinitionBegin }
+ { documentEnd }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { dlDefinitionBegin }
+ { documentEnd }
{ 0 }
\ExplSyntaxOff
-\def\markdownRendererDlDefinitionEnd{%
- \markdownRendererDlDefinitionEndPrototype}%
+\def\markdownRendererNbsp{%
+ \markdownRendererNbspPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { dlDefinitionEnd }
+ { nbsp }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { dlDefinitionEnd }
+ { nbsp }
{ 0 }
\ExplSyntaxOff
-\def\markdownRendererDlEnd{%
- \markdownRendererDlEndPrototype}%
\ExplSyntaxOn
+\cs_new:Npn
+ \markdownRendererNote
+ {
+ \cs_if_exist:NTF
+ \markdownRendererFootnote
+ {
+ \markdownWarning
+ {
+ Footnote~renderer~has~been~deprecated,~
+ to~be~removed~in~Markdown~3.0.0
+ }
+ \markdownRendererFootnote
+ }
+ {
+ \cs_if_exist:NTF
+ \markdownRendererFootnotePrototype
+ {
+ \markdownWarning
+ {
+ Footnote~renderer~prototype~has~been~deprecated,~
+ to~be~removed~in~Markdown~3.0.0
+ }
+ \markdownRendererFootnotePrototype
+ }
+ {
+ \markdownRendererNotePrototype
+ }
+ }
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { dlEnd }
+ { footnote }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { dlEnd }
+ { footnote }
+ { 1 }
+\seq_gput_right:Nn
+ \g__markdown_renderers_seq
+ { note }
+\prop_gput:Nnn
+ \g__markdown_renderer_arities_prop
+ { note }
+ { 1 }
+\ExplSyntaxOff
+\def\markdownRendererOlBegin{%
+ \markdownRendererOlBeginPrototype}%
+\ExplSyntaxOn
+\seq_gput_right:Nn
+ \g__markdown_renderers_seq
+ { olBegin }
+\prop_gput:Nnn
+ \g__markdown_renderer_arities_prop
+ { olBegin }
{ 0 }
\ExplSyntaxOff
-\def\markdownRendererDlEndTight{%
- \markdownRendererDlEndTightPrototype}%
+\def\markdownRendererOlBeginTight{%
+ \markdownRendererOlBeginTightPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { dlEndTight }
+ { olBeginTight }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { dlEndTight }
+ { olBeginTight }
{ 0 }
\ExplSyntaxOff
-\def\markdownRendererEmphasis{%
- \markdownRendererEmphasisPrototype}%
+\def\markdownRendererFancyOlBegin{%
+ \markdownRendererFancyOlBeginPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { emphasis }
+ { fancyOlBegin }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { emphasis }
- { 1 }
+ { fancyOlBegin }
+ { 2 }
\ExplSyntaxOff
-\def\markdownRendererStrongEmphasis{%
- \markdownRendererStrongEmphasisPrototype}%
+\def\markdownRendererFancyOlBeginTight{%
+ \markdownRendererFancyOlBeginTightPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { strongEmphasis }
+ { fancyOlBeginTight }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { strongEmphasis }
- { 1 }
+ { fancyOlBeginTight }
+ { 2 }
\ExplSyntaxOff
-\def\markdownRendererBlockQuoteBegin{%
- \markdownRendererBlockQuoteBeginPrototype}%
+\def\markdownRendererOlItem{%
+ \markdownRendererOlItemPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { blockQuoteBegin }
+ { olItem }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { blockQuoteBegin }
+ { olItem }
{ 0 }
\ExplSyntaxOff
-\def\markdownRendererBlockQuoteEnd{%
- \markdownRendererBlockQuoteEndPrototype}%
+\def\markdownRendererOlItemEnd{%
+ \markdownRendererOlItemEndPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { blockQuoteEnd }
+ { olItemEnd }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { blockQuoteEnd }
+ { olItemEnd }
{ 0 }
\ExplSyntaxOff
-\def\markdownRendererInputVerbatim{%
- \markdownRendererInputVerbatimPrototype}%
+\def\markdownRendererOlItemWithNumber{%
+ \markdownRendererOlItemWithNumberPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { inputVerbatim }
+ { olItemWithNumber }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { inputVerbatim }
+ { olItemWithNumber }
{ 1 }
\ExplSyntaxOff
-\def\markdownRendererInputFencedCode{%
- \markdownRendererInputFencedCodePrototype}%
+\def\markdownRendererFancyOlItem{%
+ \markdownRendererFancyOlItemPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { inputFencedCode }
+ { fancyOlItem }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { inputFencedCode }
- { 2 }
+ { fancyOlItem }
+ { 0 }
\ExplSyntaxOff
-\def\markdownRendererJekyllDataBegin{%
- \markdownRendererJekyllDataBeginPrototype}%
+\def\markdownRendererFancyOlItemEnd{%
+ \markdownRendererFancyOlItemEndPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { jekyllDataBegin }
+ { fancyOlItemEnd }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { jekyllDataBegin }
+ { fancyOlItemEnd }
{ 0 }
\ExplSyntaxOff
-\def\markdownRendererJekyllDataEnd{%
- \markdownRendererJekyllDataEndPrototype}%
+\def\markdownRendererFancyOlItemWithNumber{%
+ \markdownRendererFancyOlItemWithNumberPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { jekyllDataEnd }
+ { fancyOlItemWithNumber }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { jekyllDataEnd }
- { 0 }
+ { fancyOlItemWithNumber }
+ { 1 }
\ExplSyntaxOff
-\def\markdownRendererJekyllDataMappingBegin{%
- \markdownRendererJekyllDataMappingBeginPrototype}%
+\def\markdownRendererOlEnd{%
+ \markdownRendererOlEndPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { jekyllDataMappingBegin }
+ { olEnd }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { jekyllDataMappingBegin }
- { 2 }
+ { olEnd }
+ { 0 }
\ExplSyntaxOff
-\def\markdownRendererJekyllDataMappingEnd{%
- \markdownRendererJekyllDataMappingEndPrototype}%
+\def\markdownRendererOlEndTight{%
+ \markdownRendererOlEndTightPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { jekyllDataMappingEnd }
+ { olEndTight }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { jekyllDataMappingEnd }
+ { olEndTight }
{ 0 }
\ExplSyntaxOff
-\def\markdownRendererJekyllDataSequenceBegin{%
- \markdownRendererJekyllDataSequenceBeginPrototype}%
+\def\markdownRendererFancyOlEnd{%
+ \markdownRendererFancyOlEndPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { jekyllDataSequenceBegin }
+ { fancyOlEnd }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { jekyllDataSequenceBegin }
- { 2 }
+ { fancyOlEnd }
+ { 0 }
\ExplSyntaxOff
-\def\markdownRendererJekyllDataSequenceEnd{%
- \markdownRendererJekyllDataSequenceEndPrototype}%
+\def\markdownRendererFancyOlEndTight{%
+ \markdownRendererFancyOlEndTightPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { jekyllDataSequenceEnd }
+ { fancyOlEndTight }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { jekyllDataSequenceEnd }
+ { fancyOlEndTight }
{ 0 }
\ExplSyntaxOff
-\def\markdownRendererJekyllDataBoolean{%
- \markdownRendererJekyllDataBooleanPrototype}%
+\def\markdownRendererCite{%
+ \markdownRendererCitePrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { jekyllDataBoolean }
+ { cite }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { jekyllDataBoolean }
- { 2 }
+ { cite }
+ { 1 }
\ExplSyntaxOff
-\def\markdownRendererJekyllDataNumber{%
- \markdownRendererJekyllDataNumberPrototype}%
+\def\markdownRendererInputRawInline{%
+ \markdownRendererInputRawInlinePrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { jekyllDataNumber }
+ { inputRawInline }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { jekyllDataNumber }
+ { inputRawInline }
{ 2 }
\ExplSyntaxOff
-\def\markdownRendererJekyllDataString{%
- \markdownRendererJekyllDataStringPrototype}%
+\def\markdownRendererInputRawBlock{%
+ \markdownRendererInputRawBlockPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { jekyllDataString }
+ { inputRawBlock }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { jekyllDataString }
+ { inputRawBlock }
{ 2 }
\ExplSyntaxOff
-\def\markdownRendererJekyllDataEmpty{%
- \markdownRendererJekyllDataEmptyPrototype}%
+\def\markdownRendererLeftBrace{%
+ \markdownRendererLeftBracePrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { jekyllDataEmpty }
+ { leftBrace }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { jekyllDataEmpty }
- { 1 }
+ { leftBrace }
+ { 0 }
\ExplSyntaxOff
-\def\markdownRendererHeadingOne{%
- \markdownRendererHeadingOnePrototype}%
+\def\markdownRendererRightBrace{%
+ \markdownRendererRightBracePrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { headingOne }
+ { rightBrace }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { headingOne }
- { 1 }
+ { rightBrace }
+ { 0 }
\ExplSyntaxOff
-\def\markdownRendererHeadingTwo{%
- \markdownRendererHeadingTwoPrototype}%
+\def\markdownRendererDollarSign{%
+ \markdownRendererDollarSignPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { headingTwo }
+ { dollarSign }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { headingTwo }
- { 1 }
+ { dollarSign }
+ { 0 }
\ExplSyntaxOff
-\def\markdownRendererHeadingThree{%
- \markdownRendererHeadingThreePrototype}%
+\def\markdownRendererPercentSign{%
+ \markdownRendererPercentSignPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { headingThree }
+ { percentSign }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { headingThree }
- { 1 }
+ { percentSign }
+ { 0 }
\ExplSyntaxOff
-\def\markdownRendererHeadingFour{%
- \markdownRendererHeadingFourPrototype}%
+\def\markdownRendererAmpersand{%
+ \markdownRendererAmpersandPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { headingFour }
+ { ampersand }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { headingFour }
- { 1 }
+ { ampersand }
+ { 0 }
\ExplSyntaxOff
-\def\markdownRendererHeadingFive{%
- \markdownRendererHeadingFivePrototype}%
+\def\markdownRendererUnderscore{%
+ \markdownRendererUnderscorePrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { headingFive }
+ { underscore }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { headingFive }
- { 1 }
+ { underscore }
+ { 0 }
\ExplSyntaxOff
-\def\markdownRendererHeadingSix{%
- \markdownRendererHeadingSixPrototype}%
+\def\markdownRendererHash{%
+ \markdownRendererHashPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { headingSix }
+ { hash }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { headingSix }
- { 1 }
+ { hash }
+ { 0 }
\ExplSyntaxOff
+\def\markdownRendererCircumflex{%
+ \markdownRendererCircumflexPrototype}%
\ExplSyntaxOn
-\cs_new:Npn
- \markdownRendererThematicBreak
- {
- \cs_if_exist:NTF
- \markdownRendererHorizontalRule
- {
- \markdownWarning
- {
- Horizontal~rule~renderer~has~been~deprecated,~
- to~be~removed~in~Markdown~3.0.0
- }
- \markdownRendererHorizontalRule
- }
- {
- \cs_if_exist:NTF
- \markdownRendererHorizontalRulePrototype
- {
- \markdownWarning
- {
- Horizontal~rule~renderer~prototype~has~been~deprecated,~
- to~be~removed~in~Markdown~3.0.0
- }
- \markdownRendererHorizontalRulePrototype
- }
- {
- \markdownRendererThematicBreakPrototype
- }
- }
- }
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { horizontalRule }
+ { circumflex }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { horizontalRule }
+ { circumflex }
{ 0 }
+\ExplSyntaxOff
+\def\markdownRendererBackslash{%
+ \markdownRendererBackslashPrototype}%
+\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { thematicBreak }
+ { backslash }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { thematicBreak }
+ { backslash }
{ 0 }
\ExplSyntaxOff
+\def\markdownRendererTilde{%
+ \markdownRendererTildePrototype}%
\ExplSyntaxOn
-\cs_new:Npn
- \markdownRendererNote
- {
- \cs_if_exist:NTF
- \markdownRendererFootnote
- {
- \markdownWarning
- {
- Footnote~renderer~has~been~deprecated,~
- to~be~removed~in~Markdown~3.0.0
- }
- \markdownRendererFootnote
- }
- {
- \cs_if_exist:NTF
- \markdownRendererFootnotePrototype
- {
- \markdownWarning
- {
- Footnote~renderer~prototype~has~been~deprecated,~
- to~be~removed~in~Markdown~3.0.0
- }
- \markdownRendererFootnotePrototype
- }
- {
- \markdownRendererNotePrototype
- }
- }
- }
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { footnote }
+ { tilde }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { footnote }
- { 1 }
+ { tilde }
+ { 0 }
+\ExplSyntaxOff
+\def\markdownRendererPipe{%
+ \markdownRendererPipePrototype}%
+\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { note }
+ { pipe }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { note }
- { 1 }
+ { pipe }
+ { 0 }
\ExplSyntaxOff
-\def\markdownRendererCite{%
- \markdownRendererCitePrototype}%
+\def\markdownRendererStrikeThrough{%
+ \markdownRendererStrikeThroughPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { cite }
+ { strikeThrough }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { cite }
+ { strikeThrough }
{ 1 }
\ExplSyntaxOff
-\def\markdownRendererTextCite{%
- \markdownRendererTextCitePrototype}%
+\def\markdownRendererSubscript{%
+ \markdownRendererSubscriptPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { textCite }
+ { subscript }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { textCite }
+ { subscript }
+ { 1 }
+\def\markdownRendererSuperscript{%
+ \markdownRendererSuperscriptPrototype}%
+\ExplSyntaxOn
+\seq_gput_right:Nn
+ \g__markdown_renderers_seq
+ { superscript }
+\prop_gput:Nnn
+ \g__markdown_renderer_arities_prop
+ { superscript }
{ 1 }
\ExplSyntaxOff
\def\markdownRendererTable{%
@@ -1625,169 +1646,204 @@
{ table }
{ 3 }
\ExplSyntaxOff
-\def\markdownRendererInlineHtmlComment{%
- \markdownRendererInlineHtmlCommentPrototype}%
+\def\markdownRendererTextCite{%
+ \markdownRendererTextCitePrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { inlineHtmlComment }
+ { textCite }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { inlineHtmlComment }
+ { textCite }
{ 1 }
\ExplSyntaxOff
-\def\markdownRendererBlockHtmlCommentBegin{%
- \markdownRendererBlockHtmlCommentBeginPrototype}%
\ExplSyntaxOn
+\cs_new:Npn
+ \markdownRendererThematicBreak
+ {
+ \cs_if_exist:NTF
+ \markdownRendererHorizontalRule
+ {
+ \markdownWarning
+ {
+ Horizontal~rule~renderer~has~been~deprecated,~
+ to~be~removed~in~Markdown~3.0.0
+ }
+ \markdownRendererHorizontalRule
+ }
+ {
+ \cs_if_exist:NTF
+ \markdownRendererHorizontalRulePrototype
+ {
+ \markdownWarning
+ {
+ Horizontal~rule~renderer~prototype~has~been~deprecated,~
+ to~be~removed~in~Markdown~3.0.0
+ }
+ \markdownRendererHorizontalRulePrototype
+ }
+ {
+ \markdownRendererThematicBreakPrototype
+ }
+ }
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { blockHtmlCommentBegin }
+ { horizontalRule }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { blockHtmlCommentBegin }
+ { horizontalRule }
+ { 0 }
+\seq_gput_right:Nn
+ \g__markdown_renderers_seq
+ { thematicBreak }
+\prop_gput:Nnn
+ \g__markdown_renderer_arities_prop
+ { thematicBreak }
{ 0 }
\ExplSyntaxOff
-\def\markdownRendererBlockHtmlCommentEnd{%
- \markdownRendererBlockHtmlCommentEndPrototype}%
+\def\markdownRendererTickedBox{%
+ \markdownRendererTickedBoxPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { blockHtmlCommentEnd }
+ { tickedBox }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { blockHtmlCommentEnd }
+ { tickedBox }
{ 0 }
\ExplSyntaxOff
-\def\markdownRendererInlineHtmlTag{%
- \markdownRendererInlineHtmlTagPrototype}%
+\def\markdownRendererHalfTickedBox{%
+ \markdownRendererHalfTickedBoxPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { inlineHtmlTag }
+ { halfTickedBox }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { inlineHtmlTag }
- { 1 }
+ { halfTickedBox }
+ { 0 }
\ExplSyntaxOff
-\def\markdownRendererInputBlockHtmlElement{%
- \markdownRendererInputBlockHtmlElementPrototype}%
+\def\markdownRendererUntickedBox{%
+ \markdownRendererUntickedBoxPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { inputBlockHtmlElement }
+ { untickedBox }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { inputBlockHtmlElement }
- { 1 }
+ { untickedBox }
+ { 0 }
\ExplSyntaxOff
-\def\markdownRendererAttributeIdentifier{%
- \markdownRendererAttributeIdentifierPrototype}%
+\def\markdownRendererJekyllDataBegin{%
+ \markdownRendererJekyllDataBeginPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { attributeIdentifier }
+ { jekyllDataBegin }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { attributeIdentifier }
- { 1 }
+ { jekyllDataBegin }
+ { 0 }
\ExplSyntaxOff
-\def\markdownRendererAttributeClassName{%
- \markdownRendererAttributeClassNamePrototype}%
+\def\markdownRendererJekyllDataEnd{%
+ \markdownRendererJekyllDataEndPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { attributeClassName }
+ { jekyllDataEnd }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { attributeClassName }
- { 1 }
+ { jekyllDataEnd }
+ { 0 }
\ExplSyntaxOff
-\def\markdownRendererAttributeKeyValue{%
- \markdownRendererAttributeKeyValuePrototype}%
+\def\markdownRendererJekyllDataMappingBegin{%
+ \markdownRendererJekyllDataMappingBeginPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { attributeKeyValue }
+ { jekyllDataMappingBegin }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { attributeKeyValue }
+ { jekyllDataMappingBegin }
{ 2 }
\ExplSyntaxOff
-\def\markdownRendererHeaderAttributeContextBegin{%
- \markdownRendererHeaderAttributeContextBeginPrototype}%
+\def\markdownRendererJekyllDataMappingEnd{%
+ \markdownRendererJekyllDataMappingEndPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { headerAttributeContextBegin }
+ { jekyllDataMappingEnd }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { headerAttributeContextBegin }
+ { jekyllDataMappingEnd }
{ 0 }
\ExplSyntaxOff
-\def\markdownRendererHeaderAttributeContextEnd{%
- \markdownRendererHeaderAttributeContextEndPrototype}%
+\def\markdownRendererJekyllDataSequenceBegin{%
+ \markdownRendererJekyllDataSequenceBeginPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { headerAttributeContextEnd }
+ { jekyllDataSequenceBegin }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { headerAttributeContextEnd }
- { 0 }
+ { jekyllDataSequenceBegin }
+ { 2 }
\ExplSyntaxOff
-\def\markdownRendererStrikeThrough{%
- \markdownRendererStrikeThroughPrototype}%
+\def\markdownRendererJekyllDataSequenceEnd{%
+ \markdownRendererJekyllDataSequenceEndPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { strikeThrough }
+ { jekyllDataSequenceEnd }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { strikeThrough }
- { 1 }
+ { jekyllDataSequenceEnd }
+ { 0 }
\ExplSyntaxOff
-\def\markdownRendererSuperscript{%
- \markdownRendererSuperscriptPrototype}%
+\def\markdownRendererJekyllDataBoolean{%
+ \markdownRendererJekyllDataBooleanPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { superscript }
+ { jekyllDataBoolean }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { superscript }
- { 1 }
+ { jekyllDataBoolean }
+ { 2 }
\ExplSyntaxOff
-\def\markdownRendererSubscript{%
- \markdownRendererSubscriptPrototype}%
+\def\markdownRendererJekyllDataNumber{%
+ \markdownRendererJekyllDataNumberPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { subscript }
+ { jekyllDataNumber }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { subscript }
- { 1 }
-\def\markdownRendererInputRawInline{%
- \markdownRendererInputRawInlinePrototype}%
+ { jekyllDataNumber }
+ { 2 }
+\ExplSyntaxOff
+\def\markdownRendererJekyllDataString{%
+ \markdownRendererJekyllDataStringPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { inputRawInline }
+ { jekyllDataString }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { inputRawInline }
+ { jekyllDataString }
{ 2 }
\ExplSyntaxOff
-\def\markdownRendererInputRawBlock{%
- \markdownRendererInputRawBlockPrototype}%
+\def\markdownRendererJekyllDataEmpty{%
+ \markdownRendererJekyllDataEmptyPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { inputRawBlock }
+ { jekyllDataEmpty }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { inputRawBlock }
- { 2 }
+ { jekyllDataEmpty }
+ { 1 }
\ExplSyntaxOff
\ExplSyntaxOn
\keys_define:nn
@@ -1883,6 +1939,7 @@
}
}
}
+\ExplSyntaxOff
\def\markdownLuaRegisterIBCallback#1{\relax}%
\def\markdownLuaUnregisterIBCallback#1{\relax}%
\ifx\markdownInfo\undefined
diff --git a/Master/texmf-dist/tex/luatex/markdown/markdown.lua b/Master/texmf-dist/tex/luatex/markdown/markdown.lua
index 3afe0a924d4..8a5a6ce9f56 100644
--- a/Master/texmf-dist/tex/luatex/markdown/markdown.lua
+++ b/Master/texmf-dist/tex/luatex/markdown/markdown.lua
@@ -58,7 +58,7 @@
-- those in the standard .ins files.
--
local metadata = {
- version = "2.18.0-0-gd8ae860",
+ version = "2.19.0-0-g80fcf20",
comment = "A module for the conversion from markdown to plain TeX",
author = "John MacFarlane, Hans Hagen, Vít Novotný",
copyright = {"2009-2016 John MacFarlane, Hans Hagen",
@@ -118,7 +118,9 @@ defaultOptions.debugExtensionsFileName = "debug-extensions.json"
defaultOptions.frozenCacheFileName = "frozenCache.tex"
defaultOptions.blankBeforeBlockquote = false
defaultOptions.blankBeforeCodeFence = false
+defaultOptions.blankBeforeDivFence = false
defaultOptions.blankBeforeHeading = false
+defaultOptions.bracketedSpans = false
defaultOptions.breakableBlockquotes = false
defaultOptions.citationNbsps = true
defaultOptions.citations = false
@@ -127,15 +129,14 @@ defaultOptions.contentBlocks = false
defaultOptions.debugExtensions = false
defaultOptions.definitionLists = false
defaultOptions.eagerCache = true
+defaultOptions.expectJekyllData = false
metadata.user_extension_api_version = 2
metadata.grammar_version = 2
defaultOptions.extensions = {}
-defaultOptions.expectJekyllData = false
defaultOptions.fancyLists = false
defaultOptions.fencedCode = false
+defaultOptions.fencedDivs = false
defaultOptions.finalizeCache = false
-defaultOptions.footnotes = false
-defaultOptions.notes = false
defaultOptions.frozenCacheCounter = 0
defaultOptions.hardLineBreaks = false
defaultOptions.hashEnumerators = false
@@ -145,6 +146,8 @@ defaultOptions.hybrid = false
defaultOptions.inlineFootnotes = false
defaultOptions.inlineNotes = false
defaultOptions.jekyllData = false
+defaultOptions.footnotes = false
+defaultOptions.notes = false
defaultOptions.pipeTables = false
defaultOptions.preserveTabs = false
defaultOptions.rawAttribute = true
@@ -2423,7 +2426,6 @@ function M.writer.new(options)
self.escaped_uri_chars = {
["{"] = "\\markdownRendererLeftBrace{}",
["}"] = "\\markdownRendererRightBrace{}",
- ["%"] = "\\markdownRendererPercentSign{}",
["\\"] = "\\markdownRendererBackslash{}",
}
self.escaped_minimal_strings = {
@@ -2577,6 +2579,27 @@ function M.writer.new(options)
return buf
end
+ function self.attributes(attr)
+ local buf = {}
+
+ table.sort(attr)
+ local key, value
+ for i = 1, #attr do
+ if attr[i]:sub(1, 1) == "#" then
+ table.insert(buf, {"\\markdownRendererAttributeIdentifier{",
+ attr[i]:sub(2), "}"})
+ elseif attr[i]:sub(1, 1) == "." then
+ table.insert(buf, {"\\markdownRendererAttributeClassName{",
+ attr[i]:sub(2), "}"})
+ else
+ key, value = attr[i]:match("([^= ]+)%s*=%s*(.*)")
+ table.insert(buf, {"\\markdownRendererAttributeKeyValue{",
+ key, "}{", value, "}"})
+ end
+ end
+
+ return buf
+ end
self.active_attributes = {}
function self.heading(s, level, attributes)
attributes = attributes or {}
@@ -2655,21 +2678,7 @@ function M.writer.new(options)
end
if self.is_writing then
- table.sort(attributes)
- local key, value
- for i = 1, #attributes do
- if attributes[i]:sub(1, 1) == "#" then
- table.insert(buf, {"\\markdownRendererAttributeIdentifier{",
- attributes[i]:sub(2), "}"})
- elseif attributes[i]:sub(1, 1) == "." then
- table.insert(buf, {"\\markdownRendererAttributeClassName{",
- attributes[i]:sub(2), "}"})
- else
- key, value = attributes[i]:match("([^= ]+)%s*=%s*(.*)")
- table.insert(buf, {"\\markdownRendererAttributeKeyValue{",
- key, "}{", value, "}"})
- end
- end
+ table.insert(buf, self.attributes(attributes))
end
local cmd
@@ -2770,7 +2779,8 @@ parsers.doubletildes = P("~~")
parsers.fourspaces = P(" ")
parsers.any = P(1)
-parsers.fail = parsers.any - 1
+parsers.succeed = P(true)
+parsers.fail = P(false)
parsers.escapable = S("!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~")
parsers.anyescaped = parsers.backslash / "" * parsers.escapable
@@ -2922,14 +2932,31 @@ local function captures_geq_length(_,i,a,b)
return #a >= #b and i
end
-parsers.infostring = (parsers.linechar - (parsers.backtick
- + parsers.space^1 * (parsers.newline + parsers.eof)))^0
+parsers.tilde_infostring
+ = C((parsers.linechar
+ - (parsers.spacechar^1 * parsers.newline))^0)
+ * parsers.optionalspace
+ * (parsers.newline + parsers.eof)
+
+parsers.backtick_infostring
+ = C((parsers.linechar
+ - (parsers.backtick
+ + parsers.spacechar^1 * parsers.newline))^0)
+ * parsers.optionalspace
+ * (parsers.newline + parsers.eof)
local fenceindent
-parsers.fencehead = function(char)
+parsers.fencehead = function(char, infostring)
+ return C(parsers.nonindentspace) / function(s) fenceindent = #s end
+ * Cg(char^3, "fencelength")
+ * parsers.optionalspace * infostring
+end
+
+parsers.fencehead_with_attributes
+ = function(char)
return C(parsers.nonindentspace) / function(s) fenceindent = #s end
* Cg(char^3, "fencelength")
- * parsers.optionalspace * C(parsers.infostring)
+ * parsers.optionalspace * Ct(parsers.attributes)
* parsers.optionalspace * (parsers.newline + parsers.eof)
end
@@ -3145,12 +3172,14 @@ end
parsers.urlchar = parsers.anyescaped - parsers.newline - parsers.more
parsers.TildeFencedCode
- = parsers.fencehead(parsers.tilde)
+ = parsers.fencehead(parsers.tilde,
+ parsers.tilde_infostring)
* Cs(parsers.fencedline(parsers.tilde)^0)
* parsers.fencetail(parsers.tilde)
parsers.BacktickFencedCode
- = parsers.fencehead(parsers.backtick)
+ = parsers.fencehead(parsers.backtick,
+ parsers.backtick_infostring)
* Cs(parsers.fencedline(parsers.backtick)^0)
* parsers.fencetail(parsers.backtick)
@@ -3698,12 +3727,12 @@ function M.reader.new(writer, options)
local syntax =
{ "Blocks",
- Blocks = ( V("ExpectedJekyllData")
- * (V("Blank")^0 / writer.interblocksep)
- )^-1
+ Blocks = V("InitializeState")
+ * ( V("ExpectedJekyllData")
+ * (V("Blank")^0 / writer.interblocksep))^-1
* V("Blank")^0
* V("Block")^-1
- * (V("Blank")^0 / writer.interblocksep
+ * ( V("Blank")^0 / writer.interblocksep
* V("Block"))^0
* V("Blank")^0 * parsers.eof,
@@ -3742,12 +3771,24 @@ function M.reader.new(writer, options)
Smart = parsers.Smart,
Symbol = parsers.Symbol,
SpecialChar = parsers.fail,
+ InitializeState = parsers.succeed,
}
- self.update_rule = function(rule_name, pattern)
+ self.update_rule = function(rule_name, get_pattern)
assert(current_extension_name ~= nil)
assert(syntax[rule_name] ~= nil,
[[Rule ]] .. rule_name .. [[ -> ... does not exist in markdown grammar]])
- local accountable_pattern = { pattern, current_extension_name, rule_name }
+ local previous_pattern
+ local extension_name
+ if walkable_syntax[rule_name] then
+ local previous_accountable_pattern = walkable_syntax[rule_name][1]
+ previous_pattern = previous_accountable_pattern[1]
+ extension_name = previous_accountable_pattern[2] .. ", " .. current_extension_name
+ else
+ previous_pattern = nil
+ extension_name = current_extension_name
+ end
+ local pattern = get_pattern(previous_pattern)
+ local accountable_pattern = { pattern, extension_name, rule_name }
walkable_syntax[rule_name] = { accountable_pattern }
end
local special_characters = {}
@@ -3763,6 +3804,10 @@ function M.reader.new(writer, options)
self.add_special_character("<")
self.add_special_character("!")
self.add_special_character("\\")
+ self.initialize_named_group = function(name, value)
+ syntax.InitializeState = syntax.InitializeState
+ * Cg(Ct("") / value, name)
+ end
for _, extension in ipairs(extensions) do
current_extension_name = extension.name
extension.extend_writer(writer)
@@ -3875,7 +3920,10 @@ function M.reader.new(writer, options)
local inlines_t = util.table_copy(syntax)
inlines_t[1] = "Inlines"
- inlines_t.Inlines = parsers.Inline^0 * (parsers.spacing^0 * parsers.eof / "")
+ inlines_t.Inlines = V("InitializeState")
+ * parsers.Inline^0
+ * ( parsers.spacing^0
+ * parsers.eof / "")
parsers.inlines = Ct(inlines_t)
local inlines_no_link_t = util.table_copy(inlines_t)
@@ -3944,6 +3992,31 @@ function M.reader.new(writer, options)
return self
end
M.extensions = {}
+M.extensions.bracketed_spans = function()
+ return {
+ name = "built-in bracketed_spans syntax extension",
+ extend_writer = function(self)
+ function self.span(s, attr)
+ return {"\\markdownRendererBracketedSpanAttributeContextBegin",
+ self.attributes(attr),
+ s,
+ "\\markdownRendererBracketedSpanAttributeContextEnd{}"}
+ end
+ end, extend_reader = function(self)
+ local parsers = self.parsers
+ local writer = self.writer
+
+ local Span = parsers.between(parsers.Inline,
+ parsers.lbracket,
+ parsers.rbracket)
+ * Ct(parsers.attributes)
+ / writer.span
+
+ self.insert_pattern("Inline after Emph",
+ Span, "Span")
+ end
+ }
+end
M.extensions.citations = function(citation_nbsps)
local escaped_citation_chars = {
["{"] = "\\markdownRendererLeftBrace{}",
@@ -4296,6 +4369,163 @@ M.extensions.definition_lists = function(tight_lists)
end
}
end
+M.extensions.fancy_lists = function()
+ return {
+ name = "built-in fancy_lists syntax extension",
+ extend_writer = function(self)
+ local options = self.options
+
+ function self.fancylist(items,tight,startnum,numstyle,numdelim)
+ if not self.is_writing then return "" end
+ local buffer = {}
+ local num = startnum
+ for _,item in ipairs(items) do
+ buffer[#buffer + 1] = self.fancyitem(item,num)
+ if num ~= nil then
+ num = num + 1
+ end
+ end
+ local contents = util.intersperse(buffer,"\n")
+ if tight and options.tightLists then
+ return {"\\markdownRendererFancyOlBeginTight{",
+ numstyle,"}{",numdelim,"}",contents,
+ "\n\\markdownRendererFancyOlEndTight "}
+ else
+ return {"\\markdownRendererFancyOlBegin{",
+ numstyle,"}{",numdelim,"}",contents,
+ "\n\\markdownRendererFancyOlEnd "}
+ end
+ end
+ function self.fancyitem(s,num)
+ if num ~= nil then
+ return {"\\markdownRendererFancyOlItemWithNumber{",num,"}",s,
+ "\\markdownRendererFancyOlItemEnd "}
+ else
+ return {"\\markdownRendererFancyOlItem ",s,"\\markdownRendererFancyOlItemEnd "}
+ end
+ end
+ end, extend_reader = function(self)
+ local parsers = self.parsers
+ local options = self.options
+ local writer = self.writer
+
+ local label = parsers.dig + parsers.letter
+ local numdelim = parsers.period + parsers.rparent
+ local enumerator = C(label^3 * numdelim) * #parsers.spacing
+ + C(label^2 * numdelim) * #parsers.spacing
+ * (parsers.tab + parsers.space^1)
+ + C(label * numdelim) * #parsers.spacing
+ * (parsers.tab + parsers.space^-2)
+ + parsers.space * C(label^2 * numdelim)
+ * #parsers.spacing
+ + parsers.space * C(label * numdelim)
+ * #parsers.spacing
+ * (parsers.tab + parsers.space^-1)
+ + parsers.space * parsers.space * C(label^1
+ * numdelim) * #parsers.spacing
+ local starter = parsers.bullet + enumerator
+
+ local NestedList = Cs((parsers.optionallyindentedline
+ - starter)^1)
+ / function(a) return "\001"..a end
+
+ local ListBlockLine = parsers.optionallyindentedline
+ - parsers.blankline - (parsers.indent^-1
+ * starter)
+
+ local ListBlock = parsers.line * ListBlockLine^0
+
+ local ListContinuationBlock = parsers.blanklines * (parsers.indent / "")
+ * ListBlock
+
+ local TightListItem = function(starter)
+ return -parsers.ThematicBreak
+ * (Cs(starter / "" * parsers.tickbox^-1 * ListBlock * NestedList^-1)
+ / self.parser_functions.parse_blocks_nested)
+ * -(parsers.blanklines * parsers.indent)
+ end
+
+ local LooseListItem = function(starter)
+ return -parsers.ThematicBreak
+ * Cs( starter / "" * parsers.tickbox^-1 * ListBlock * Cc("\n")
+ * (NestedList + ListContinuationBlock^0)
+ * (parsers.blanklines / "\n\n")
+ ) / self.parser_functions.parse_blocks_nested
+ end
+
+ local function roman2number(roman)
+ local romans = { ["L"] = 50, ["X"] = 10, ["V"] = 5, ["I"] = 1 }
+ local numeral = 0
+
+ local i = 1
+ local len = string.len(roman)
+ while i < len do
+ local z1, z2 = romans[ string.sub(roman, i, i) ], romans[ string.sub(roman, i+1, i+1) ]
+ if z1 < z2 then
+ numeral = numeral + (z2 - z1)
+ i = i + 2
+ else
+ numeral = numeral + z1
+ i = i + 1
+ end
+ end
+ if i <= len then numeral = numeral + romans[ string.sub(roman,i,i) ] end
+ return numeral
+ end
+
+ local function sniffstyle(itemprefix)
+ local numstr, delimend = itemprefix:match("^([A-Za-z0-9]*)([.)]*)")
+ local numdelim
+ if delimend == ")" then
+ numdelim = "OneParen"
+ elseif delimend == "." then
+ numdelim = "Period"
+ else
+ numdelim = "Default"
+ end
+ numstr = numstr or itemprefix
+
+ local num
+ num = numstr:match("^([IVXL]+)")
+ if num then
+ return roman2number(num), "UpperRoman", numdelim
+ end
+ num = numstr:match("^([ivxl]+)")
+ if num then
+ return roman2number(string.upper(num)), "LowerRoman", numdelim
+ end
+ num = numstr:match("^([A-Z])")
+ if num then
+ return string.byte(num) - string.byte("A") + 1, "UpperAlpha", numdelim
+ end
+ num = numstr:match("^([a-z])")
+ if num then
+ return string.byte(num) - string.byte("a") + 1, "LowerAlpha", numdelim
+ end
+ return math.floor(tonumber(numstr) or 1), "Decimal", numdelim
+ end
+
+ local function fancylist(items,tight,start)
+ local startnum, numstyle, numdelim = sniffstyle(start)
+ return writer.fancylist(items,tight,
+ options.startNumber and startnum,
+ numstyle or "Decimal",
+ numdelim or "Default")
+ end
+
+ local FancyList = Cg(enumerator, "listtype") *
+ ( Ct(TightListItem(Cb("listtype"))
+ * TightListItem(enumerator)^0)
+ * Cc(true) * parsers.skipblanklines * -enumerator
+ + Ct(LooseListItem(Cb("listtype"))
+ * LooseListItem(enumerator)^0)
+ * Cc(false) * parsers.skipblanklines
+ ) * Cb("listtype") / fancylist
+
+ self.update_rule("OrderedList", function() return FancyList end)
+ end
+ }
+end
M.extensions.fenced_code = function(blank_before_code_fence)
return {
name = "built-in fenced_code syntax extension",
@@ -4313,12 +4543,12 @@ M.extensions.fenced_code = function(blank_before_code_fence)
local writer = self.writer
local FencedCode = (parsers.TildeFencedCode
- + parsers.BacktickFencedCode)
- / function(infostring, code)
- local expanded_code = self.expandtabs(code)
- return writer.fencedCode(expanded_code,
- infostring)
- end
+ + parsers.BacktickFencedCode)
+ / function(infostring, code)
+ local expanded_code = self.expandtabs(code)
+ return writer.fencedCode(expanded_code,
+ infostring)
+ end
self.insert_pattern("Block after Verbatim",
FencedCode, "FencedCode")
@@ -4327,83 +4557,105 @@ M.extensions.fenced_code = function(blank_before_code_fence)
if blank_before_code_fence then
fencestart = parsers.fail
else
- fencestart = parsers.fencehead(parsers.backtick)
- + parsers.fencehead(parsers.tilde)
+ fencestart = parsers.fencehead(parsers.backtick,
+ parsers.backtick_infostring)
+ + parsers.fencehead(parsers.tilde,
+ parsers.tilde_infostring)
end
- local EndlineExceptions = parsers.EndlineExceptions + fencestart
- self.update_rule("EndlineExceptions", EndlineExceptions)
+ self.update_rule("EndlineExceptions", function(previous_pattern)
+ if previous_pattern == nil then
+ previous_pattern = parsers.EndlineExceptions
+ end
+ return previous_pattern + fencestart
+ end)
self.add_special_character("~")
end
}
end
-M.extensions.notes = function(notes, inline_notes)
- assert(notes or inline_notes)
+M.extensions.fenced_divs = function(blank_before_div_fence)
return {
- name = "built-in notes syntax extension",
+ name = "built-in fenced_divs syntax extension",
extend_writer = function(self)
- function self.note(s)
- return {"\\markdownRendererNote{",s,"}"}
+ function self.div(c, attr)
+ return {"\\markdownRendererFencedDivAttributeContextBegin",
+ self.attributes(attr),
+ c,
+ "\\markdownRendererFencedDivAttributeContextEnd"}
end
end, extend_reader = function(self)
local parsers = self.parsers
local writer = self.writer
-
- if inline_notes then
- local InlineNote
- = parsers.circumflex
- * (parsers.tag / self.parser_functions.parse_inlines_no_inline_note)
- / writer.note
-
- self.insert_pattern("Inline after Emph",
- InlineNote, "InlineNote")
- end
- if notes then
- local function strip_first_char(s)
- return s:sub(2)
+ local fenced_div_infostring
+ = C((parsers.linechar
+ - ( parsers.spacechar^1
+ * parsers.colon^1))^1)
+
+ local fenced_div_begin = parsers.nonindentspace
+ * parsers.colon^3
+ * parsers.optionalspace
+ * fenced_div_infostring
+ * ( parsers.spacechar^1
+ * parsers.colon^1)^0
+ * parsers.optionalspace
+ * (parsers.newline + parsers.eof)
+
+ local fenced_div_end = parsers.nonindentspace
+ * parsers.colon^3
+ * parsers.optionalspace
+ * (parsers.newline + parsers.eof)
+ self.initialize_named_group("div_level", "0")
+
+ local function increment_div_level(increment)
+ local function update_div_level(s, i, current_level) -- luacheck: ignore s i
+ current_level = tonumber(current_level)
+ local next_level = tostring(current_level + increment)
+ return true, next_level
end
- local RawNoteRef
- = #(parsers.lbracket * parsers.circumflex)
- * parsers.tag / strip_first_char
+ return Cg( Cmt(Cb("div_level"), update_div_level)
+ , "div_level")
+ end
- local rawnotes = {}
+ local FencedDiv = fenced_div_begin * increment_div_level(1)
+ * parsers.skipblanklines
+ * Ct( (V("Block") - fenced_div_end)^-1
+ * ( parsers.blanklines
+ / function()
+ return writer.interblocksep
+ end
+ * (V("Block") - fenced_div_end))^0)
+ * parsers.skipblanklines
+ * fenced_div_end * increment_div_level(-1)
+ / function (infostring, div)
+ local attr = lpeg.match(Ct(parsers.attributes), infostring)
+ if attr == nil then
+ attr = {"." .. infostring}
+ end
+ return div, attr
+ end
+ / writer.div
- -- like indirect_link
- local function lookup_note(ref)
- return writer.defer_call(function()
- local found = rawnotes[self.normalize_tag(ref)]
- if found then
- return writer.note(
- self.parser_functions.parse_blocks_nested(found))
- else
- return {"[",
- self.parser_functions.parse_inlines("^" .. ref), "]"}
- end
- end)
- end
+ self.insert_pattern("Block after Verbatim",
+ FencedDiv, "FencedDiv")
- local function register_note(ref,rawnote)
- rawnotes[self.normalize_tag(ref)] = rawnote
- return ""
+ self.add_special_character(":")
+ if not blank_before_div_fence then
+ local function check_div_level(s, i, current_level) -- luacheck: ignore s i
+ current_level = tonumber(current_level)
+ return current_level > 0
end
- local NoteRef = RawNoteRef / lookup_note
-
- local NoteBlock
- = parsers.leader * RawNoteRef * parsers.colon
- * parsers.spnl * parsers.indented_blocks(parsers.chunk)
- / register_note
-
- local Blank = NoteBlock + parsers.Blank
- self.update_rule("Blank", Blank)
-
- self.insert_pattern("Inline after Emph",
- NoteRef, "NoteRef")
+ local is_inside_div = Cmt(Cb("div_level"), check_div_level)
+ local fencestart = is_inside_div * fenced_div_end
+ self.update_rule("EndlineExceptions", function(previous_pattern)
+ if previous_pattern == nil then
+ previous_pattern = parsers.EndlineExceptions
+ end
+ return previous_pattern + fencestart
+ end)
end
-
- self.add_special_character("^")
end
}
end
@@ -4458,138 +4710,76 @@ M.extensions.header_attributes = function()
/ writer.heading
local Heading = AtxHeading + SetextHeading
- self.update_rule("Heading", Heading)
+ self.update_rule("Heading", function() return Heading end)
end
}
end
-M.extensions.jekyll_data = function(expect_jekyll_data)
+M.extensions.notes = function(notes, inline_notes)
+ assert(notes or inline_notes)
return {
- name = "built-in jekyll_data syntax extension",
+ name = "built-in notes syntax extension",
extend_writer = function(self)
- function self.jekyllData(d, t, p)
- if not self.is_writing then return "" end
+ function self.note(s)
+ return {"\\markdownRendererNote{",s,"}"}
+ end
+ end, extend_reader = function(self)
+ local parsers = self.parsers
+ local writer = self.writer
- local buf = {}
+ if inline_notes then
+ local InlineNote
+ = parsers.circumflex
+ * (parsers.tag / self.parser_functions.parse_inlines_no_inline_note)
+ / writer.note
- local keys = {}
- for k, _ in pairs(d) do
- table.insert(keys, k)
+ self.insert_pattern("Inline after Emph",
+ InlineNote, "InlineNote")
+ end
+ if notes then
+ local function strip_first_char(s)
+ return s:sub(2)
end
- table.sort(keys)
- if not p then
- table.insert(buf, "\\markdownRendererJekyllDataBegin")
- end
+ local RawNoteRef
+ = #(parsers.lbracket * parsers.circumflex)
+ * parsers.tag / strip_first_char
- if #d > 0 then
- table.insert(buf, "\\markdownRendererJekyllDataSequenceBegin{")
- table.insert(buf, self.uri(p or "null"))
- table.insert(buf, "}{")
- table.insert(buf, #keys)
- table.insert(buf, "}")
- else
- table.insert(buf, "\\markdownRendererJekyllDataMappingBegin{")
- table.insert(buf, self.uri(p or "null"))
- table.insert(buf, "}{")
- table.insert(buf, #keys)
- table.insert(buf, "}")
- end
+ local rawnotes = {}
- for _, k in ipairs(keys) do
- local v = d[k]
- local typ = type(v)
- k = tostring(k or "null")
- if typ == "table" and next(v) ~= nil then
- table.insert(
- buf,
- self.jekyllData(v, t, k)
- )
- else
- k = self.uri(k)
- v = tostring(v)
- if typ == "boolean" then
- table.insert(buf, "\\markdownRendererJekyllDataBoolean{")
- table.insert(buf, k)
- table.insert(buf, "}{")
- table.insert(buf, v)
- table.insert(buf, "}")
- elseif typ == "number" then
- table.insert(buf, "\\markdownRendererJekyllDataNumber{")
- table.insert(buf, k)
- table.insert(buf, "}{")
- table.insert(buf, v)
- table.insert(buf, "}")
- elseif typ == "string" then
- table.insert(buf, "\\markdownRendererJekyllDataString{")
- table.insert(buf, k)
- table.insert(buf, "}{")
- table.insert(buf, t(v))
- table.insert(buf, "}")
- elseif typ == "table" then
- table.insert(buf, "\\markdownRendererJekyllDataEmpty{")
- table.insert(buf, k)
- table.insert(buf, "}")
+ -- like indirect_link
+ local function lookup_note(ref)
+ return writer.defer_call(function()
+ local found = rawnotes[self.normalize_tag(ref)]
+ if found then
+ return writer.note(
+ self.parser_functions.parse_blocks_nested(found))
else
- error(format("Unexpected type %s for value of " ..
- "YAML key %s", typ, k))
+ return {"[",
+ self.parser_functions.parse_inlines("^" .. ref), "]"}
end
- end
- end
-
- if #d > 0 then
- table.insert(buf, "\\markdownRendererJekyllDataSequenceEnd")
- else
- table.insert(buf, "\\markdownRendererJekyllDataMappingEnd")
+ end)
end
- if not p then
- table.insert(buf, "\\markdownRendererJekyllDataEnd")
+ local function register_note(ref,rawnote)
+ rawnotes[self.normalize_tag(ref)] = rawnote
+ return ""
end
- return buf
- end
- end, extend_reader = function(self)
- local parsers = self.parsers
- local writer = self.writer
-
- local JekyllData
- = Cmt( C((parsers.line - P("---") - P("..."))^0)
- , function(s, i, text) -- luacheck: ignore s i
- local data
- local ran_ok, _ = pcall(function()
- local tinyyaml = require("markdown-tinyyaml")
- data = tinyyaml.parse(text, {timestamps=false})
- end)
- if ran_ok and data ~= nil then
- return true, writer.jekyllData(data, function(s)
- return self.parser_functions.parse_blocks_nested(s)
- end, nil)
- else
- return false
- end
- end
- )
+ local NoteRef = RawNoteRef / lookup_note
- local UnexpectedJekyllData
- = P("---")
- * parsers.blankline / 0
- * #(-parsers.blankline) -- if followed by blank, it's thematic break
- * JekyllData
- * (P("---") + P("..."))
+ local NoteBlock
+ = parsers.leader * RawNoteRef * parsers.colon
+ * parsers.spnl * parsers.indented_blocks(parsers.chunk)
+ / register_note
- local ExpectedJekyllData
- = ( P("---")
- * parsers.blankline / 0
- * #(-parsers.blankline) -- if followed by blank, it's thematic break
- )^-1
- * JekyllData
- * (P("---") + P("..."))^-1
+ local Blank = NoteBlock + parsers.Blank
+ self.update_rule("Blank", function() return Blank end)
- self.insert_pattern("Block before Blockquote",
- UnexpectedJekyllData, "UnexpectedJekyllData")
- if expect_jekyll_data then
- self.update_rule("ExpectedJekyllData", ExpectedJekyllData)
+ self.insert_pattern("Inline after Emph",
+ NoteRef, "NoteRef")
end
+
+ self.add_special_character("^")
end
}
end
@@ -4775,17 +4965,17 @@ M.extensions.raw_attribute = function()
if options.fencedCode then
local RawBlock = (parsers.TildeFencedCode
- + parsers.BacktickFencedCode)
- / function(infostring, code)
- local expanded_code = self.expandtabs(code)
- local attr = lpeg.match(raw_attribute, infostring)
- if attr then
- return writer.rawBlock(expanded_code, attr)
- else
- return writer.fencedCode(expanded_code,
- infostring)
- end
+ + parsers.BacktickFencedCode)
+ / function(infostring, code)
+ local expanded_code = self.expandtabs(code)
+ local attr = lpeg.match(raw_attribute, infostring)
+ if attr then
+ return writer.rawBlock(expanded_code, attr)
+ else
+ return writer.fencedCode(expanded_code,
+ infostring)
end
+ end
self.insert_pattern("Block after Verbatim",
RawBlock, "RawBlock")
@@ -4816,28 +5006,6 @@ M.extensions.strike_through = function()
end
}
end
-M.extensions.superscripts = function()
- return {
- name = "built-in superscripts syntax extension",
- extend_writer = function(self)
- function self.superscript(s)
- return {"\\markdownRendererSuperscript{",s,"}"}
- end
- end, extend_reader = function(self)
- local parsers = self.parsers
- local writer = self.writer
-
- local Superscript = (
- parsers.between(parsers.Str, parsers.circumflex, parsers.circumflex)
- ) / writer.superscript
-
- self.insert_pattern("Inline after Emph",
- Superscript, "Superscript")
-
- self.add_special_character("^")
- end
- }
-end
M.extensions.subscripts = function()
return {
name = "built-in subscripts syntax extension",
@@ -4860,160 +5028,156 @@ M.extensions.subscripts = function()
end
}
end
-M.extensions.fancy_lists = function()
+M.extensions.superscripts = function()
return {
- name = "built-in fancy_lists syntax extension",
+ name = "built-in superscripts syntax extension",
extend_writer = function(self)
- local options = self.options
-
- function self.fancylist(items,tight,startnum,numstyle,numdelim)
- if not self.is_writing then return "" end
- local buffer = {}
- local num = startnum
- for _,item in ipairs(items) do
- buffer[#buffer + 1] = self.fancyitem(item,num)
- if num ~= nil then
- num = num + 1
- end
- end
- local contents = util.intersperse(buffer,"\n")
- if tight and options.tightLists then
- return {"\\markdownRendererFancyOlBeginTight{",
- numstyle,"}{",numdelim,"}",contents,
- "\n\\markdownRendererFancyOlEndTight "}
- else
- return {"\\markdownRendererFancyOlBegin{",
- numstyle,"}{",numdelim,"}",contents,
- "\n\\markdownRendererFancyOlEnd "}
- end
- end
- function self.fancyitem(s,num)
- if num ~= nil then
- return {"\\markdownRendererFancyOlItemWithNumber{",num,"}",s,
- "\\markdownRendererFancyOlItemEnd "}
- else
- return {"\\markdownRendererFancyOlItem ",s,"\\markdownRendererFancyOlItemEnd "}
- end
+ function self.superscript(s)
+ return {"\\markdownRendererSuperscript{",s,"}"}
end
end, extend_reader = function(self)
local parsers = self.parsers
- local options = self.options
local writer = self.writer
- local label = parsers.dig + parsers.letter
- local numdelim = parsers.period + parsers.rparent
- local enumerator = C(label^3 * numdelim) * #parsers.spacing
- + C(label^2 * numdelim) * #parsers.spacing
- * (parsers.tab + parsers.space^1)
- + C(label * numdelim) * #parsers.spacing
- * (parsers.tab + parsers.space^-2)
- + parsers.space * C(label^2 * numdelim)
- * #parsers.spacing
- + parsers.space * C(label * numdelim)
- * #parsers.spacing
- * (parsers.tab + parsers.space^-1)
- + parsers.space * parsers.space * C(label^1
- * numdelim) * #parsers.spacing
- local starter = parsers.bullet + enumerator
-
- local NestedList = Cs((parsers.optionallyindentedline
- - starter)^1)
- / function(a) return "\001"..a end
+ local Superscript = (
+ parsers.between(parsers.Str, parsers.circumflex, parsers.circumflex)
+ ) / writer.superscript
- local ListBlockLine = parsers.optionallyindentedline
- - parsers.blankline - (parsers.indent^-1
- * starter)
+ self.insert_pattern("Inline after Emph",
+ Superscript, "Superscript")
- local ListBlock = parsers.line * ListBlockLine^0
+ self.add_special_character("^")
+ end
+ }
+end
+M.extensions.jekyll_data = function(expect_jekyll_data)
+ return {
+ name = "built-in jekyll_data syntax extension",
+ extend_writer = function(self)
+ function self.jekyllData(d, t, p)
+ if not self.is_writing then return "" end
- local ListContinuationBlock = parsers.blanklines * (parsers.indent / "")
- * ListBlock
+ local buf = {}
- local TightListItem = function(starter)
- return -parsers.ThematicBreak
- * (Cs(starter / "" * parsers.tickbox^-1 * ListBlock * NestedList^-1)
- / self.parser_functions.parse_blocks_nested)
- * -(parsers.blanklines * parsers.indent)
- end
+ local keys = {}
+ for k, _ in pairs(d) do
+ table.insert(keys, k)
+ end
+ table.sort(keys)
- local LooseListItem = function(starter)
- return -parsers.ThematicBreak
- * Cs( starter / "" * parsers.tickbox^-1 * ListBlock * Cc("\n")
- * (NestedList + ListContinuationBlock^0)
- * (parsers.blanklines / "\n\n")
- ) / self.parser_functions.parse_blocks_nested
- end
+ if not p then
+ table.insert(buf, "\\markdownRendererJekyllDataBegin")
+ end
- local function roman2number(roman)
- local romans = { ["L"] = 50, ["X"] = 10, ["V"] = 5, ["I"] = 1 }
- local numeral = 0
+ if #d > 0 then
+ table.insert(buf, "\\markdownRendererJekyllDataSequenceBegin{")
+ table.insert(buf, self.uri(p or "null"))
+ table.insert(buf, "}{")
+ table.insert(buf, #keys)
+ table.insert(buf, "}")
+ else
+ table.insert(buf, "\\markdownRendererJekyllDataMappingBegin{")
+ table.insert(buf, self.uri(p or "null"))
+ table.insert(buf, "}{")
+ table.insert(buf, #keys)
+ table.insert(buf, "}")
+ end
- local i = 1
- local len = string.len(roman)
- while i < len do
- local z1, z2 = romans[ string.sub(roman, i, i) ], romans[ string.sub(roman, i+1, i+1) ]
- if z1 < z2 then
- numeral = numeral + (z2 - z1)
- i = i + 2
+ for _, k in ipairs(keys) do
+ local v = d[k]
+ local typ = type(v)
+ k = tostring(k or "null")
+ if typ == "table" and next(v) ~= nil then
+ table.insert(
+ buf,
+ self.jekyllData(v, t, k)
+ )
else
- numeral = numeral + z1
- i = i + 1
+ k = self.uri(k)
+ v = tostring(v)
+ if typ == "boolean" then
+ table.insert(buf, "\\markdownRendererJekyllDataBoolean{")
+ table.insert(buf, k)
+ table.insert(buf, "}{")
+ table.insert(buf, v)
+ table.insert(buf, "}")
+ elseif typ == "number" then
+ table.insert(buf, "\\markdownRendererJekyllDataNumber{")
+ table.insert(buf, k)
+ table.insert(buf, "}{")
+ table.insert(buf, v)
+ table.insert(buf, "}")
+ elseif typ == "string" then
+ table.insert(buf, "\\markdownRendererJekyllDataString{")
+ table.insert(buf, k)
+ table.insert(buf, "}{")
+ table.insert(buf, t(v))
+ table.insert(buf, "}")
+ elseif typ == "table" then
+ table.insert(buf, "\\markdownRendererJekyllDataEmpty{")
+ table.insert(buf, k)
+ table.insert(buf, "}")
+ else
+ error(format("Unexpected type %s for value of " ..
+ "YAML key %s", typ, k))
+ end
end
end
- if i <= len then numeral = numeral + romans[ string.sub(roman,i,i) ] end
- return numeral
- end
- local function sniffstyle(itemprefix)
- local numstr, delimend = itemprefix:match("^([A-Za-z0-9]*)([.)]*)")
- local numdelim
- if delimend == ")" then
- numdelim = "OneParen"
- elseif delimend == "." then
- numdelim = "Period"
+ if #d > 0 then
+ table.insert(buf, "\\markdownRendererJekyllDataSequenceEnd")
else
- numdelim = "Default"
+ table.insert(buf, "\\markdownRendererJekyllDataMappingEnd")
end
- numstr = numstr or itemprefix
- local num
- num = numstr:match("^([IVXL]+)")
- if num then
- return roman2number(num), "UpperRoman", numdelim
- end
- num = numstr:match("^([ivxl]+)")
- if num then
- return roman2number(string.upper(num)), "LowerRoman", numdelim
- end
- num = numstr:match("^([A-Z])")
- if num then
- return string.byte(num) - string.byte("A") + 1, "UpperAlpha", numdelim
- end
- num = numstr:match("^([a-z])")
- if num then
- return string.byte(num) - string.byte("a") + 1, "LowerAlpha", numdelim
+ if not p then
+ table.insert(buf, "\\markdownRendererJekyllDataEnd")
end
- return math.floor(tonumber(numstr) or 1), "Decimal", numdelim
- end
- local function fancylist(items,tight,start)
- local startnum, numstyle, numdelim = sniffstyle(start)
- return writer.fancylist(items,tight,
- options.startNumber and startnum,
- numstyle or "Decimal",
- numdelim or "Default")
+ return buf
end
+ end, extend_reader = function(self)
+ local parsers = self.parsers
+ local writer = self.writer
- local FancyList = Cg(enumerator, "listtype") *
- ( Ct(TightListItem(Cb("listtype"))
- * TightListItem(enumerator)^0)
- * Cc(true) * parsers.skipblanklines * -enumerator
- + Ct(LooseListItem(Cb("listtype"))
- * LooseListItem(enumerator)^0)
- * Cc(false) * parsers.skipblanklines
- ) * Cb("listtype") / fancylist
+ local JekyllData
+ = Cmt( C((parsers.line - P("---") - P("..."))^0)
+ , function(s, i, text) -- luacheck: ignore s i
+ local data
+ local ran_ok, _ = pcall(function()
+ local tinyyaml = require("markdown-tinyyaml")
+ data = tinyyaml.parse(text, {timestamps=false})
+ end)
+ if ran_ok and data ~= nil then
+ return true, writer.jekyllData(data, function(s)
+ return self.parser_functions.parse_blocks_nested(s)
+ end, nil)
+ else
+ return false
+ end
+ end
+ )
- self.update_rule("OrderedList", FancyList)
+ local UnexpectedJekyllData
+ = P("---")
+ * parsers.blankline / 0
+ * #(-parsers.blankline) -- if followed by blank, it's thematic break
+ * JekyllData
+ * (P("---") + P("..."))
+
+ local ExpectedJekyllData
+ = ( P("---")
+ * parsers.blankline / 0
+ * #(-parsers.blankline) -- if followed by blank, it's thematic break
+ )^-1
+ * JekyllData
+ * (P("---") + P("..."))^-1
+
+ self.insert_pattern("Block before Blockquote",
+ UnexpectedJekyllData, "UnexpectedJekyllData")
+ if expect_jekyll_data then
+ self.update_rule("ExpectedJekyllData", function() return ExpectedJekyllData end)
+ end
end
}
end
@@ -5023,6 +5187,11 @@ function M.new(options)
return defaultOptions[key] end })
local extensions = {}
+ if options.bracketedSpans then
+ local bracketed_spans_extension = M.extensions.bracketed_spans()
+ table.insert(extensions, bracketed_spans_extension)
+ end
+
if options.contentBlocks then
local content_blocks_extension = M.extensions.content_blocks(
options.contentBlocksLanguageMap)
@@ -5041,6 +5210,12 @@ function M.new(options)
table.insert(extensions, fenced_code_extension)
end
+ if options.fencedDivs then
+ local fenced_div_extension = M.extensions.fenced_divs(
+ options.blankBeforeDivFence)
+ table.insert(extensions, fenced_div_extension)
+ end
+
if options.headerAttributes then
local header_attributes_extension = M.extensions.header_attributes()
table.insert(extensions, header_attributes_extension)