diff options
Diffstat (limited to 'Master/texmf-dist/tex/generic/markdown/markdown.tex')
-rw-r--r-- | Master/texmf-dist/tex/generic/markdown/markdown.tex | 1611 |
1 files changed, 1481 insertions, 130 deletions
diff --git a/Master/texmf-dist/tex/generic/markdown/markdown.tex b/Master/texmf-dist/tex/generic/markdown/markdown.tex index aeb4f0e3e03..bd5c3664aec 100644 --- a/Master/texmf-dist/tex/generic/markdown/markdown.tex +++ b/Master/texmf-dist/tex/generic/markdown/markdown.tex @@ -45,8 +45,434 @@ %% %% The names of the source files used are shown above. %% -\def\markdownLastModified{2022/03/01}% -\def\markdownVersion{2.14.1-0-gb933d81}% +\ifx\ExplSyntaxOn\undefined + \input expl3-generic\relax +\fi +\ExplSyntaxOn +\seq_new:N \g__markdown_lua_options_seq +\prop_new:N \g__markdown_lua_option_types_prop +\prop_new:N \g__markdown_default_lua_options_prop +\seq_put_right:Nn + \g__markdown_lua_options_seq + { cacheDir } +\prop_put:Nnn + \g__markdown_lua_option_types_prop + { cacheDir } + { string } +\prop_put:Nnn + \g__markdown_default_lua_options_prop + { cacheDir } + { . } +\seq_put_right:Nn + \g__markdown_lua_options_seq + { frozenCacheFileName } +\prop_put:Nnn + \g__markdown_lua_option_types_prop + { frozenCacheFileName } + { string } +\prop_put:Nnn + \g__markdown_default_lua_options_prop + { frozenCacheFileName } + { frozenCache.tex } +\seq_put_right:Nn + \g__markdown_lua_options_seq + { blankBeforeBlockquote } +\prop_put:Nnn + \g__markdown_lua_option_types_prop + { blankBeforeBlockquote } + { boolean } +\prop_put:Nnn + \g__markdown_default_lua_options_prop + { blankBeforeBlockquote } + { false } +\seq_put_right:Nn + \g__markdown_lua_options_seq + { blankBeforeCodeFence } +\prop_put:Nnn + \g__markdown_lua_option_types_prop + { blankBeforeCodeFence } + { boolean } +\prop_put:Nnn + \g__markdown_default_lua_options_prop + { blankBeforeCodeFence } + { false } +\seq_put_right:Nn + \g__markdown_lua_options_seq + { blankBeforeHeading } +\prop_put:Nnn + \g__markdown_lua_option_types_prop + { blankBeforeHeading } + { boolean } +\prop_put:Nnn + \g__markdown_default_lua_options_prop + { blankBeforeHeading } + { false } +\seq_put_right:Nn + \g__markdown_lua_options_seq + { breakableBlockquotes } +\prop_put:Nnn + \g__markdown_lua_option_types_prop + { breakableBlockquotes } + { boolean } +\prop_put:Nnn + \g__markdown_default_lua_options_prop + { breakableBlockquotes } + { false } +\seq_put_right:Nn + \g__markdown_lua_options_seq + { citationNbsps } +\prop_put:Nnn + \g__markdown_lua_option_types_prop + { citationNbsps } + { boolean } +\prop_put:Nnn + \g__markdown_default_lua_options_prop + { citationNbsps } + { true } +\seq_put_right:Nn + \g__markdown_lua_options_seq + { citations } +\prop_put:Nnn + \g__markdown_lua_option_types_prop + { citations } + { boolean } +\prop_put:Nnn + \g__markdown_default_lua_options_prop + { citations } + { false } +\seq_put_right:Nn + \g__markdown_lua_options_seq + { codeSpans } +\prop_put:Nnn + \g__markdown_lua_option_types_prop + { codeSpans } + { boolean } +\prop_put:Nnn + \g__markdown_default_lua_options_prop + { codeSpans } + { true } +\seq_put_right:Nn + \g__markdown_lua_options_seq + { contentBlocks } +\prop_put:Nnn + \g__markdown_lua_option_types_prop + { contentBlocks } + { boolean } +\prop_put:Nnn + \g__markdown_default_lua_options_prop + { contentBlocks } + { false } +\seq_put_right:Nn + \g__markdown_lua_options_seq + { contentBlocksLanguageMap } +\prop_put:Nnn + \g__markdown_lua_option_types_prop + { contentBlocksLanguageMap } + { string } +\prop_put:Nnn + \g__markdown_default_lua_options_prop + { contentBlocksLanguageMap } + { markdown-languages.json } +\seq_put_right:Nn + \g__markdown_lua_options_seq + { definitionLists } +\prop_put:Nnn + \g__markdown_lua_option_types_prop + { definitionLists } + { boolean } +\prop_put:Nnn + \g__markdown_default_lua_options_prop + { definitionLists } + { false } +\seq_put_right:Nn + \g__markdown_lua_options_seq + { eagerCache } +\prop_put:Nnn + \g__markdown_lua_option_types_prop + { eagerCache } + { boolean } +\prop_put:Nnn + \g__markdown_default_lua_options_prop + { eagerCache } + { true } +\seq_put_right:Nn + \g__markdown_lua_options_seq + { expectJekyllData } +\prop_put:Nnn + \g__markdown_lua_option_types_prop + { expectJekyllData } + { boolean } +\prop_put:Nnn + \g__markdown_default_lua_options_prop + { expectJekyllData } + { false } +\seq_put_right:Nn + \g__markdown_lua_options_seq + { fencedCode } +\prop_put:Nnn + \g__markdown_lua_option_types_prop + { fencedCode } + { boolean } +\prop_put:Nnn + \g__markdown_default_lua_options_prop + { fencedCode } + { false } +\seq_put_right:Nn + \g__markdown_lua_options_seq + { finalizeCache } +\prop_put:Nnn + \g__markdown_lua_option_types_prop + { finalizeCache } + { boolean } +\prop_put:Nnn + \g__markdown_default_lua_options_prop + { finalizeCache } + { false } +\seq_put_right:Nn + \g__markdown_lua_options_seq + { footnotes } +\prop_put:Nnn + \g__markdown_lua_option_types_prop + { footnotes } + { boolean } +\prop_put:Nnn + \g__markdown_default_lua_options_prop + { footnotes } + { false } +\seq_put_right:Nn + \g__markdown_lua_options_seq + { frozenCacheCounter } +\prop_put:Nnn + \g__markdown_lua_option_types_prop + { frozenCacheCounter } + { counter } +\prop_put:Nnn + \g__markdown_default_lua_options_prop + { frozenCacheCounter } + { 0 } +\seq_put_right:Nn + \g__markdown_lua_options_seq + { hardLineBreaks } +\prop_put:Nnn + \g__markdown_lua_option_types_prop + { hardLineBreaks } + { boolean } +\prop_put:Nnn + \g__markdown_default_lua_options_prop + { hardLineBreaks } + { false } +\seq_put_right:Nn + \g__markdown_lua_options_seq + { hashEnumerators } +\prop_put:Nnn + \g__markdown_lua_option_types_prop + { hashEnumerators } + { boolean } +\prop_put:Nnn + \g__markdown_default_lua_options_prop + { hashEnumerators } + { false } +\seq_put_right:Nn + \g__markdown_lua_options_seq + { headerAttributes } +\prop_put:Nnn + \g__markdown_lua_option_types_prop + { headerAttributes } + { boolean } +\prop_put:Nnn + \g__markdown_default_lua_options_prop + { headerAttributes } + { false } +\seq_put_right:Nn + \g__markdown_lua_options_seq + { html } +\prop_put:Nnn + \g__markdown_lua_option_types_prop + { html } + { boolean } +\prop_put:Nnn + \g__markdown_default_lua_options_prop + { html } + { false } +\seq_put_right:Nn + \g__markdown_lua_options_seq + { hybrid } +\prop_put:Nnn + \g__markdown_lua_option_types_prop + { hybrid } + { boolean } +\prop_put:Nnn + \g__markdown_default_lua_options_prop + { hybrid } + { false } +\seq_put_right:Nn + \g__markdown_lua_options_seq + { inlineFootnotes } +\prop_put:Nnn + \g__markdown_lua_option_types_prop + { inlineFootnotes } + { boolean } +\prop_put:Nnn + \g__markdown_default_lua_options_prop + { inlineFootnotes } + { false } +\seq_put_right:Nn + \g__markdown_lua_options_seq + { jekyllData } +\prop_put:Nnn + \g__markdown_lua_option_types_prop + { jekyllData } + { boolean } +\prop_put:Nnn + \g__markdown_default_lua_options_prop + { jekyllData } + { false } +\seq_put_right:Nn + \g__markdown_lua_options_seq + { pipeTables } +\prop_put:Nnn + \g__markdown_lua_option_types_prop + { pipeTables } + { boolean } +\prop_put:Nnn + \g__markdown_default_lua_options_prop + { pipeTables } + { false } +\seq_put_right:Nn + \g__markdown_lua_options_seq + { preserveTabs } +\prop_put:Nnn + \g__markdown_lua_option_types_prop + { preserveTabs } + { boolean } +\prop_put:Nnn + \g__markdown_default_lua_options_prop + { preserveTabs } + { false } +\seq_put_right:Nn + \g__markdown_lua_options_seq + { relativeReferences } +\prop_put:Nnn + \g__markdown_lua_option_types_prop + { relativeReferences } + { boolean } +\prop_put:Nnn + \g__markdown_default_lua_options_prop + { relativeReferences } + { false } +\seq_put_right:Nn + \g__markdown_lua_options_seq + { shiftHeadings } +\prop_put:Nnn + \g__markdown_lua_option_types_prop + { shiftHeadings } + { number } +\prop_put:Nnn + \g__markdown_default_lua_options_prop + { shiftHeadings } + { 0 } +\seq_put_right:Nn + \g__markdown_lua_options_seq + { slice } +\prop_put:Nnn + \g__markdown_lua_option_types_prop + { slice } + { string } +\prop_put:Nnn + \g__markdown_default_lua_options_prop + { slice } + { ^~$ } +\seq_put_right:Nn + \g__markdown_lua_options_seq + { smartEllipses } +\prop_put:Nnn + \g__markdown_lua_option_types_prop + { smartEllipses } + { boolean } +\prop_put:Nnn + \g__markdown_default_lua_options_prop + { smartEllipses } + { false } +\seq_put_right:Nn + \g__markdown_lua_options_seq + { startNumber } +\prop_put:Nnn + \g__markdown_lua_option_types_prop + { startNumber } + { boolean } +\prop_put:Nnn + \g__markdown_default_lua_options_prop + { startNumber } + { true } +\seq_put_right:Nn + \g__markdown_lua_options_seq + { stripIndent } +\prop_put:Nnn + \g__markdown_lua_option_types_prop + { stripIndent } + { boolean } +\prop_put:Nnn + \g__markdown_default_lua_options_prop + { stripIndent } + { false } +\seq_put_right:Nn + \g__markdown_lua_options_seq + { tableCaptions } +\prop_put:Nnn + \g__markdown_lua_option_types_prop + { tableCaptions } + { boolean } +\prop_put:Nnn + \g__markdown_default_lua_options_prop + { tableCaptions } + { false } +\seq_put_right:Nn + \g__markdown_lua_options_seq + { taskLists } +\prop_put:Nnn + \g__markdown_lua_option_types_prop + { taskLists } + { boolean } +\prop_put:Nnn + \g__markdown_default_lua_options_prop + { taskLists } + { false } +\seq_put_right:Nn + \g__markdown_lua_options_seq + { texComments } +\prop_put:Nnn + \g__markdown_lua_option_types_prop + { texComments } + { boolean } +\prop_put:Nnn + \g__markdown_default_lua_options_prop + { texComments } + { false } +\seq_put_right:Nn + \g__markdown_lua_options_seq + { tightLists } +\prop_put:Nnn + \g__markdown_lua_option_types_prop + { tightLists } + { boolean } +\prop_put:Nnn + \g__markdown_default_lua_options_prop + { tightLists } + { true } +\seq_put_right:Nn + \g__markdown_lua_options_seq + { underscores } +\prop_put:Nnn + \g__markdown_lua_option_types_prop + { underscores } + { boolean } +\prop_put:Nnn + \g__markdown_default_lua_options_prop + { underscores } + { true } +\ExplSyntaxOff +\def\markdownLastModified{2022/03/31}% +\def\markdownVersion{2.15.0-0-g9296cf1}% \let\markdownBegin\relax \let\markdownEnd\relax \let\markdownInput\relax @@ -87,177 +513,942 @@ \let\markdownOptionStripIndent\undefined \let\markdownOptionTableCaptions\undefined \let\markdownOptionTaskLists\undefined -\let\markdownOptionTeXComments\undefined +\let\markdownOptionTexComments\undefined \let\markdownOptionTightLists\undefined \def\markdownOptionStripPercentSigns{false}% +\ExplSyntaxOn +\seq_new:N \g__markdown_renderers_seq +\prop_new:N \g__markdown_renderer_arities_prop +\ExplSyntaxOff \def\markdownRendererTickedBox{% \markdownRendererTickedBoxPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { tickedBox } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { tickedBox } + { 0 } +\ExplSyntaxOff \def\markdownRendererHalfTickedBox{% \markdownRendererHalfTickedBoxPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { halfTickedBox } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { halfTickedBox } + { 0 } +\ExplSyntaxOff \def\markdownRendererUntickedBox{% \markdownRendererUntickedBoxPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { untickedBox } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { untickedBox } + { 0 } +\ExplSyntaxOff \def\markdownRendererDocumentBegin{% \markdownRendererDocumentBeginPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { documentBegin } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { documentBegin } + { 0 } +\ExplSyntaxOff \def\markdownRendererDocumentEnd{% \markdownRendererDocumentEndPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { documentEnd } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { documentEnd } + { 0 } +\ExplSyntaxOff \def\markdownRendererInterblockSeparator{% \markdownRendererInterblockSeparatorPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { interblockSeparator } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { interblockSeparator } + { 0 } +\ExplSyntaxOff \def\markdownRendererLineBreak{% \markdownRendererLineBreakPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { lineBreak } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { lineBreak } + { 0 } +\ExplSyntaxOff \def\markdownRendererEllipsis{% \markdownRendererEllipsisPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { ellipsis } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { ellipsis } + { 0 } +\ExplSyntaxOff \def\markdownRendererNbsp{% \markdownRendererNbspPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { nbsp } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { nbsp } + { 0 } +\ExplSyntaxOff \def\markdownRendererLeftBrace{% \markdownRendererLeftBracePrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { leftBrace } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { leftBrace } + { 0 } +\ExplSyntaxOff \def\markdownRendererRightBrace{% \markdownRendererRightBracePrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { rightBrace } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { rightBrace } + { 0 } +\ExplSyntaxOff \def\markdownRendererDollarSign{% \markdownRendererDollarSignPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { dollarSign } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { dollarSign } + { 0 } +\ExplSyntaxOff \def\markdownRendererPercentSign{% \markdownRendererPercentSignPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { percentSign } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { percentSign } + { 0 } +\ExplSyntaxOff \def\markdownRendererAmpersand{% \markdownRendererAmpersandPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { ampersand } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { ampersand } + { 0 } +\ExplSyntaxOff \def\markdownRendererUnderscore{% \markdownRendererUnderscorePrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { underscore } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { underscore } + { 0 } +\ExplSyntaxOff \def\markdownRendererHash{% \markdownRendererHashPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { hash } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { hash } + { 0 } +\ExplSyntaxOff \def\markdownRendererCircumflex{% \markdownRendererCircumflexPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { circumflex } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { circumflex } + { 0 } +\ExplSyntaxOff \def\markdownRendererBackslash{% \markdownRendererBackslashPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { backslash } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { backslash } + { 0 } +\ExplSyntaxOff \def\markdownRendererTilde{% \markdownRendererTildePrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { tilde } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { tilde } + { 0 } +\ExplSyntaxOff \def\markdownRendererPipe{% \markdownRendererPipePrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { pipe } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { pipe } + { 0 } +\ExplSyntaxOff \def\markdownRendererCodeSpan{% \markdownRendererCodeSpanPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { codeSpan } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { codeSpan } + { 1 } +\ExplSyntaxOff \def\markdownRendererLink{% \markdownRendererLinkPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { link } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { link } + { 4 } +\ExplSyntaxOff \def\markdownRendererImage{% \markdownRendererImagePrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { image } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { image } + { 4 } +\ExplSyntaxOff \def\markdownRendererContentBlock{% \markdownRendererContentBlockPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { contentBlock } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { contentBlock } + { 4 } +\ExplSyntaxOff \def\markdownRendererContentBlockOnlineImage{% \markdownRendererContentBlockOnlineImagePrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { contentBlockOnlineImage } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { contentBlockOnlineImage } + { 4 } +\ExplSyntaxOff \def\markdownRendererContentBlockCode{% \markdownRendererContentBlockCodePrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { contentBlockCode } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { contentBlockCode } + { 5 } +\ExplSyntaxOff \def\markdownRendererUlBegin{% \markdownRendererUlBeginPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { ulBegin } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { ulBegin } + { 0 } +\ExplSyntaxOff \def\markdownRendererUlBeginTight{% \markdownRendererUlBeginTightPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { ulBeginTight } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { ulBeginTight } + { 0 } +\ExplSyntaxOff \def\markdownRendererUlItem{% \markdownRendererUlItemPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { ulItem } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { ulItem } + { 0 } +\ExplSyntaxOff \def\markdownRendererUlItemEnd{% \markdownRendererUlItemEndPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { ulItemEnd } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { ulItemEnd } + { 0 } +\ExplSyntaxOff \def\markdownRendererUlEnd{% \markdownRendererUlEndPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { ulEnd } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { ulEnd } + { 0 } +\ExplSyntaxOff \def\markdownRendererUlEndTight{% \markdownRendererUlEndTightPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { ulEndTight } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { ulEndTight } + { 0 } +\ExplSyntaxOff \def\markdownRendererOlBegin{% \markdownRendererOlBeginPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { olBegin } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { olBegin } + { 0 } +\ExplSyntaxOff \def\markdownRendererOlBeginTight{% \markdownRendererOlBeginTightPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { olBeginTight } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { olBeginTight } + { 0 } +\ExplSyntaxOff \def\markdownRendererOlItem{% \markdownRendererOlItemPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { olItem } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { olItem } + { 0 } +\ExplSyntaxOff \def\markdownRendererOlItemEnd{% \markdownRendererOlItemEndPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { olItemEnd } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { olItemEnd } + { 0 } +\ExplSyntaxOff \def\markdownRendererOlItemWithNumber{% \markdownRendererOlItemWithNumberPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { olItemWithNumber } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { olItemWithNumber } + { 1 } +\ExplSyntaxOff \def\markdownRendererOlEnd{% \markdownRendererOlEndPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { olEnd } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { olEnd } + { 0 } +\ExplSyntaxOff \def\markdownRendererOlEndTight{% \markdownRendererOlEndTightPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { olEndTight } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { olEndTight } + { 0 } +\ExplSyntaxOff \def\markdownRendererDlBegin{% \markdownRendererDlBeginPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { dlBegin } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { dlBegin } + { 0 } +\ExplSyntaxOff \def\markdownRendererDlBeginTight{% \markdownRendererDlBeginTightPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { dlBeginTight } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { dlBeginTight } + { 0 } +\ExplSyntaxOff \def\markdownRendererDlItem{% \markdownRendererDlItemPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { dlItem } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { dlItem } + { 1 } +\ExplSyntaxOff \def\markdownRendererDlItemEnd{% \markdownRendererDlItemEndPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { dlItemEnd } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { dlItemEnd } + { 0 } +\ExplSyntaxOff \def\markdownRendererDlDefinitionBegin{% \markdownRendererDlDefinitionBeginPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { dlDefinitionBegin } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { dlDefinitionBegin } + { 0 } +\ExplSyntaxOff \def\markdownRendererDlDefinitionEnd{% \markdownRendererDlDefinitionEndPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { dlDefinitionEnd } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { dlDefinitionEnd } + { 0 } +\ExplSyntaxOff \def\markdownRendererDlEnd{% \markdownRendererDlEndPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { dlEnd } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { dlEnd } + { 0 } +\ExplSyntaxOff \def\markdownRendererDlEndTight{% \markdownRendererDlEndTightPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { dlEndTight } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { dlEndTight } + { 0 } +\ExplSyntaxOff \def\markdownRendererEmphasis{% \markdownRendererEmphasisPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { emphasis } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { emphasis } + { 1 } +\ExplSyntaxOff \def\markdownRendererStrongEmphasis{% \markdownRendererStrongEmphasisPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { strongEmphasis } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { strongEmphasis } + { 1 } +\ExplSyntaxOff \def\markdownRendererBlockQuoteBegin{% \markdownRendererBlockQuoteBeginPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { blockQuoteBegin } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { blockQuoteBegin } + { 0 } +\ExplSyntaxOff \def\markdownRendererBlockQuoteEnd{% \markdownRendererBlockQuoteEndPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { blockQuoteEnd } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { blockQuoteEnd } + { 0 } +\ExplSyntaxOff \def\markdownRendererInputVerbatim{% \markdownRendererInputVerbatimPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { inputVerbatim } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { inputVerbatim } + { 1 } +\ExplSyntaxOff \def\markdownRendererInputFencedCode{% \markdownRendererInputFencedCodePrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { inputFencedCode } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { inputFencedCode } + { 2 } +\ExplSyntaxOff \def\markdownRendererJekyllDataBegin{% \markdownRendererJekyllDataBeginPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { jekyllDataBegin } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { jekyllDataBegin } + { 0 } +\ExplSyntaxOff \def\markdownRendererJekyllDataEnd{% \markdownRendererJekyllDataEndPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { jekyllDataEnd } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { jekyllDataEnd } + { 0 } +\ExplSyntaxOff \def\markdownRendererJekyllDataMappingBegin{% \markdownRendererJekyllDataMappingBeginPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { jekyllDataMappingBegin } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { jekyllDataMappingBegin } + { 2 } +\ExplSyntaxOff \def\markdownRendererJekyllDataMappingEnd{% \markdownRendererJekyllDataMappingEndPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { jekyllDataMappingEnd } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { jekyllDataMappingEnd } + { 0 } +\ExplSyntaxOff \def\markdownRendererJekyllDataSequenceBegin{% \markdownRendererJekyllDataSequenceBeginPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { jekyllDataSequenceBegin } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { jekyllDataSequenceBegin } + { 2 } +\ExplSyntaxOff \def\markdownRendererJekyllDataSequenceEnd{% \markdownRendererJekyllDataSequenceEndPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { jekyllDataSequenceEnd } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { jekyllDataSequenceEnd } + { 0 } +\ExplSyntaxOff \def\markdownRendererJekyllDataBoolean{% \markdownRendererJekyllDataBooleanPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { jekyllDataBoolean } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { jekyllDataBoolean } + { 2 } +\ExplSyntaxOff \def\markdownRendererJekyllDataNumber{% \markdownRendererJekyllDataNumberPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { jekyllDataNumber } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { jekyllDataNumber } + { 2 } +\ExplSyntaxOff \def\markdownRendererJekyllDataString{% \markdownRendererJekyllDataStringPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { jekyllDataString } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { jekyllDataString } + { 2 } +\ExplSyntaxOff \def\markdownRendererJekyllDataEmpty{% \markdownRendererJekyllDataEmptyPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { jekyllDataEmpty } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { jekyllDataEmpty } + { 1 } +\ExplSyntaxOff \def\markdownRendererHeadingOne{% \markdownRendererHeadingOnePrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { headingOne } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { headingOne } + { 1 } +\ExplSyntaxOff \def\markdownRendererHeadingTwo{% \markdownRendererHeadingTwoPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { headingTwo } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { headingTwo } + { 1 } +\ExplSyntaxOff \def\markdownRendererHeadingThree{% \markdownRendererHeadingThreePrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { headingThree } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { headingThree } + { 1 } +\ExplSyntaxOff \def\markdownRendererHeadingFour{% \markdownRendererHeadingFourPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { headingFour } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { headingFour } + { 1 } +\ExplSyntaxOff \def\markdownRendererHeadingFive{% \markdownRendererHeadingFivePrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { headingFive } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { headingFive } + { 1 } +\ExplSyntaxOff \def\markdownRendererHeadingSix{% \markdownRendererHeadingSixPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { headingSix } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { headingSix } + { 1 } +\ExplSyntaxOff \def\markdownRendererHorizontalRule{% \markdownRendererHorizontalRulePrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { horizontalRule } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { horizontalRule } + { 0 } +\ExplSyntaxOff \def\markdownRendererFootnote{% \markdownRendererFootnotePrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { footnote } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { footnote } + { 1 } +\ExplSyntaxOff \def\markdownRendererCite{% \markdownRendererCitePrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { cite } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { cite } + { 1 } +\ExplSyntaxOff \def\markdownRendererTextCite{% \markdownRendererTextCitePrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { textCite } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { textCite } + { 1 } +\ExplSyntaxOff \def\markdownRendererTable{% \markdownRendererTablePrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { table } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { table } + { 3 } +\ExplSyntaxOff \def\markdownRendererInlineHtmlComment{% \markdownRendererInlineHtmlCommentPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { inlineHtmlComment } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { inlineHtmlComment } + { 1 } +\ExplSyntaxOff \def\markdownRendererBlockHtmlCommentBegin{% \markdownRendererBlockHtmlCommentBeginPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { blockHtmlCommentBegin } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { blockHtmlCommentBegin } + { 0 } +\ExplSyntaxOff \def\markdownRendererBlockHtmlCommentEnd{% \markdownRendererBlockHtmlCommentEndPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { blockHtmlCommentEnd } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { blockHtmlCommentEnd } + { 0 } +\ExplSyntaxOff \def\markdownRendererInlineHtmlTag{% \markdownRendererInlineHtmlTagPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { inlineHtmlTag } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { inlineHtmlTag } + { 1 } +\ExplSyntaxOff \def\markdownRendererInputBlockHtmlElement{% \markdownRendererInputBlockHtmlElementPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { inputBlockHtmlElement } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { inputBlockHtmlElement } + { 1 } +\ExplSyntaxOff \def\markdownRendererAttributeIdentifier{% \markdownRendererAttributeIdentifierPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { attributeIdentifier } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { attributeIdentifier } + { 1 } +\ExplSyntaxOff \def\markdownRendererAttributeClassName{% \markdownRendererAttributeClassNamePrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { attributeClassName } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { attributeClassName } + { 1 } +\ExplSyntaxOff \def\markdownRendererAttributeKeyValue{% \markdownRendererAttributeKeyValuePrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { attributeKeyValue } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { attributeKeyValue } + { 2 } +\ExplSyntaxOff \def\markdownRendererHeaderAttributeContextBegin{% \markdownRendererHeaderAttributeContextBeginPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { headerAttributeContextBegin } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { headerAttributeContextBegin } + { 0 } +\ExplSyntaxOff \def\markdownRendererHeaderAttributeContextEnd{% \markdownRendererHeaderAttributeContextEndPrototype}% +\ExplSyntaxOn +\seq_put_right:Nn + \g__markdown_renderers_seq + { headerAttributeContextEnd } +\prop_put:Nnn + \g__markdown_renderer_arities_prop + { headerAttributeContextEnd } + { 0 } +\ExplSyntaxOff +\ExplSyntaxOn +\keys_define:nn + { markdown/jekyllData } + { } +\ExplSyntaxOff \def\markdownRendererAttributeIdentifierPrototype#1{}% \def\markdownRendererAttributeClassNamePrototype#1{}% \def\markdownRendererAttributeKeyValuePrototype#1#2{}% @@ -313,16 +1504,8 @@ \def\markdownRendererBlockQuoteEndPrototype{}% \def\markdownRendererInputVerbatimPrototype#1{}% \def\markdownRendererInputFencedCodePrototype#1#2{}% -\def\markdownRendererJekyllDataBooleanPrototype#1#2{}% -\def\markdownRendererJekyllDataEmptyPrototype#1{}% -\def\markdownRendererJekyllDataNumberPrototype#1#2{}% -\def\markdownRendererJekyllDataStringPrototype#1#2{}% \def\markdownRendererJekyllDataBeginPrototype{}% \def\markdownRendererJekyllDataEndPrototype{}% -\def\markdownRendererJekyllDataSequenceBeginPrototype#1#2{}% -\def\markdownRendererJekyllDataSequenceEndPrototype{}% -\def\markdownRendererJekyllDataMappingBeginPrototype#1#2{}% -\def\markdownRendererJekyllDataMappingEndPrototype{}% \def\markdownRendererHeadingOnePrototype#1{}% \def\markdownRendererHeadingTwoPrototype#1{}% \def\markdownRendererHeadingThreePrototype#1{}% @@ -441,114 +1624,250 @@ \def\markdownRendererTickedBoxPrototype{[X]}% \def\markdownRendererHalfTickedBoxPrototype{[/]}% \def\markdownRendererUntickedBoxPrototype{[ ]}% -\def\markdownLuaOptions{{% -\ifx\markdownOptionBlankBeforeBlockquote\undefined\else - blankBeforeBlockquote = \markdownOptionBlankBeforeBlockquote, -\fi -\ifx\markdownOptionBlankBeforeCodeFence\undefined\else - blankBeforeCodeFence = \markdownOptionBlankBeforeCodeFence, -\fi -\ifx\markdownOptionBlankBeforeHeading\undefined\else - blankBeforeHeading = \markdownOptionBlankBeforeHeading, -\fi -\ifx\markdownOptionBreakableBlockquotes\undefined\else - breakableBlockquotes = \markdownOptionBreakableBlockquotes, -\fi - cacheDir = "\markdownOptionCacheDir", -\ifx\markdownOptionCitations\undefined\else - citations = \markdownOptionCitations, -\fi -\ifx\markdownOptionCitationNbsps\undefined\else - citationNbsps = \markdownOptionCitationNbsps, -\fi -\ifx\markdownOptionCodeSpans\undefined\else - codeSpans = \markdownOptionCodeSpans, -\fi -\ifx\markdownOptionContentBlocks\undefined\else - contentBlocks = \markdownOptionContentBlocks, -\fi -\ifx\markdownOptionContentBlocksLanguageMap\undefined\else - contentBlocksLanguageMap = - "\markdownOptionContentBlocksLanguageMap", -\fi -\ifx\markdownOptionDefinitionLists\undefined\else - definitionLists = \markdownOptionDefinitionLists, -\fi -\ifx\markdownOptionEagerCache\undefined\else - eagerCache = \markdownOptionEagerCache, -\fi -\ifx\markdownOptionFinalizeCache\undefined\else - finalizeCache = \markdownOptionFinalizeCache, -\fi - frozenCacheFileName = "\markdownOptionFrozenCacheFileName", - frozenCacheCounter = \the\markdownFrozenCacheCounter, -\ifx\markdownOptionFootnotes\undefined\else - footnotes = \markdownOptionFootnotes, -\fi -\ifx\markdownOptionFencedCode\undefined\else - fencedCode = \markdownOptionFencedCode, -\fi -\ifx\markdownOptionHardLineBreaks\undefined\else - hardLineBreaks = \markdownOptionHardLineBreaks, -\fi -\ifx\markdownOptionHashEnumerators\undefined\else - hashEnumerators = \markdownOptionHashEnumerators, -\fi -\ifx\markdownOptionHeaderAttributes\undefined\else - headerAttributes = \markdownOptionHeaderAttributes, -\fi -\ifx\markdownOptionHtml\undefined\else - html = \markdownOptionHtml, -\fi -\ifx\markdownOptionHybrid\undefined\else - hybrid = \markdownOptionHybrid, -\fi -\ifx\markdownOptionInlineFootnotes\undefined\else - inlineFootnotes = \markdownOptionInlineFootnotes, -\fi -\ifx\markdownOptionJekyllData\undefined\else - jekyllData = \markdownOptionJekyllData, -\fi -\ifx\markdownOptionPipeTables\undefined\else - pipeTables = \markdownOptionPipeTables, -\fi -\ifx\markdownOptionPreserveTabs\undefined\else - preserveTabs = \markdownOptionPreserveTabs, -\fi -\ifx\markdownOptionRelativeReferences\undefined\else - relativeReferences = \markdownOptionRelativeReferences, -\fi -\ifx\markdownOptionShiftHeadings\undefined\else - shiftHeadings = "\markdownOptionShiftHeadings", -\fi -\ifx\markdownOptionSlice\undefined\else - slice = "\markdownOptionSlice", -\fi -\ifx\markdownOptionSmartEllipses\undefined\else - smartEllipses = \markdownOptionSmartEllipses, -\fi -\ifx\markdownOptionStartNumber\undefined\else - startNumber = \markdownOptionStartNumber, -\fi -\ifx\markdownOptionStripIndent\undefined\else - stripIndent = \markdownOptionStripIndent, -\fi -\ifx\markdownOptionTableCaptions\undefined\else - tableCaptions = \markdownOptionTableCaptions, -\fi -\ifx\markdownOptionTaskLists\undefined\else - taskLists = \markdownOptionTaskLists, -\fi -\ifx\markdownOptionTeXComments\undefined\else - texComments = \markdownOptionTeXComments, -\fi -\ifx\markdownOptionTightLists\undefined\else - tightLists = \markdownOptionTightLists, -\fi -\ifx\markdownOptionUnderscores\undefined\else - underscores = \markdownOptionUnderscores, -\fi} -}% +\ExplSyntaxOn +\seq_new:N \g__markdown_jekyll_data_datatypes_seq +\tl_const:Nn \c__markdown_jekyll_data_sequence_tl { sequence } +\tl_const:Nn \c__markdown_jekyll_data_mapping_tl { mapping } +\tl_const:Nn \c__markdown_jekyll_data_scalar_tl { scalar } +\seq_new:N \g__markdown_jekyll_data_wildcard_absolute_address_seq +\cs_new:Nn \markdown_jekyll_data_push_address_segment:n + { + \seq_if_empty:NF + \g__markdown_jekyll_data_datatypes_seq + { + \seq_get_right:NN + \g__markdown_jekyll_data_datatypes_seq + \l_tmpa_tl + \tl_if_eq:NNTF + \l_tmpa_tl + \c__markdown_jekyll_data_sequence_tl + { + \seq_put_right:Nn + \g__markdown_jekyll_data_wildcard_absolute_address_seq + { * } + } + { + \seq_put_right:Nn + \g__markdown_jekyll_data_wildcard_absolute_address_seq + { #1 } + } + } + } +\tl_new:N \g__markdown_jekyll_data_wildcard_absolute_address_tl +\tl_new:N \g__markdown_jekyll_data_wildcard_relative_address_tl +\cs_new:Nn \markdown_jekyll_data_concatenate_address:NN + { + \seq_pop_left:NN #1 \l_tmpa_tl + \tl_set:Nx #2 { / \seq_use:Nn #1 { / } } + \seq_put_left:NV #1 \l_tmpa_tl + } +\cs_new:Nn \markdown_jekyll_data_update_address_tls: + { + \markdown_jekyll_data_concatenate_address:NN + \g__markdown_jekyll_data_wildcard_absolute_address_seq + \g__markdown_jekyll_data_wildcard_absolute_address_tl + \seq_get_right:NN + \g__markdown_jekyll_data_wildcard_absolute_address_seq + \g__markdown_jekyll_data_wildcard_relative_address_tl + } +\cs_new:Nn \markdown_jekyll_data_push:nN + { + \markdown_jekyll_data_push_address_segment:n + { #1 } + \seq_put_right:NV + \g__markdown_jekyll_data_datatypes_seq + #2 + \markdown_jekyll_data_update_address_tls: + } +\cs_new:Nn \markdown_jekyll_data_pop: + { + \seq_pop_right:NN + \g__markdown_jekyll_data_wildcard_absolute_address_seq + \l_tmpa_tl + \seq_pop_right:NN + \g__markdown_jekyll_data_datatypes_seq + \l_tmpa_tl + \markdown_jekyll_data_update_address_tls: + } +\cs_new:Nn \markdown_jekyll_data_set_keyval:nn + { + \keys_set_known:nn + { markdown/jekyllData } + { { #1 } = { #2 } } + } +\cs_generate_variant:Nn + \markdown_jekyll_data_set_keyval:nn + { Vn } +\cs_new:Nn \markdown_jekyll_data_set_keyvals:nn + { + \markdown_jekyll_data_push:nN + { #1 } + \c__markdown_jekyll_data_scalar_tl + \markdown_jekyll_data_set_keyval:Vn + \g__markdown_jekyll_data_wildcard_absolute_address_tl + { #2 } + \markdown_jekyll_data_set_keyval:Vn + \g__markdown_jekyll_data_wildcard_relative_address_tl + { #2 } + \markdown_jekyll_data_pop: + } +\def\markdownRendererJekyllDataSequenceBeginPrototype#1#2{ + \markdown_jekyll_data_push:nN + { #1 } + \c__markdown_jekyll_data_sequence_tl +} +\def\markdownRendererJekyllDataMappingBeginPrototype#1#2{ + \markdown_jekyll_data_push:nN + { #1 } + \c__markdown_jekyll_data_mapping_tl +} +\def\markdownRendererJekyllDataSequenceEndPrototype{ + \markdown_jekyll_data_pop: +} +\def\markdownRendererJekyllDataMappingEndPrototype{ + \markdown_jekyll_data_pop: +} +\def\markdownRendererJekyllDataBooleanPrototype#1#2{ + \markdown_jekyll_data_set_keyvals:nn + { #1 } + { #2 } +} +\def\markdownRendererJekyllDataEmptyPrototype#1{} +\def\markdownRendererJekyllDataNumberPrototype#1#2{ + \markdown_jekyll_data_set_keyvals:nn + { #1 } + { #2 } +} +\def\markdownRendererJekyllDataStringPrototype#1#2{ + \markdown_jekyll_data_set_keyvals:nn + { #1 } + { #2 } +} +\ExplSyntaxOff +\ExplSyntaxOn +\tl_new:N \g__markdown_formatted_lua_options_tl +\tl_const:Nn \c__markdown_lua_option_type_boolean { boolean } +\tl_const:Nn \c__markdown_lua_option_type_counter { counter } +\tl_const:Nn \c__markdown_lua_option_type_number { number } +\tl_const:Nn \c__markdown_lua_option_type_string { string } +\cs_new:Nn \__markdown_format_lua_options: + { + \tl_gclear:N + \g__markdown_formatted_lua_options_tl + \seq_map_function:NN + \g__markdown_lua_options_seq + \__markdown_format_lua_option:n + } +\cs_new:Nn \__markdown_format_lua_option:n + { + \__markdown_typecheck_lua_option:n { #1 } + \tl_set:Nn + \l_tmpb_tl + { \str_upper_case:n { #1 } } + \tl_set:Nx + \l_tmpa_tl + { + markdownOption + \tl_head:f { \l_tmpb_tl } + \tl_tail:n { #1 } + } + \prop_get:NnN + \g__markdown_lua_option_types_prop + { #1 } + \l_tmpb_tl + \cs_if_free:cTF + { \l_tmpa_tl } + { } + { + \tl_case:NnF + \l_tmpb_tl + { + \c__markdown_lua_option_type_string + { + \tl_gput_right:Nx + \g__markdown_formatted_lua_options_tl + { #1~=~" \cs:w \l_tmpa_tl \cs_end: ",~ } + } + \c__markdown_lua_option_type_counter + { + \tl_gput_right:Nx + \g__markdown_formatted_lua_options_tl + { #1~=~ \the \cs:w \l_tmpa_tl \cs_end: ,~ } + } + } + { + \tl_gput_right:Nx + \g__markdown_formatted_lua_options_tl + { #1~=~ \cs:w \l_tmpa_tl \cs_end: ,~ } + } + } + } +\msg_new:nnn + { markdown } + { undefined-lua-option } + { + Lua~option~#1~is~undefined. + } +\msg_new:nnn + { markdown } + { failed-typecheck-for-boolean-lua-option } + { + Lua~option~#1~has~value~#2,~ + but~a~boolean~(true~or~false)~was~expected. + } +\cs_new:Nn \__markdown_typecheck_lua_option:n + { + \tl_set:Nn + \l_tmpb_tl + { \str_upper_case:n { #1 } } + \tl_set:Nx + \l_tmpa_tl + { + markdownOption + \tl_head:f { \l_tmpb_tl } + \tl_tail:n { #1 } + } + \prop_get:NnNTF + \g__markdown_lua_option_types_prop + { #1 } + \l_tmpb_tl + { + \cs_if_free:cTF + { \l_tmpa_tl } + { } + { + \tl_case:Nn + \l_tmpb_tl + { + \c__markdown_lua_option_type_boolean + { + \tl_case:cnF + { \l_tmpa_tl } + { + \c__markdown_lua_option_value_true { } + \c__markdown_lua_option_value_false { } + } + { + \msg_error:nnxx + { markdown } + { failed-typecheck-for-boolean-lua-option } + { #1 } + { \l_tmpa_tl } + } + } + } + } + } + { + \msg_error:nnn + { markdown } + { undefined-lua-option } + { #1 } + } + } +\let\markdownPrepareLuaOptions=\__markdown_format_lua_options: +\def\markdownLuaOptions{{ \g__markdown_formatted_lua_options_tl }} +\ExplSyntaxOff \def\markdownPrepare{% local lfs = require("lfs") local cacheDir = "\markdownOptionCacheDir" @@ -558,11 +1877,42 @@ local md = require("markdown") local convert = md.new(\markdownLuaOptions) }% -\def\markdownIfOption#1#2#3{% - \begingroup - \def\next{true}% - \expandafter\ifx\csname markdownOption#1\endcsname\next - \endgroup#2\else\endgroup#3\fi}% +\ExplSyntaxOn +\tl_const:Nn \c__markdown_lua_option_value_true { true } +\tl_const:Nn \c__markdown_lua_option_value_false { false } +\cs_new:Nn \__markdown_if_option:nTF + { + \tl_set:Nn + \l_tmpb_tl + { \str_upper_case:n { #1 } } + \tl_set:Nx + \l_tmpa_tl + { + markdownOption + \tl_head:f { \l_tmpb_tl } + \tl_tail:n { #1 } + } + \cs_if_free:cTF + { \l_tmpa_tl } + { + \prop_get:NnN + \g__markdown_default_lua_options_prop + { #1 } + \l_tmpb_tl + } + { + \tl_set:Nf + \l_tmpb_tl + { \cs:w \l_tmpa_tl \cs_end: } + } + \tl_if_eq:NNTF + \l_tmpb_tl + \c__markdown_lua_option_value_true + { #2 } + { #3 } + } +\let\markdownIfOption=\__markdown_if_option:nTF +\ExplSyntaxOff \csname newread\endcsname\markdownInputFileStream \csname newwrite\endcsname\markdownOutputFileStream \begingroup @@ -578,7 +1928,7 @@ |catcode`|%=12@ |gdef|markdownReadAndConvert#1#2{@ |begingroup@ - |markdownIfOption{FrozenCache}{}{@ + |markdownIfOption{frozenCache}{}{@ |immediate|openout|markdownOutputFileStream@ |markdownOptionInputTempFileName|relax@ |markdownInfo{Buffering markdown input into the temporary @ @@ -589,7 +1939,7 @@ |catcode`| =12@ |markdownMakeOther@ |def|markdownReadAndConvertStripPercentSign##1{@ - |markdownIfOption{StripPercentSigns}{@ + |markdownIfOption{stripPercentSigns}{@ |if##1%@ |expandafter|expandafter|expandafter@ |markdownReadAndConvertProcessLine@ @@ -606,13 +1956,13 @@ }@ |def|markdownReadAndConvertProcessLine##1#1##2#1##3|relax{@ |ifx|relax##3|relax@ - |markdownIfOption{FrozenCache}{}{@ + |markdownIfOption{frozenCache}{}{@ |immediate|write|markdownOutputFileStream{##1}@ }@ |else@ |def^^M{@ |markdownInfo{The ending token sequence was found}@ - |markdownIfOption{FrozenCache}{}{@ + |markdownIfOption{frozenCache}{}{@ |immediate|closeout|markdownOutputFileStream@ }@ |endgroup@ @@ -728,7 +2078,7 @@ |gdef|markdownInput#1{% |begingroup |catcode`|%=12 - |markdownIfOption{FrozenCache}{% + |markdownIfOption{frozenCache}{% |ifnum|markdownFrozenCacheCounter=0|relax |markdownInfo{Reading frozen cache from "|markdownOptionFrozenCacheFileName"}% @@ -742,6 +2092,7 @@ |markdownInfo{Including markdown document "#1"}% |openin|markdownInputFileStream#1 |closein|markdownInputFileStream + |markdownPrepareLuaOptions |markdownLuaExecute{% |markdownPrepare local file = assert(io.open("#1", "r"), @@ -749,7 +2100,7 @@ local input = assert(file:read("*a")) assert(file:close()) print(convert(input:gsub("\r\n?", "\n") .. "\n"))}% - |markdownIfOption{FinalizeCache}{% + |markdownIfOption{finalizeCache}{% |global|advance|markdownFrozenCacheCounter by 1|relax }% }% |