diff options
Diffstat (limited to 'Master/texmf-dist/tex')
5 files changed, 1665 insertions, 658 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 }% }% diff --git a/Master/texmf-dist/tex/latex/markdown/markdown.sty b/Master/texmf-dist/tex/latex/markdown/markdown.sty index 8645918a346..a6c17ab3c2f 100644 --- a/Master/texmf-dist/tex/latex/markdown/markdown.sty +++ b/Master/texmf-dist/tex/latex/markdown/markdown.sty @@ -53,18 +53,22 @@ \newcommand\markdownSetup[1]{% \setkeys{markdownOptions}{#1}}% \newcommand\markdownSetupSnippet[2]{% - \@ifundefined - {markdownLaTeXSetupSnippet\markdownLaTeXThemeName#1}{% - \newtoks\next - \next={#2}% - \expandafter\let\csname markdownLaTeXSetupSnippet% - \markdownLaTeXThemeName#1\endcsname=\next - }{% + \markdownIfSnippetExists{#1}% + {% \markdownWarning {Redefined setup snippet \markdownLaTeXThemeName#1}% \csname markdownLaTeXSetupSnippet% \markdownLaTeXThemeName#1\endcsname={#2}% + }{% + \newtoks\next + \next={#2}% + \expandafter\let\csname markdownLaTeXSetupSnippet% + \markdownLaTeXThemeName#1\endcsname=\next }}% +\newcommand\markdownIfSnippetExists[3]{% + \@ifundefined + {markdownLaTeXSetupSnippet\markdownLaTeXThemeName#1}% + {#3}{#2}}% \newif\ifmarkdownLaTeXPlain \markdownLaTeXPlainfalse \define@key{markdownOptions}{plain}[true]{% @@ -89,14 +93,15 @@ \markdownLaTeXThemePackageName}{#1/}}% \@onlypreamble\KV@markdownOptions@theme \define@key{markdownOptions}{snippet}{% - \@ifundefined - {markdownLaTeXSetupSnippet#1}{% + \markdownIfSnippetExists{#1}% + {% + \expandafter\markdownSetup\expandafter{% + \the\csname markdownLaTeXSetupSnippet% + \markdownLaTeXThemeName#1\endcsname}% + }{% \markdownError {Can't invoke setup snippet #1}% {The setup snippet is undefined}% - }{% - \expandafter\markdownSetup\expandafter{% - \the\csname markdownLaTeXSetupSnippet#1\endcsname}% }% }% \define@key{markdownOptions}{helperScriptFileName}{% @@ -133,6 +138,8 @@ \def\markdownOptionDefinitionLists{#1}}% \define@key{markdownOptions}{eagerCache}[true]{% \def\markdownOptionEagerCache{#1}}% +\define@key{markdownOptions}{expectJekyllData}[true]{% + \def\markdownOptionExpectJekyllData{#1}}% \define@key{markdownOptions}{footnotes}[true]{% \def\markdownOptionFootnotes{#1}}% \define@key{markdownOptions}{fencedCode}[true]{% @@ -172,7 +179,7 @@ \define@key{markdownOptions}{taskLists}[true]{% \def\markdownOptionTaskLists{#1}}% \define@key{markdownOptions}{texComments}[true]{% - \def\markdownOptionTeXComments{#1}}% + \def\markdownOptionTexComments{#1}}% \define@key{markdownOptions}{tightLists}[true]{% \def\markdownOptionTightLists{#1}}% \define@key{markdownOptions}{underscores}[true]{% @@ -187,342 +194,97 @@ \DeclareOption{frozencache}{\markdownSetup{frozenCache}} \define@key{markdownOptions}{frozenCacheFileName}{% \def\markdownOptionFrozenCacheFileName{#1}}% -\define@key{markdownRenderers}{attributeIdentifier}{% - \renewcommand\markdownRendererAttributeIdentifier[1]{#1}}% -\define@key{markdownRenderers}{attributeClassName}{% - \renewcommand\markdownRendererAttributeClassName[1]{#1}}% -\define@key{markdownRenderers}{attributeKeyValue}{% - \renewcommand\markdownRendererAttributeKeyValue[2]{#1}}% -\define@key{markdownRenderers}{documentBegin}{% - \renewcommand\markdownRendererDocumentBegin{#1}}% -\define@key{markdownRenderers}{documentEnd}{% - \renewcommand\markdownRendererDocumentEnd{#1}}% -\define@key{markdownRenderers}{interblockSeparator}{% - \renewcommand\markdownRendererInterblockSeparator{#1}}% -\define@key{markdownRenderers}{lineBreak}{% - \renewcommand\markdownRendererLineBreak{#1}}% -\define@key{markdownRenderers}{ellipsis}{% - \renewcommand\markdownRendererEllipsis{#1}}% -\define@key{markdownRenderers}{headerAttributeContextBegin}{% - \renewcommand\markdownRendererHeaderAttributeContextBegin{#1}}% -\define@key{markdownRenderers}{headerAttributeContextEnd}{% - \renewcommand\markdownRendererHeaderAttributeContextEnd{#1}}% -\define@key{markdownRenderers}{nbsp}{% - \renewcommand\markdownRendererNbsp{#1}}% -\define@key{markdownRenderers}{leftBrace}{% - \renewcommand\markdownRendererLeftBrace{#1}}% -\define@key{markdownRenderers}{rightBrace}{% - \renewcommand\markdownRendererRightBrace{#1}}% -\define@key{markdownRenderers}{dollarSign}{% - \renewcommand\markdownRendererDollarSign{#1}}% -\define@key{markdownRenderers}{percentSign}{% - \renewcommand\markdownRendererPercentSign{#1}}% -\define@key{markdownRenderers}{ampersand}{% - \renewcommand\markdownRendererAmpersand{#1}}% -\define@key{markdownRenderers}{underscore}{% - \renewcommand\markdownRendererUnderscore{#1}}% -\define@key{markdownRenderers}{hash}{% - \renewcommand\markdownRendererHash{#1}}% -\define@key{markdownRenderers}{circumflex}{% - \renewcommand\markdownRendererCircumflex{#1}}% -\define@key{markdownRenderers}{backslash}{% - \renewcommand\markdownRendererBackslash{#1}}% -\define@key{markdownRenderers}{tilde}{% - \renewcommand\markdownRendererTilde{#1}}% -\define@key{markdownRenderers}{pipe}{% - \renewcommand\markdownRendererPipe{#1}}% -\define@key{markdownRenderers}{codeSpan}{% - \renewcommand\markdownRendererCodeSpan[1]{#1}}% -\define@key{markdownRenderers}{link}{% - \renewcommand\markdownRendererLink[4]{#1}}% -\define@key{markdownRenderers}{contentBlock}{% - \renewcommand\markdownRendererContentBlock[4]{#1}}% -\define@key{markdownRenderers}{contentBlockOnlineImage}{% - \renewcommand\markdownRendererContentBlockOnlineImage[4]{#1}}% -\define@key{markdownRenderers}{contentBlockCode}{% - \renewcommand\markdownRendererContentBlockCode[5]{#1}}% -\define@key{markdownRenderers}{image}{% - \renewcommand\markdownRendererImage[4]{#1}}% -\define@key{markdownRenderers}{ulBegin}{% - \renewcommand\markdownRendererUlBegin{#1}}% -\define@key{markdownRenderers}{ulBeginTight}{% - \renewcommand\markdownRendererUlBeginTight{#1}}% -\define@key{markdownRenderers}{ulItem}{% - \renewcommand\markdownRendererUlItem{#1}}% -\define@key{markdownRenderers}{ulItemEnd}{% - \renewcommand\markdownRendererUlItemEnd{#1}}% -\define@key{markdownRenderers}{ulEnd}{% - \renewcommand\markdownRendererUlEnd{#1}}% -\define@key{markdownRenderers}{ulEndTight}{% - \renewcommand\markdownRendererUlEndTight{#1}}% -\define@key{markdownRenderers}{olBegin}{% - \renewcommand\markdownRendererOlBegin{#1}}% -\define@key{markdownRenderers}{olBeginTight}{% - \renewcommand\markdownRendererOlBeginTight{#1}}% -\define@key{markdownRenderers}{olItem}{% - \renewcommand\markdownRendererOlItem{#1}}% -\define@key{markdownRenderers}{olItemWithNumber}{% - \renewcommand\markdownRendererOlItemWithNumber[1]{#1}}% -\define@key{markdownRenderers}{olItemEnd}{% - \renewcommand\markdownRendererOlItemEnd{#1}}% -\define@key{markdownRenderers}{olEnd}{% - \renewcommand\markdownRendererOlEnd{#1}}% -\define@key{markdownRenderers}{olEndTight}{% - \renewcommand\markdownRendererOlEndTight{#1}}% -\define@key{markdownRenderers}{dlBegin}{% - \renewcommand\markdownRendererDlBegin{#1}}% -\define@key{markdownRenderers}{dlBeginTight}{% - \renewcommand\markdownRendererDlBeginTight{#1}}% -\define@key{markdownRenderers}{dlItem}{% - \renewcommand\markdownRendererDlItem[1]{#1}}% -\define@key{markdownRenderers}{dlItemEnd}{% - \renewcommand\markdownRendererDlItemEnd{#1}}% -\define@key{markdownRenderers}{dlDefinitionBegin}{% - \renewcommand\markdownRendererDlDefinitionBegin{#1}}% -\define@key{markdownRenderers}{dlDefinitionEnd}{% - \renewcommand\markdownRendererDlDefinitionEnd{#1}}% -\define@key{markdownRenderers}{dlEnd}{% - \renewcommand\markdownRendererDlEnd{#1}}% -\define@key{markdownRenderers}{dlEndTight}{% - \renewcommand\markdownRendererDlEndTight{#1}}% -\define@key{markdownRenderers}{emphasis}{% - \renewcommand\markdownRendererEmphasis[1]{#1}}% -\define@key{markdownRenderers}{strongEmphasis}{% - \renewcommand\markdownRendererStrongEmphasis[1]{#1}}% -\define@key{markdownRenderers}{blockQuoteBegin}{% - \renewcommand\markdownRendererBlockQuoteBegin{#1}}% -\define@key{markdownRenderers}{blockQuoteEnd}{% - \renewcommand\markdownRendererBlockQuoteEnd{#1}}% -\define@key{markdownRenderers}{inputVerbatim}{% - \renewcommand\markdownRendererInputVerbatim[1]{#1}}% -\define@key{markdownRenderers}{inputFencedCode}{% - \renewcommand\markdownRendererInputFencedCode[2]{#1}}% -\define@key{markdownRenderers}{jekyllDataBoolean}{% - \renewcommand\markdownRendererJekyllDataBoolean[2]{#1}}% -\define@key{markdownRenderers}{jekyllDataEmpty}{% - \renewcommand\markdownRendererJekyllDataEmpty[1]{#1}}% -\define@key{markdownRenderers}{jekyllDataNumber}{% - \renewcommand\markdownRendererJekyllDataNumber[2]{#1}}% -\define@key{markdownRenderers}{jekyllDataString}{% - \renewcommand\markdownRendererJekyllDataString[2]{#1}}% -\define@key{markdownRenderers}{jekyllDataBegin}{% - \renewcommand\markdownRendererJekyllDataBegin{#1}}% -\define@key{markdownRenderers}{jekyllDataEnd}{% - \renewcommand\markdownRendererJekyllDataEnd{#1}}% -\define@key{markdownRenderers}{jekyllDataSequenceBegin}{% - \renewcommand\markdownRendererJekyllDataSequenceBegin[2]{#1}}% -\define@key{markdownRenderers}{jekyllDataSequenceEnd}{% - \renewcommand\markdownRendererJekyllDataSequenceEnd{#1}}% -\define@key{markdownRenderers}{jekyllDataMappingBegin}{% - \renewcommand\markdownRendererJekyllDataMappingBegin[2]{#1}}% -\define@key{markdownRenderers}{jekyllDataMappingEnd}{% - \renewcommand\markdownRendererJekyllDataMappingEnd{#1}}% -\define@key{markdownRenderers}{headingOne}{% - \renewcommand\markdownRendererHeadingOne[1]{#1}}% -\define@key{markdownRenderers}{headingTwo}{% - \renewcommand\markdownRendererHeadingTwo[1]{#1}}% -\define@key{markdownRenderers}{headingThree}{% - \renewcommand\markdownRendererHeadingThree[1]{#1}}% -\define@key{markdownRenderers}{headingFour}{% - \renewcommand\markdownRendererHeadingFour[1]{#1}}% -\define@key{markdownRenderers}{headingFive}{% - \renewcommand\markdownRendererHeadingFive[1]{#1}}% -\define@key{markdownRenderers}{headingSix}{% - \renewcommand\markdownRendererHeadingSix[1]{#1}}% -\define@key{markdownRenderers}{horizontalRule}{% - \renewcommand\markdownRendererHorizontalRule{#1}}% -\define@key{markdownRenderers}{footnote}{% - \renewcommand\markdownRendererFootnote[1]{#1}}% -\define@key{markdownRenderers}{cite}{% - \renewcommand\markdownRendererCite[1]{#1}}% -\define@key{markdownRenderers}{textCite}{% - \renewcommand\markdownRendererTextCite[1]{#1}}% -\define@key{markdownRenderers}{table}{% - \renewcommand\markdownRendererTable[3]{#1}}% -\define@key{markdownRenderers}{inlineHtmlComment}{% - \renewcommand\markdownRendererInlineHtmlComment[1]{#1}}% -\define@key{markdownRenderers}{blockHtmlCommentBegin}{% - \renewcommand\markdownRendererBlockHtmlCommentBegin{#1}}% -\define@key{markdownRenderers}{blockHtmlCommentEnd}{% - \renewcommand\markdownRendererBlockHtmlCommentEnd{#1}}% -\define@key{markdownRenderers}{inlineHtmlTag}{% - \renewcommand\markdownRendererInlineHtmlTag[1]{#1}}% -\define@key{markdownRenderers}{inputBlockHtmlElement}{% - \renewcommand\markdownRendererInputBlockHtmlElement[1]{#1}}% -\define@key{markdownRenderers}{tickedBox}{% - \renewcommand\markdownRendererTickedBox{#1}}% -\define@key{markdownRenderers}{halfTickedBox}{% - \renewcommand\markdownRendererHalfTickedBox{#1}}% -\define@key{markdownRenderers}{untickedBox}{% - \renewcommand\markdownRendererUntickedBox{#1}}% -\define@key{markdownRendererPrototypes}{attributeIdentifier}{% - \renewcommand\markdownRendererAttributeIdentifierPrototype[1]{#1}}% -\define@key{markdownRendererPrototypes}{attributeClassName}{% - \renewcommand\markdownRendererAttributeClassNamePrototype[1]{#1}}% -\define@key{markdownRendererPrototypes}{attributeKeyValue}{% - \renewcommand\markdownRendererAttributeKeyValuePrototype[2]{#1}}% -\define@key{markdownRendererPrototypes}{documentBegin}{% - \renewcommand\markdownRendererDocumentBeginPrototype{#1}}% -\define@key{markdownRendererPrototypes}{documentEnd}{% - \renewcommand\markdownRendererDocumentEndPrototype{#1}}% -\define@key{markdownRendererPrototypes}{interblockSeparator}{% - \renewcommand\markdownRendererInterblockSeparatorPrototype{#1}}% -\define@key{markdownRendererPrototypes}{lineBreak}{% - \renewcommand\markdownRendererLineBreakPrototype{#1}}% -\define@key{markdownRendererPrototypes}{ellipsis}{% - \renewcommand\markdownRendererEllipsisPrototype{#1}}% -\define@key{markdownRendererPrototypes}{headerAttributeContextBegin}{% - \renewcommand\markdownRendererHeaderAttributeContextBeginPrototype{#1}}% -\define@key{markdownRendererPrototypes}{headerAttributeContextEnd}{% - \renewcommand\markdownRendererHeaderAttributeContextEndPrototype{#1}}% -\define@key{markdownRendererPrototypes}{nbsp}{% - \renewcommand\markdownRendererNbspPrototype{#1}}% -\define@key{markdownRendererPrototypes}{leftBrace}{% - \renewcommand\markdownRendererLeftBracePrototype{#1}}% -\define@key{markdownRendererPrototypes}{rightBrace}{% - \renewcommand\markdownRendererRightBracePrototype{#1}}% -\define@key{markdownRendererPrototypes}{dollarSign}{% - \renewcommand\markdownRendererDollarSignPrototype{#1}}% -\define@key{markdownRendererPrototypes}{percentSign}{% - \renewcommand\markdownRendererPercentSignPrototype{#1}}% -\define@key{markdownRendererPrototypes}{ampersand}{% - \renewcommand\markdownRendererAmpersandPrototype{#1}}% -\define@key{markdownRendererPrototypes}{underscore}{% - \renewcommand\markdownRendererUnderscorePrototype{#1}}% -\define@key{markdownRendererPrototypes}{hash}{% - \renewcommand\markdownRendererHashPrototype{#1}}% -\define@key{markdownRendererPrototypes}{circumflex}{% - \renewcommand\markdownRendererCircumflexPrototype{#1}}% -\define@key{markdownRendererPrototypes}{backslash}{% - \renewcommand\markdownRendererBackslashPrototype{#1}}% -\define@key{markdownRendererPrototypes}{tilde}{% - \renewcommand\markdownRendererTildePrototype{#1}}% -\define@key{markdownRendererPrototypes}{pipe}{% - \renewcommand\markdownRendererPipePrototype{#1}}% -\define@key{markdownRendererPrototypes}{codeSpan}{% - \renewcommand\markdownRendererCodeSpanPrototype[1]{#1}}% -\define@key{markdownRendererPrototypes}{link}{% - \renewcommand\markdownRendererLinkPrototype[4]{#1}}% -\define@key{markdownRendererPrototypes}{contentBlock}{% - \renewcommand\markdownRendererContentBlockPrototype[4]{#1}}% -\define@key{markdownRendererPrototypes}{contentBlockOnlineImage}{% - \renewcommand\markdownRendererContentBlockOnlineImagePrototype[4]{#1}}% -\define@key{markdownRendererPrototypes}{contentBlockCode}{% - \renewcommand\markdownRendererContentBlockCodePrototype[5]{#1}}% -\define@key{markdownRendererPrototypes}{image}{% - \renewcommand\markdownRendererImagePrototype[4]{#1}}% -\define@key{markdownRendererPrototypes}{ulBegin}{% - \renewcommand\markdownRendererUlBeginPrototype{#1}}% -\define@key{markdownRendererPrototypes}{ulBeginTight}{% - \renewcommand\markdownRendererUlBeginTightPrototype{#1}}% -\define@key{markdownRendererPrototypes}{ulItem}{% - \renewcommand\markdownRendererUlItemPrototype{#1}}% -\define@key{markdownRendererPrototypes}{ulItemEnd}{% - \renewcommand\markdownRendererUlItemEndPrototype{#1}}% -\define@key{markdownRendererPrototypes}{ulEnd}{% - \renewcommand\markdownRendererUlEndPrototype{#1}}% -\define@key{markdownRendererPrototypes}{ulEndTight}{% - \renewcommand\markdownRendererUlEndTightPrototype{#1}}% -\define@key{markdownRendererPrototypes}{olBegin}{% - \renewcommand\markdownRendererOlBeginPrototype{#1}}% -\define@key{markdownRendererPrototypes}{olBeginTight}{% - \renewcommand\markdownRendererOlBeginTightPrototype{#1}}% -\define@key{markdownRendererPrototypes}{olItem}{% - \renewcommand\markdownRendererOlItemPrototype{#1}}% -\define@key{markdownRendererPrototypes}{olItemWithNumber}{% - \renewcommand\markdownRendererOlItemWithNumberPrototype[1]{#1}}% -\define@key{markdownRendererPrototypes}{olItemEnd}{% - \renewcommand\markdownRendererOlItemEndPrototype{#1}}% -\define@key{markdownRendererPrototypes}{olEnd}{% - \renewcommand\markdownRendererOlEndPrototype{#1}}% -\define@key{markdownRendererPrototypes}{olEndTight}{% - \renewcommand\markdownRendererOlEndTightPrototype{#1}}% -\define@key{markdownRendererPrototypes}{dlBegin}{% - \renewcommand\markdownRendererDlBeginPrototype{#1}}% -\define@key{markdownRendererPrototypes}{dlBeginTight}{% - \renewcommand\markdownRendererDlBeginTightPrototype{#1}}% -\define@key{markdownRendererPrototypes}{dlItem}{% - \renewcommand\markdownRendererDlItemPrototype[1]{#1}}% -\define@key{markdownRendererPrototypes}{dlItemEnd}{% - \renewcommand\markdownRendererDlItemEndPrototype{#1}}% -\define@key{markdownRendererPrototypes}{dlDefinitionBegin}{% - \renewcommand\markdownRendererDlDefinitionBeginPrototype{#1}}% -\define@key{markdownRendererPrototypes}{dlDefinitionEnd}{% - \renewcommand\markdownRendererDlDefinitionEndPrototype{#1}}% -\define@key{markdownRendererPrototypes}{dlEnd}{% - \renewcommand\markdownRendererDlEndPrototype{#1}}% -\define@key{markdownRendererPrototypes}{dlEndTight}{% - \renewcommand\markdownRendererDlEndTightPrototype{#1}}% -\define@key{markdownRendererPrototypes}{emphasis}{% - \renewcommand\markdownRendererEmphasisPrototype[1]{#1}}% -\define@key{markdownRendererPrototypes}{strongEmphasis}{% - \renewcommand\markdownRendererStrongEmphasisPrototype[1]{#1}}% -\define@key{markdownRendererPrototypes}{blockQuoteBegin}{% - \renewcommand\markdownRendererBlockQuoteBeginPrototype{#1}}% -\define@key{markdownRendererPrototypes}{blockQuoteEnd}{% - \renewcommand\markdownRendererBlockQuoteEndPrototype{#1}}% -\define@key{markdownRendererPrototypes}{inputVerbatim}{% - \renewcommand\markdownRendererInputVerbatimPrototype[1]{#1}}% -\define@key{markdownRendererPrototypes}{inputFencedCode}{% - \renewcommand\markdownRendererInputFencedCodePrototype[2]{#1}}% -\define@key{markdownRendererPrototypes}{jekyllDataBoolean}{% - \renewcommand\markdownRendererJekyllDataBooleanPrototype[2]{#1}}% -\define@key{markdownRendererPrototypes}{jekyllDataEmpty}{% - \renewcommand\markdownRendererJekyllDataEmptyPrototype[1]{#1}}% -\define@key{markdownRendererPrototypes}{jekyllDataNumber}{% - \renewcommand\markdownRendererJekyllDataNumberPrototype[2]{#1}}% -\define@key{markdownRendererPrototypes}{jekyllDataString}{% - \renewcommand\markdownRendererJekyllDataStringPrototype[2]{#1}}% -\define@key{markdownRendererPrototypes}{jekyllDataBegin}{% - \renewcommand\markdownRendererJekyllDataBeginPrototype{#1}}% -\define@key{markdownRendererPrototypes}{jekyllDataEnd}{% - \renewcommand\markdownRendererJekyllDataEndPrototype{#1}}% -\define@key{markdownRendererPrototypes}{jekyllDataSequenceBegin}{% - \renewcommand\markdownRendererJekyllDataSequenceBeginPrototype[2]{#1}}% -\define@key{markdownRendererPrototypes}{jekyllDataSequenceEnd}{% - \renewcommand\markdownRendererJekyllDataSequenceEndPrototype{#1}}% -\define@key{markdownRendererPrototypes}{jekyllDataMappingBegin}{% - \renewcommand\markdownRendererJekyllDataMappingBeginPrototype[2]{#1}}% -\define@key{markdownRendererPrototypes}{jekyllDataMappingEnd}{% - \renewcommand\markdownRendererJekyllDataMappingEndPrototype{#1}}% -\define@key{markdownRendererPrototypes}{headingOne}{% - \renewcommand\markdownRendererHeadingOnePrototype[1]{#1}}% -\define@key{markdownRendererPrototypes}{headingTwo}{% - \renewcommand\markdownRendererHeadingTwoPrototype[1]{#1}}% -\define@key{markdownRendererPrototypes}{headingThree}{% - \renewcommand\markdownRendererHeadingThreePrototype[1]{#1}}% -\define@key{markdownRendererPrototypes}{headingFour}{% - \renewcommand\markdownRendererHeadingFourPrototype[1]{#1}}% -\define@key{markdownRendererPrototypes}{headingFive}{% - \renewcommand\markdownRendererHeadingFivePrototype[1]{#1}}% -\define@key{markdownRendererPrototypes}{headingSix}{% - \renewcommand\markdownRendererHeadingSixPrototype[1]{#1}}% -\define@key{markdownRendererPrototypes}{horizontalRule}{% - \renewcommand\markdownRendererHorizontalRulePrototype{#1}}% -\define@key{markdownRendererPrototypes}{footnote}{% - \renewcommand\markdownRendererFootnotePrototype[1]{#1}}% -\define@key{markdownRendererPrototypes}{cite}{% - \renewcommand\markdownRendererCitePrototype[1]{#1}}% -\define@key{markdownRendererPrototypes}{textCite}{% - \renewcommand\markdownRendererTextCitePrototype[1]{#1}}% -\define@key{markdownRendererPrototypes}{table}{% - \renewcommand\markdownRendererTablePrototype[3]{#1}}% -\define@key{markdownRendererPrototypes}{inlineHtmlComment}{% - \renewcommand\markdownRendererInlineHtmlCommentPrototype[1]{#1}}% -\define@key{markdownRendererPrototypes}{blockHtmlCommentBegin}{% - \renewcommand\markdownRendererBlockHtmlCommentBeginPrototype{#1}}% -\define@key{markdownRendererPrototypes}{blockHtmlCommentEnd}{% - \renewcommand\markdownRendererBlockHtmlCommentEndPrototype{#1}}% -\define@key{markdownRendererPrototypes}{inlineHtmlTag}{% - \renewcommand\markdownRendererInlineHtmlTagPrototype[1]{#1}}% -\define@key{markdownRendererPrototypes}{inputBlockHtmlElement}{% - \renewcommand\markdownRendererInputBlockHtmlElementPrototype[1]{#1}}% -\define@key{markdownRendererPrototypes}{tickedBox}{% - \renewcommand\markdownRendererTickedBoxPrototype{#1}}% -\define@key{markdownRendererPrototypes}{halfTickedBox}{% - \renewcommand\markdownRendererHalfTickedBoxPrototype{#1}}% -\define@key{markdownRendererPrototypes}{untickedBox}{% - \renewcommand\markdownRendererUntickedBoxPrototype{#1}}% +\ExplSyntaxOn +\cs_new:Nn \__markdown_latex_define_renderers: + { + \seq_map_function:NN + \g__markdown_renderers_seq + \__markdown_latex_define_renderer:n + } +\cs_new:Nn \__markdown_latex_define_renderer:n + { + \tl_set:Nn + \l_tmpb_tl + { \str_upper_case:n { #1 } } + \tl_set:Nx + \l_tmpa_tl + { + markdownRenderer + \tl_head:f { \l_tmpb_tl } + \tl_tail:n { #1 } + } + \prop_get:NnN + \g__markdown_renderer_arities_prop + { #1 } + \l_tmpb_tl + \__markdown_latex_define_renderer:ncV + { #1 } + { \l_tmpa_tl } + \l_tmpb_tl + } +\cs_new:Nn \__markdown_latex_define_renderer:nNn + { + \define@key + { markdownRenderers } + { #1 } + { + \cs_generate_from_arg_count:NNnn + #2 + \cs_set:Npn + { #3 } + { ##1 } + } + } +\cs_generate_variant:Nn + \__markdown_latex_define_renderer:nNn + { ncV } +\ExplSyntaxOff +\ExplSyntaxOn +\cs_new:Nn \__markdown_latex_define_renderer_prototypes: + { + \seq_map_function:NN + \g__markdown_renderers_seq + \__markdown_latex_define_renderer_prototype:n + } +\cs_new:Nn \__markdown_latex_define_renderer_prototype:n + { + \tl_set:Nn + \l_tmpb_tl + { \str_upper_case:n { #1 } } + \tl_set:Nx + \l_tmpa_tl + { + markdownRenderer + \tl_head:f { \l_tmpb_tl } + \tl_tail:n { #1 } + Prototype + } + \prop_get:NnN + \g__markdown_renderer_arities_prop + { #1 } + \l_tmpb_tl + \__markdown_latex_define_renderer_prototype:ncV + { #1 } + { \l_tmpa_tl } + \l_tmpb_tl + } +\cs_new:Nn \__markdown_latex_define_renderer_prototype:nNn + { + \define@key + { markdownRendererPrototypes } + { #1 } + { + \cs_generate_from_arg_count:NNnn + #2 + \cs_set:Npn + { #3 } + { ##1 } + } + } +\cs_generate_variant:Nn + \__markdown_latex_define_renderer_prototype:nNn + { ncV } +\ExplSyntaxOff \newcommand\markdownInfo[1]{\PackageInfo{markdown}{#1}}% \newcommand\markdownWarning[1]{\PackageWarning{markdown}{#1}}% \newcommand\markdownError[2]{\PackageError{markdown}{#1}{#2.}}% @@ -530,6 +292,10 @@ \def\markdownVersionSpace{ }% \ProvidesPackage{markdown}[\markdownLastModified\markdownVersionSpace v% \markdownVersion\markdownVersionSpace markdown renderer]% +\ExplSyntaxOn +\__markdown_latex_define_renderers: +\__markdown_latex_define_renderer_prototypes: +\ExplSyntaxOff \let\markdownInputPlainTeX\markdownInput \renewcommand\markdownInput[2][]{% \begingroup @@ -590,16 +356,11 @@ \define@key{markdownOptions}{rendererPrototypes}{% \setkeys{markdownRendererPrototypes}{#1}% \def\KV@prefix{KV@markdownOptions@}}% +\define@key{markdownOptions}{code}{#1}% \ifmarkdownLaTeXPlain\else -\RequirePackage{ifthen} - -\ifx\markdownOptionTightLists\undefined - \@ifclassloaded{beamer}{}{% - \RequirePackage{paralist}}% -\else - \ifthenelse{\equal{\markdownOptionTightLists}{false}}{}{% - \RequirePackage{paralist}}% -\fi +\markdownIfOption{tightLists}{ + \@ifclassloaded{beamer}{}{\RequirePackage{paralist}}% +}{} \@ifpackageloaded{paralist}{ \markdownSetup{rendererPrototypes={ ulBeginTight = {\begin{compactitem}}, @@ -616,7 +377,7 @@ olEndTight = {\markdownRendererOlEnd}, dlBeginTight = {\markdownRendererDlBegin}, dlEndTight = {\markdownRendererDlEnd}}}} -\RequirePackage{amsmath} +\RequirePackage{amsmath,ifthen} \@ifpackageloaded{unicode-math}{ \markdownSetup{rendererPrototypes={ untickedBox = {$\mdlgwhtsquare$}, @@ -1122,70 +883,6 @@ \fi\markdownLaTeXRenderTableCell} \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: - } \keys_define:nn { markdown/jekyllData } { @@ -1193,64 +890,6 @@ date .code:n = { \date{#1} }, title .code:n = { \title{#1} }, } -\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: - } -\markdownSetup{ - rendererPrototypes = { - jekyllDataSequenceBegin = { - \markdown_jekyll_data_push:nN - { #1 } - \c__markdown_jekyll_data_sequence_tl - }, - jekyllDataMappingBegin = { - \markdown_jekyll_data_push:nN - { #1 } - \c__markdown_jekyll_data_mapping_tl - }, - jekyllDataSequenceEnd = { - \markdown_jekyll_data_pop: - }, - jekyllDataMappingEnd = { - \markdown_jekyll_data_pop: - }, - jekyllDataBoolean = { - \markdown_jekyll_data_set_keyvals:nn - { #1 } - { #2 } - }, - jekyllDataEmpty = { }, - jekyllDataNumber = { - \markdown_jekyll_data_set_keyvals:nn - { #1 } - { #2 } - }, - jekyllDataString = { - \markdown_jekyll_data_set_keyvals:nn - { #1 } - { #2 } - }, - }, -} \providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion} \markdownSetup{ rendererPrototypes = { @@ -1271,7 +910,6 @@ }, }, } - \ExplSyntaxOff \newcommand\markdownMakeOther{% \count0=128\relax diff --git a/Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_dot.sty b/Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_dot.sty index 92e9f8ffd68..fe77cc14fa0 100644 --- a/Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_dot.sty +++ b/Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_dot.sty @@ -53,7 +53,7 @@ \renewcommand\markdownRendererInputFencedCode[2]{% \def\next##1 ##2\relax{% \ifthenelse{\equal{##1}{dot}}{% - \markdownIfOption{FrozenCache}{}{% + \markdownIfOption{frozenCache}{}{% \immediate\write18{% if ! test -e #1.pdf.source || ! diff #1 #1.pdf.source; then diff --git a/Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_graphicx_http.sty b/Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_graphicx_http.sty index 539d34bc5d6..9717c70a537 100644 --- a/Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_graphicx_http.sty +++ b/Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_graphicx_http.sty @@ -62,7 +62,7 @@ \global\def\markdownRendererImagePrototype#1#2#3#4{^^A \begingroup \edef\filename{\markdown@witiko@graphicx@http@filename}^^A - \markdownIfOption{FrozenCache}{}{^^A + \markdownIfOption{frozenCache}{}{^^A \immediate\write18{^^A if printf '%s' "#3" | grep -q -E '^https?:'; then diff --git a/Master/texmf-dist/tex/luatex/markdown/markdown.lua b/Master/texmf-dist/tex/luatex/markdown/markdown.lua index f3c46b02906..6955982c3f2 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.14.1-0-gb933d81", + version = "2.15.0-0-g9296cf1", 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", @@ -89,6 +89,7 @@ defaultOptions.contentBlocks = false defaultOptions.contentBlocksLanguageMap = "markdown-languages.json" defaultOptions.definitionLists = false defaultOptions.eagerCache = true +defaultOptions.expectJekyllData = false defaultOptions.fencedCode = false defaultOptions.finalizeCache = false defaultOptions.footnotes = false @@ -3477,8 +3478,6 @@ parsers.between = function(p, starter, ender) end parsers.urlchar = parsers.anyescaped - parsers.newline - parsers.more -parsers.Block = V("Block") - parsers.OnlineImageURL = parsers.leader * parsers.onlineimageurl @@ -3608,13 +3607,13 @@ function M.reader.new(writer, options) = create_parser("parse_blocks", function() return larsers.blocks - end, false) + end, true) - local parse_blocks_toplevel - = create_parser("parse_blocks_toplevel", + local parse_blocks_nested + = create_parser("parse_blocks_nested", function() - return larsers.blocks_toplevel - end, true) + return larsers.blocks_nested + end, false) local parse_inlines = create_parser("parse_inlines", @@ -3703,7 +3702,7 @@ function M.reader.new(writer, options) return writer.defer_call(function() local found = rawnotes[normalize_tag(ref)] if found then - return writer.note(parse_blocks_toplevel(found)) + return writer.note(parse_blocks_nested(found)) else return {"[", parse_inlines("^" .. ref), "]"} end @@ -4001,7 +4000,7 @@ larsers.PipeTable = Ct(larsers.table_row * parsers.newline * parsers.contentblock_tail / writer.contentblock - larsers.DisplayHtml = (parsers.htmlcomment / parse_blocks) + larsers.DisplayHtml = (parsers.htmlcomment / parse_blocks_nested) / writer.block_html_comment + parsers.emptyelt_block / writer.block_html_element + parsers.openelt_exact("hr") / writer.block_html_element @@ -4019,21 +4018,40 @@ larsers.PipeTable = Ct(larsers.table_row * parsers.newline expandtabs(code)) end - larsers.JekyllData = P("---") + larsers.JekyllData = Cmt( C((parsers.line - P("---") - P("..."))^0) + , function(s, i, text) + local data + local ran_ok, error = 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 parse_blocks_nested(s) + end, nil) + else + return false + end + end + ) + + larsers.UnexpectedJekyllData + = P("---") * parsers.blankline / 0 * #(-parsers.blankline) -- if followed by blank, it's an hrule - * C((parsers.line - P("---") - P("..."))^0) + * larsers.JekyllData * (P("---") + P("...")) - / function(text) - local tinyyaml = require("markdown-tinyyaml") - data = tinyyaml.parse(text,{timestamps=false}) - return writer.jekyllData(data, function(s) - return parse_blocks(s) - end, nil) - end + + larsers.ExpectedJekyllData + = ( P("---") + * parsers.blankline / 0 + * #(-parsers.blankline) -- if followed by blank, it's an hrule + )^-1 + * larsers.JekyllData + * (P("---") + P("..."))^-1 larsers.Blockquote = Cs(larsers.blockquote_body^1) - / parse_blocks_toplevel / writer.blockquote + / parse_blocks_nested / writer.blockquote larsers.HorizontalRule = ( parsers.lineof(parsers.asterisk) + parsers.lineof(parsers.dash) @@ -4043,15 +4061,6 @@ larsers.PipeTable = Ct(larsers.table_row * parsers.newline larsers.Reference = parsers.define_reference_parser / register_link larsers.Paragraph = parsers.nonindentspace * Ct(parsers.Inline^1) - * parsers.newline - * ( parsers.blankline^1 - + #parsers.hash - + #(parsers.leader * parsers.more * parsers.space^-1) - ) - / writer.paragraph - - larsers.ToplevelParagraph - = parsers.nonindentspace * Ct(parsers.Inline^1) * ( parsers.newline * ( parsers.blankline^1 + #parsers.hash @@ -4092,7 +4101,7 @@ larsers.PipeTable = Ct(larsers.table_row * parsers.newline larsers.TightListItem = function(starter) return -larsers.HorizontalRule * (Cs(starter / "" * larsers.tickbox^-1 * larsers.ListBlock * larsers.NestedList^-1) - / parse_blocks) + / parse_blocks_nested) * -(parsers.blanklines * parsers.indent) end @@ -4101,7 +4110,7 @@ larsers.PipeTable = Ct(larsers.table_row * parsers.newline * Cs( starter / "" * larsers.tickbox^-1 * larsers.ListBlock * Cc("\n") * (larsers.NestedList + larsers.ListContinuationBlock^0) * (parsers.blanklines / "\n\n") - ) / parse_blocks + ) / parse_blocks_nested end larsers.BulletList = ( Ct(larsers.TightListItem(parsers.bullet)^1) * Cc(true) @@ -4138,12 +4147,12 @@ larsers.PipeTable = Ct(larsers.table_row * parsers.newline larsers.DefinitionListItemLoose = C(parsers.line) * parsers.skipblanklines * Ct((parsers.defstart * parsers.indented_blocks(parsers.dlchunk) - / parse_blocks_toplevel)^1) + / parse_blocks_nested)^1) * Cc(false) / definition_list_item larsers.DefinitionListItemTight = C(parsers.line) * Ct((parsers.defstart * parsers.dlchunk - / parse_blocks)^1) + / parse_blocks_nested)^1) * Cc(true) / definition_list_item larsers.DefinitionList = ( Ct(larsers.DefinitionListItemLoose^1) * Cc(false) @@ -4218,17 +4227,22 @@ larsers.PipeTable = Ct(larsers.table_row * parsers.newline local syntax = { "Blocks", - Blocks = larsers.Blank^0 * parsers.Block^-1 - * (larsers.Blank^0 / writer.interblocksep - * parsers.Block)^0 - * larsers.Blank^0 * parsers.eof, + Blocks = ( V("ExpectedJekyllData") + * (V("Blank")^0 / writer.interblocksep) + )^-1 + * V("Blank")^0 + * V("Block")^-1 + * (V("Blank")^0 / writer.interblocksep + * V("Block"))^0 + * V("Blank")^0 * parsers.eof, Blank = larsers.Blank, - JekyllData = larsers.JekyllData, + UnexpectedJekyllData = larsers.UnexpectedJekyllData, + ExpectedJekyllData = larsers.ExpectedJekyllData, Block = V("ContentBlock") - + V("JekyllData") + + V("UnexpectedJekyllData") + V("Blockquote") + V("PipeTable") + V("Verbatim") @@ -4357,7 +4371,11 @@ larsers.PipeTable = Ct(larsers.table_row * parsers.newline end if not options.jekyllData then - syntax.JekyllData = parsers.fail + syntax.UnexpectedJekyllData = parsers.fail + end + + if not options.jekyllData or not options.expectJekyllData then + syntax.ExpectedJekyllData = parsers.fail end if options.preserveTabs then @@ -4376,9 +4394,9 @@ larsers.PipeTable = Ct(larsers.table_row * parsers.newline syntax.AutoLinkRelativeReference = parsers.fail end - local blocks_toplevel_t = util.table_copy(syntax) - blocks_toplevel_t.Paragraph = larsers.ToplevelParagraph - larsers.blocks_toplevel = Ct(blocks_toplevel_t) + local blocks_nested_t = util.table_copy(syntax) + blocks_nested_t.ExpectedJekyllData = parsers.fail + larsers.blocks_nested = Ct(blocks_nested_t) larsers.blocks = Ct(syntax) @@ -4418,7 +4436,7 @@ larsers.PipeTable = Ct(larsers.table_row * parsers.newline local salt = table.concat(opt_string, ",") .. "," .. metadata.version local output local function convert(input) - local document = parse_blocks_toplevel(input) + local document = parse_blocks(input) return util.rope_to_string(writer.document(document)) end if options.eagerCache or options.finalizeCache then |