diff options
Diffstat (limited to 'tex/context/base/mult-aux.mkiv')
-rw-r--r-- | tex/context/base/mult-aux.mkiv | 51 |
1 files changed, 29 insertions, 22 deletions
diff --git a/tex/context/base/mult-aux.mkiv b/tex/context/base/mult-aux.mkiv index 65cc3b0fe..c5ae2a407 100644 --- a/tex/context/base/mult-aux.mkiv +++ b/tex/context/base/mult-aux.mkiv @@ -64,13 +64,14 @@ % todo: add (relaxed) postsetup and postdefine hooks, just after the everys -\unexpanded\def\doinstallparameterhandler#1#2#3#4#5#6#7% +\unexpanded\def\doinstallparameterhandler#1#2#3#4#5#6#7#8% {\ifx#2\relax\let#2\empty\fi \def#3##1{\csname#4{#1#2}{##1}\endcsname}% - \def#4##1##2{\ifcsname##1##2\endcsname##1##2\else\expandafter#5\csname##1\s!parent\endcsname{##2}\fi}% + \def#4##1##2{\ifcsname##1:##2\endcsname##1:##2\else\expandafter#5\csname##1:\s!parent\endcsname{##2}\fi}% \def#5##1##2{\ifx##1\relax\s!empty\else#4{##1}{##2}\fi}% \def#6##1##2{\csname#4{#1##1}{##2}\endcsname}% - \def#7##1{\detokenize\expandafter\expandafter\expandafter{\csname#1##1\endcsname}}} % always root + \def#7##1{\detokenize\expandafter\expandafter\expandafter{\csname#1:##1\endcsname}}% always root + \def#8##1{\csname\ifcsname#1#2:##1\endcsname#1#2:##1\else\s!empty\fi\endcsname}} \unexpanded\def\installparameterhandler#1#2% {\normalexpanded @@ -81,13 +82,17 @@ \expandafter\noexpand\csname do#2parameter\endcsname \expandafter\noexpand\csname do#2parentparameter\endcsname \expandafter\noexpand\csname named#2parameter\endcsname - \expandafter\noexpand\csname detokenized#2parameter\endcsname}} + \expandafter\noexpand\csname detokenized#2parameter\endcsname + \expandafter\noexpand\csname strict#2parameter\endcsname}} -\unexpanded\def\doinstallparameterhashhandler#1#2#3#4#5% +\unexpanded\def\doinstallparameterhashhandler#1#2#3#4#5#6#7% {\ifx#2\relax\let#2\empty\fi - \def#3##1{#4{#1#2}{##1}}% - \def#4##1##2{\ifcsname##1##2\endcsname##1\else\expandafter#5\csname##1\s!parent\endcsname{##2}\fi}% - \def#5##1##2{\ifx##1\relax\else#4{##1}{##2}\fi}} + \def#3##1{#4{#1#2}{##1}:}% + \def#4##1##2{\ifcsname##1:##2\endcsname##1\else\expandafter#5\csname##1:\s!parent\endcsname{##2}\fi}% + \def#5##1##2{\ifx##1\relax\else#4{##1}{##2}\fi}% + \def#6{#1#2:}% + \def#7##1{#1##1:}}% + \unexpanded\def\installparameterhashhandler#1#2% {\normalexpanded @@ -96,13 +101,15 @@ \expandafter\noexpand\csname current#2\endcsname \expandafter\noexpand\csname #2parameterhash\endcsname \expandafter\noexpand\csname do#2parameterhash\endcsname - \expandafter\noexpand\csname do#2parentparameterhash\endcsname}} + \expandafter\noexpand\csname do#2parentparameterhash\endcsname + \expandafter\noexpand\csname current#2hash\endcsname + \expandafter\noexpand\csname named#2hash\endcsname}} \unexpanded\def\doinstallparametersethandler#1#2#3#4#5% {\ifx#2\relax\let#2\empty\fi - \def#3{\dosetvalue{#1#2}}% ##1 {##2} (braces are mandate) - \def#4{\doletvalue{#1#2}}% ##1 ##2 - \def#5{\doletvalue{#1#2}\empty}}% ##1 + \unexpanded\def#3{\dosetvalue{#1#2:}}% ##1 {##2} (braces are mandate) + \unexpanded\def#4{\doletvalue{#1#2:}}% ##1 ##2 + \unexpanded\def#5{\doletvalue{#1#2:}\empty}}% ##1 \unexpanded\def\installparametersethandler#1#2% {\normalexpanded @@ -140,16 +147,16 @@ \the#6% predefine \ifthirdargument \edef#8{##2}% - \getparameters[#1#4][\s!parent=#1##2,##3]% + \getparameters[#1#4:][\s!parent=#1##2,##3]% \else\ifsecondargument \doifassignmentelse{##2} {\let#8\empty - \getparameters[#1#4][\s!parent=#3,##2]} + \getparameters[#1#4:][\s!parent=#3,##2]} {\edef#8{##2}% - \getparameters[#1#4][\s!parent=#1##2]}% + \getparameters[#1#4:][\s!parent=#1##2]}% \else \let#8\empty - \getparameters[#1#4][\s!parent=#3]% + \getparameters[#1#4:][\s!parent=#3]% \fi\fi \the#7% \let#4\saveddefinewhatever}} @@ -169,19 +176,19 @@ \unexpanded\def\doinstallsetuphandler#1#2#3#4#5#6% {\ifx#3\relax\let#3\empty\fi \unexpanded\def#2{\dodoubleempty#4}% - \unexpanded\def#6{\getparameters[#1#3]}% + \unexpanded\def#6{\getparameters[#1#3:]}% \newtoks#5% \def#4[##1][##2]% maybe helper {\let\savedsetupwhatever#3% \ifsecondargument \def\docommand####1% we will have a simple one as well {\edef#3{####1}% - \getparameters[#1#3][##2]% + \getparameters[#1#3:][##2]% \the#5}% \processcommalist[##1]\docommand \else \let#3\empty - \getparameters[#1][##1]% + \getparameters[#1:][##1]% \the#5% \fi \let#3\savedsetupwhatever}} @@ -199,20 +206,20 @@ \unexpanded\def\doinstallswitchsetuphandler#1#2#3#4#5#6% {\ifx#3\relax\let#3\empty\fi \unexpanded\def#2{\dodoubleempty#4}% - \unexpanded\def#6{\getparameters[#1#3]}% + \unexpanded\def#6{\getparameters[#1#3:]}% \newtoks#5% \def#4[##1][##2]% maybe helper {\ifsecondargument % no commalist here \let\savedsetupwhatever#3% \edef#3{##1}% - \getparameters[#1#3][##2]% + \getparameters[#1#3:][##2]% \the#5% \let#3\savedsetupwhatever \else\iffirstargument \doifassignmentelse{##1} {\let\savedsetupwhatever#3% \let#3\empty - \getparameters[#1][##1]% + \getparameters[#1:][##1]% \the#5% \let#3\savedsetupwhatever} {\edef#3{##1}% this will catch reset |