summaryrefslogtreecommitdiff
path: root/tex/context/base/mult-aux.mkiv
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mult-aux.mkiv')
-rw-r--r--tex/context/base/mult-aux.mkiv51
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