%% %% This is file `keyparse.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% keyparse.dtx (with options: `package') %% ----------------------------------------------------------------------------- %% keyparse --- key-based parser %% Released under the LaTeX Project Public License v1.3c or later %% See http://www.latex-project.org/lppl.txt %% ---------------------------------------------------------------------------- %% \NeedsTeXFormat{LaTeX2e}[2021-06-01] \RequirePackage{expl3, xparse, l3keys2e}[2021-06-01] \ProvidesExplPackage {keyparse} % Package name {2021-08-18} % Release date {1.1} % Release version {keyparse --- key-based parser } % Description \ExplSyntaxOn \msg_new:nnn {__keyparse} {not-set} {recursion~for~rule~#1~is~not~set} \cs_new_protected:Nn \__keyparse_keyparse_rule_w:n {\clist_clear_new:c{__keyparse_keys_#1_clist} \cs_new:cpn {__keyparse_keyparse_eval_#1:w} ##1 ##2 \q_recursion_stop {\quark_if_recursion_tail_stop:n{##1} \use:c{__keyparse_keyparse_eval_#1_##1:w}##2\q_recursion_stop }} \cs_new_protected:Nn \__keyparse_keyparse_rule:n{\__keyparse_keyparse_rule_w:n{#1}} \cs_new:Nn \__keyparse_keyparse_eval_aux:nn {\cs_if_exist:cTF {__keyparse_keyparse_eval_#1:w} { \use:c{__keyparse_keyparse_eval_#1:w}#2 \q_recursion_tail \q_recursion_stop} {\msg_error:nnn{__keyparse} {not-set} {#1}}} \cs_generate_variant:Nn\__keyparse_keyparse_eval_aux:nn{ne} \cs_new:Nn \keyparse_eval:nn {\__keyparse_keyparse_eval_aux:ne{#1} {\tl_trim_spaces:n{#2}}} \cs_new_protected:Nn \keyparse_set:nnnnn {\cs_if_exist:cTF {__keyparse_keyparse_eval_#1:w} {\clist_put_right:cn {__keyparse_keys_#1_clist}{\texttt{\tl_to_str:n{#2}}} \cs_new:cpn {__keyparse_keyparse_eval_#1_#2:w}#3 \q_recursion_stop {#4\use:c{__keyparse_keyparse_eval_#1:w}#5 \q_recursion_stop}} {\__keyparse_keyparse_rule:n{#1} \keyparse_set:nnnnn {#1}{#2}{#3}{#4}{#5}}} \ProvideDocumentCommand {\KeyparseKeys} {m} {\clist_use:cnnn {__keyparse_keys_#1_clist} {~and~}{,~}{~and~}} \NewDocumentCommand{\KeyparseEval} {mm} {\keyparse_eval:nn{#1}{#2}} \cs_new:Nn\keyparse_argspec_e:n{{e{#1}}} \keyparse_set:nnnnn{argspec}{e}{#1#2} { \tl_map_function:nN{#1}\keyparse_argspec_e:n}{#2} \keyparse_set:nnnnn{argspec}{d}{#1#2#3}{{d#1#2}}{#3} \keyparse_set:nnnnn{argspec}{m}{#1}{{m}}{#1} \keyparse_set:nnnnn{argspec}{o}{#1}{{o}}{#1} \keyparse_set:nnnnn{argspec}{r}{#1#2#3}{{r#1#2}}{#3} \keyparse_set:nnnnn{argspec}{s}{#1}{{s}}{#1} \keyparse_set:nnnnn{argspec}{t}{#1#2}{{t#1}}{#2} \keyparse_set:nnnnn{pair/first}{>}{#1#2#3}{#1}{#3} \keyparse_set:nnnnn{pair/merge}{>}{#1#2#3}{#1#2}{#3} \ExplSyntaxOff %% %% Copyright (C) 2021 by Erwann Rogard %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License (LPPL), either %% version 1.3c of this license or (at your option) any later %% version. The latest version of this license is in the file: %% %% http://www.latex-project.org/lppl.txt %% %% This work is "maintained" (as per LPPL maintenance status) by %% Erwann Rogard. %% %% This work consists of the file keyparse.dtx and the derived files: %% keyparse.sty, and keyparse.pdf. %% %% %% End of file `keyparse.sty'.