summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/markdown
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2024-04-30 20:02:14 +0000
committerKarl Berry <karl@freefriends.org>2024-04-30 20:02:14 +0000
commitca30fcf4913c32febbfb97abd72219b3e69501e4 (patch)
tree9ddee84f9374f5462ee9b54a3713d062db6885e8 /Master/texmf-dist/tex/generic/markdown
parentb3669c79c87b055df515bf320be2a78fb0baf956 (diff)
markdown (30apr24)
git-svn-id: svn://tug.org/texlive/trunk@71137 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic/markdown')
-rw-r--r--Master/texmf-dist/tex/generic/markdown/markdown.tex381
1 files changed, 275 insertions, 106 deletions
diff --git a/Master/texmf-dist/tex/generic/markdown/markdown.tex b/Master/texmf-dist/tex/generic/markdown/markdown.tex
index 22eb36e4fba..6616a6ec98f 100644
--- a/Master/texmf-dist/tex/generic/markdown/markdown.tex
+++ b/Master/texmf-dist/tex/generic/markdown/markdown.tex
@@ -572,10 +572,11 @@
{ boolean }
{ true }
\ExplSyntaxOff
-\def\markdownLastModified{2024-04-04}%
-\def\markdownVersion{3.4.3-0-ge2c6be1a}%
+\def\markdownLastModified{2024-04-29}%
+\def\markdownVersion{3.5.0-0-gfd01a252}%
\let\markdownBegin\relax
\let\markdownEnd\relax
+\let\markinline\relax
\let\markdownInput\relax
\let\markdownEscape\relax
\ExplSyntaxOn
@@ -2505,6 +2506,8 @@
}
\tl_new:N
\l__markdown_renderer_definition_tl
+\bool_new:N
+ \g__markdown_appending_renderer_bool
\cs_new:Nn \__markdown_define_renderer:nNn
{
\keys_define:nn
@@ -2518,6 +2521,17 @@
{ \cP\#0 }
{ #1 }
\l__markdown_renderer_definition_tl
+ \bool_if:NT
+ \g__markdown_appending_renderer_bool
+ {
+ \__markdown_tl_set_from_cs:NNn
+ \l_tmpa_tl
+ #2
+ { #3 }
+ \tl_put_left:NV
+ \l__markdown_renderer_definition_tl
+ \l_tmpa_tl
+ }
\cs_generate_from_arg_count:NNnV
#2
\cs_set:Npn
@@ -2526,12 +2540,49 @@
},
}
}
+\cs_new_protected:Nn
+ \__markdown_tl_set_from_cs:NNn
+ {
+ \tl_set:Nn
+ \l_tmpa_tl
+ { #2 }
+ \int_step_inline:nn
+ { #3 }
+ {
+ \exp_args:NNc
+ \tl_put_right:Nn
+ \l_tmpa_tl
+ { __markdown_tl_set_from_cs_parameter_ ##1 }
+ }
+ \exp_args:NNV
+ \tl_set:No
+ \l_tmpb_tl
+ \l_tmpa_tl
+ \regex_replace_all:nnN
+ { \cP. }
+ { \0\0 }
+ \l_tmpb_tl
+ \int_step_inline:nn
+ { #3 }
+ {
+ \regex_replace_all:nnN
+ { \c { __markdown_tl_set_from_cs_parameter_ ##1 } }
+ { \cP\# ##1 }
+ \l_tmpb_tl
+ }
+ \tl_set:NV
+ #1
+ \l_tmpb_tl
+ }
\cs_generate_variant:Nn
\__markdown_define_renderer:nNn
{ ncV }
\cs_generate_variant:Nn
\cs_generate_from_arg_count:NNnn
{ NNnV }
+\cs_generate_variant:Nn
+ \tl_put_left:Nn
+ { Nv }
\keys_define:nn
{ markdown/options }
{
@@ -2541,6 +2592,95 @@
{ #1 }
},
}
+\tl_new:N
+ \l__markdown_renderer_glob_definition_tl
+\seq_new:N
+ \l__markdown_renderer_glob_results_seq
+\regex_const:Nn
+ \c__markdown_appending_key_regex
+ { \s*+$ }
+\keys_define:nn
+ { markdown/options/renderers }
+ {
+ unknown .code:n = {
+ \regex_match:NVTF
+ \c__markdown_appending_key_regex
+ \l_keys_key_str
+ {
+ \bool_gset_true:N
+ \g__markdown_appending_renderer_bool
+ \tl_set:NV
+ \l_tmpa_tl
+ \l_keys_key_str
+ \regex_replace_once:NnN
+ \c__markdown_appending_key_regex
+ { }
+ \l_tmpa_tl
+ \tl_set:Nx
+ \l_tmpb_tl
+ { { \l_tmpa_tl } = }
+ \tl_put_right:Nn
+ \l_tmpb_tl
+ { { #1 } }
+ \keys_set:nV
+ { markdown/options/renderers }
+ \l_tmpb_tl
+ \bool_gset_false:N
+ \g__markdown_appending_renderer_bool
+ }
+ {
+ \__markdown_glob_seq:VnN
+ \l_keys_key_str
+ { g__markdown_renderers_seq }
+ \l__markdown_renderer_glob_results_seq
+ \seq_if_empty:NTF
+ \l__markdown_renderer_glob_results_seq
+ {
+ \msg_error:nnV
+ { markdown }
+ { undefined-renderer }
+ \l_keys_key_str
+ }
+ {
+ \tl_set:Nn
+ \l__markdown_renderer_glob_definition_tl
+ { \exp_not:n { #1 } }
+ \seq_map_inline:Nn
+ \l__markdown_renderer_glob_results_seq
+ {
+ \tl_set:Nn
+ \l_tmpa_tl
+ { { ##1 } = }
+ \tl_put_right:Nx
+ \l_tmpa_tl
+ { { \l__markdown_renderer_glob_definition_tl } }
+ \keys_set:nV
+ { markdown/options/renderers }
+ \l_tmpa_tl
+ }
+ }
+ }
+ },
+ }
+\msg_new:nnn
+ { markdown }
+ { undefined-renderer }
+ {
+ Renderer~#1~is~undefined.
+ }
+\cs_generate_variant:Nn
+ \__markdown_glob_seq:nnN
+ { VnN }
+\cs_generate_variant:Nn
+ \cs_generate_from_arg_count:NNnn
+ { cNVV }
+\cs_generate_variant:Nn
+ \msg_error:nnn
+ { nnV }
+\prg_generate_conditional_variant:Nnn
+ \regex_match:Nn
+ { NV }
+ { TF }
\prop_new:N
\g__markdown_glob_cache_prop
\tl_new:N
@@ -2601,72 +2741,6 @@
\cs_generate_variant:Nn
\prop_gput:Nnn
{ NeV }
-\seq_new:N
- \l__markdown_renderer_glob_results_seq
-\keys_define:nn
- { markdown/options/renderers }
- {
- unknown .code:n = {
- \__markdown_glob_seq:VnN
- \l_keys_key_str
- { g__markdown_renderers_seq }
- \l__markdown_renderer_glob_results_seq
- \seq_if_empty:NTF
- \l__markdown_renderer_glob_results_seq
- {
- \msg_error:nnV
- { markdown }
- { undefined-renderer }
- \l_keys_key_str
- }
- {
- \tl_set:Nn
- \l__markdown_renderer_definition_tl
- { #1 }
- \seq_map_inline:Nn
- \l__markdown_renderer_glob_results_seq
- {
- \__markdown_renderer_tl_to_csname:nN
- { ##1 }
- \l_tmpa_tl
- \prop_get:NnN
- \g__markdown_renderer_arities_prop
- { ##1 }
- \l_tmpb_tl
- \int_set:Nn
- \l_tmpa_int
- \l_tmpb_tl
- \tl_set:NV
- \l_tmpb_tl
- \l__markdown_renderer_definition_tl
- \regex_replace_all:nnN
- { \cP\#0 }
- { ##1 }
- \l_tmpb_tl
- \cs_generate_from_arg_count:cNVV
- { \l_tmpa_tl }
- \cs_set:Npn
- \l_tmpa_int
- \l_tmpb_tl
- }
- }
- },
- }
-\msg_new:nnn
- { markdown }
- { undefined-renderer }
- {
- Renderer~#1~is~undefined.
- }
-\cs_generate_variant:Nn
- \__markdown_glob_seq:nnN
- { VnN }
-\cs_generate_variant:Nn
- \cs_generate_from_arg_count:NNnn
- { cNVV }
-\cs_generate_variant:Nn
- \msg_error:nnn
- { nnV }
\str_if_eq:VVT
\c__markdown_top_layer_tl
\c__markdown_option_layer_plain_tex_tl
@@ -2756,6 +2830,8 @@
}
\tl_new:N
\l__markdown_renderer_prototype_definition_tl
+\bool_new:N
+ \g__markdown_appending_renderer_prototype_bool
\cs_new:Nn \__markdown_define_renderer_prototype:nNn
{
\keys_define:nn
@@ -2769,6 +2845,17 @@
{ \cP\#0 }
{ #1 }
\l__markdown_renderer_prototype_definition_tl
+ \bool_if:NT
+ \g__markdown_appending_renderer_prototype_bool
+ {
+ \__markdown_tl_set_from_cs:NNn
+ \l_tmpa_tl
+ #2
+ { #3 }
+ \tl_put_left:NV
+ \l__markdown_renderer_prototype_definition_tl
+ \l_tmpa_tl
+ }
\cs_generate_from_arg_count:NNnV
#2
\cs_set:Npn
@@ -2789,53 +2876,65 @@
\cs_generate_variant:Nn
\__markdown_define_renderer_prototype:nNn
{ ncV }
-\seq_new:N
- \l__markdown_renderer_prototype_glob_results_seq
\keys_define:nn
{ markdown/options/renderer-prototypes }
{
unknown .code:n = {
- \__markdown_glob_seq:VnN
+ \regex_match:NVTF
+ \c__markdown_appending_key_regex
\l_keys_key_str
- { g__markdown_renderers_seq }
- \l__markdown_renderer_prototype_glob_results_seq
- \seq_if_empty:NTF
- \l__markdown_renderer_prototype_glob_results_seq
{
- \msg_error:nnV
- { markdown }
- { undefined-renderer-prototype }
+ \bool_gset_true:N
+ \g__markdown_appending_renderer_prototype_bool
+ \tl_set:NV
+ \l_tmpa_tl
\l_keys_key_str
+ \regex_replace_once:NnN
+ \c__markdown_appending_key_regex
+ { }
+ \l_tmpa_tl
+ \tl_set:Nx
+ \l_tmpb_tl
+ { { \l_tmpa_tl } = }
+ \tl_put_right:Nn
+ \l_tmpb_tl
+ { { #1 } }
+ \keys_set:nV
+ { markdown/options/renderer-prototypes }
+ \l_tmpb_tl
+ \bool_gset_false:N
+ \g__markdown_appending_renderer_prototype_bool
}
{
- \tl_set:Nn
- \l__markdown_renderer_prototype_definition_tl
- { #1 }
- \seq_map_inline:Nn
- \l__markdown_renderer_prototype_glob_results_seq
+ \__markdown_glob_seq:VnN
+ \l_keys_key_str
+ { g__markdown_renderers_seq }
+ \l__markdown_renderer_glob_results_seq
+ \seq_if_empty:NTF
+ \l__markdown_renderer_glob_results_seq
{
- \__markdown_renderer_prototype_tl_to_csname:nN
- { ##1 }
- \l_tmpa_tl
- \prop_get:NnN
- \g__markdown_renderer_arities_prop
- { ##1 }
- \l_tmpb_tl
- \int_set:Nn
- \l_tmpa_int
- \l_tmpb_tl
- \tl_set:NV
- \l_tmpb_tl
- \l__markdown_renderer_prototype_definition_tl
- \regex_replace_all:nnN
- { \cP\#0 }
- { ##1 }
- \l_tmpb_tl
- \cs_generate_from_arg_count:cNVV
- { \l_tmpa_tl }
- \cs_set:Npn
- \l_tmpa_int
- \l_tmpb_tl
+ \msg_error:nnV
+ { markdown }
+ { undefined-renderer-prototype }
+ \l_keys_key_str
+ }
+ {
+ \tl_set:Nn
+ \l__markdown_renderer_glob_definition_tl
+ { \exp_not:n { #1 } }
+ \seq_map_inline:Nn
+ \l__markdown_renderer_glob_results_seq
+ {
+ \tl_set:Nn
+ \l_tmpa_tl
+ { { ##1 } = }
+ \tl_put_right:Nx
+ \l_tmpa_tl
+ { { \l__markdown_renderer_glob_definition_tl } }
+ \keys_set:nV
+ { markdown/options/renderer-prototypes }
+ \l_tmpa_tl
+ }
}
}
},
@@ -3135,7 +3234,8 @@
|markdownIfOption{frozenCache}{}{@
|immediate|openout|markdownOutputFileStream@
|markdownOptionInputTempFileName|relax@
- |markdownInfo{Buffering markdown input into the temporary @
+ |markdownInfo{@
+ Buffering block-level markdown input into the temporary @
input file "|markdownOptionInputTempFileName" and scanning @
for the closing token sequence "#1"}@
}@
@@ -3234,6 +3334,75 @@
{ disabled-shell-access }
{ Shell~escape~is~disabled }
\l_tmpa_tl
+\tl_new:N
+ \g__markdown_after_markinline_tl
+\tl_gset:Nn
+ \g__markdown_after_markinline_tl
+ { \unskip }
+\cs_new:Npn
+ \markinline
+ {
+ \group_begin:
+ \cctab_select:N
+ \c_other_cctab
+ \__markdown_if_option:nF
+ { frozenCache }
+ {
+ \immediate
+ \openout
+ \markdownOutputFileStream
+ \markdownOptionInputTempFileName
+ \relax
+ \msg_info:nne
+ { markdown }
+ { buffering-markinline }
+ { \markdownOptionInputTempFileName }
+ }
+ \peek_regex_replace_once:nnF
+ { { (.*?) } }
+ {
+ \c { __markdown_if_option:nF }
+ \cB { frozenCache \cE }
+ \cB {
+ \c { immediate }
+ \c { write }
+ \c { markdownOutputFileStream }
+ \cB { \1 \cE }
+ \c { immediate }
+ \c { closeout }
+ \c { markdownOutputFileStream }
+ \cE }
+ \c { group_end: }
+ \c { group_begin: }
+ \c { __markdown_setup:n }
+ \cB { contentLevel = inline \cE }
+ \c { markdownInput }
+ \cB {
+ \c { markdownOptionOutputDir } /
+ \c { markdownOptionInputTempFileName }
+ \cE }
+ \c { group_end: }
+ \c { tl_use:N }
+ \c { g__markdown_after_markinline_tl }
+ }
+ {
+ \msg_error:nn
+ { markdown }
+ { markinline-peek-failure }
+ \group_end:
+ \tl_use:N
+ \g__markdown_after_markinline_tl
+ }
+ }
+\msg_new:nnn
+ { markdown }
+ { buffering-markinline }
+ { Buffering~inline~markdown~input~into~the~temporary~input~file~"#1". }
+\msg_new:nnnn
+ { markdown }
+ { markinline-peek-failure }
+ { Use~of~\iow_char:N \\ markinline~doesn't~match~its~definition }
+ { The~macro~should~be~followed~by~inline~markdown~text~in~curly~braces }
\ExplSyntaxOff
\begingroup
\catcode`|=0%