diff options
Diffstat (limited to 'tex/context/base/mkiv/mult-aux.mkiv')
-rw-r--r-- | tex/context/base/mkiv/mult-aux.mkiv | 251 |
1 files changed, 135 insertions, 116 deletions
diff --git a/tex/context/base/mkiv/mult-aux.mkiv b/tex/context/base/mkiv/mult-aux.mkiv index 5e7de2270..a599f1673 100644 --- a/tex/context/base/mkiv/mult-aux.mkiv +++ b/tex/context/base/mkiv/mult-aux.mkiv @@ -101,7 +101,7 @@ \fi#2} \def\mult_interfaces_get_parameters_indeed#1]% namespace already set - {\mult_interfaces_get_parameters_item#1,],\_e_o_p_} + {\mult_interfaces_get_parameters_item#1,],\_e_o_t_} \def\mult_interfaces_get_parameters_item#1,#2% #2 takes space before , {\if,#1,% dirty trick for testing #1=empty @@ -109,7 +109,7 @@ \else\if]#1% \doubleexpandafter\gobbleoneargument \else - \mult_interfaces_get_parameters_assign#1==\empty\_e_o_p_ + \mult_interfaces_get_parameters_assign#1==\empty\_e_o_t_ % \doubleexpandafter\mult_interfaces_get_parameters_item % saves skipping when at end \fi\fi#2} @@ -120,7 +120,7 @@ \def\mult_interfaces_get_parameters_error_indeed#1#2% {\showassignerror{#2}{\the\inputlineno\space(#1)}} -\def\mult_interfaces_get_parameters_assign#1=#2=#3#4\_e_o_p_ +\def\mult_interfaces_get_parameters_assign#1=#2=#3#4\_e_o_t_ {\ifx\empty#1\empty \expandafter\mult_interfaces_get_parameters_error \else\ifx#3\empty @@ -143,7 +143,7 @@ \def\mult_interfaces_get_parameters_error_two#1\csname#2#3\endcsname#4% {\mult_interfaces_get_parameters_error_indeed{#2}{#3}} - \def\mult_interfaces_get_parameters_assign#1=#2=#3#4\_e_o_p_ + \def\mult_interfaces_get_parameters_assign#1=#2=#3#4\_e_o_t_ {\ifx\empty#1\empty \mult_interfaces_get_parameters_error_one \else\ifx#3\empty @@ -161,7 +161,7 @@ % \def\mult_interfaces_get_parameters_error_two#1\m_mult_interfaces_namespace#2\fi\fi% % {\mult_interfaces_get_parameters_error_indeed\m_mult_interfaces_namespace{#2}\m_mult_interfaces_namespace\s!dummy\fi\fi} % - % \def\mult_interfaces_get_parameters_assign#1=#2=#3#4\_e_o_p_ + % \def\mult_interfaces_get_parameters_assign#1=#2=#3#4\_e_o_t_ % {\expandafter\def\csname % \ifx\empty#1\empty % \mult_interfaces_get_parameters_error_one @@ -177,15 +177,14 @@ \newif\ifassignment -\def\mult_check_for_assignment_indeed#1=#2#3\_end_ - {\if#2@\assignmentfalse\else\assignmenttrue\fi} - -\def\mult_check_for_assignment_indeed_begin_#1=#2#3\_end_ - {\if#2@} +\def\mult_check_for_assignment_indeed#1=#2#3\_e_o_t_ + {\if#2\_e_t_x_\assignmentfalse\else\assignmenttrue\fi} +\def\mult_check_for_assignment_indeed_begin_#1=#2#3\_e_o_t_ + {\if#2\_e_t_x_} \def\mult_check_for_assignment#1% - {\expandafter\mult_check_for_assignment_indeed\detokenize{#1}=@@\_end_} + {\expandafter\mult_check_for_assignment_indeed\detokenize{#1}=\_e_t_x_\_e_t_x_\_e_o_t_} % End of experimental code. @@ -357,44 +356,6 @@ \def\getparentchain #1#2{\begincsname#1#2:\s!chain\endcsname} \def\getcurrentparentchain#1#2{\begincsname#1#2:\s!chain\endcsname} -\unexpanded\def\mult_interfaces_install_define_handler#1#2#3#4#5#6#7#8#9% why is \expanded still needed in clones - {\ifx#4\relax\let#4\empty\fi % see \defineregister - \unexpanded\def#2{\dotripleempty#5}% - \newtoks#6% - \newtoks#7% - \unexpanded\def#5[##1][##2][##3]% [child][parent][settings] | [child][settings] | [child][parent] | [child] - {\let#9#4% - \edef#4{##1}% - \ifthirdargument - \the#6% predefine - \edef#8{##2}% - \mult_check_for_parent{#1}{#3}#4#8% - \expandafter\edef\csname#1#4:\s!chain\endcsname{\mult_interfaces_chain#1{##2}##1}% - \expandafter\edef\csname#1#4:\s!parent\endcsname{#1##2}% - \mult_interfaces_get_parameters{#1#4:}[##3]% - \else\ifsecondargument - \the#6% predefine - \expandafter\mult_check_for_assignment_indeed\detokenize{##2}=@@\_end_ - \ifassignment - \let#8\empty - \expandafter\edef\csname#1#4:\s!chain\endcsname{##1}% - \expandafter\edef\csname#1#4:\s!parent\endcsname{#3}% - \mult_interfaces_get_parameters{#1#4:}[##2]% - \else - \edef#8{##2}% - \mult_check_for_parent{#1}{#3}#4#8% - \expandafter\edef\csname#1#4:\s!chain\endcsname{\mult_interfaces_chain#1{##2}##1}% - \expandafter\edef\csname#1#4:\s!parent\endcsname{#1##2}% - \fi - \else - \the#6% predefine - \let#8\empty - \expandafter\edef\csname#1#4:\s!chain\endcsname{##1}% - \expandafter\edef\csname#1#4:\s!parent\endcsname{#3}% - \fi\fi - \the#7% - \let#4#9}} - % \unexpanded\def\mult_interfaces_install_define_handler#1#2#3#4#5#6#7#8#9% why is \expanded still needed in clones % {\ifx#4\relax\let#4\empty\fi % see \defineregister % \unexpanded\def#2{\dotripleempty#5}% @@ -412,16 +373,17 @@ % \mult_interfaces_get_parameters{#1#4:}[##3]% % \else\ifsecondargument % \the#6% predefine -% \ifcondition\expandafter\mult_check_for_assignment_indeed_begin_\detokenize{##2}=@@\_end_ -% \edef#8{##2}% -% \mult_check_for_parent{#1}{#3}#4#8% -% \expandafter\edef\csname#1#4:\s!chain\endcsname{\mult_interfaces_chain#1{##2}##1}% -% \expandafter\edef\csname#1#4:\s!parent\endcsname{#1##2}% -% \else +% \expandafter\mult_check_for_assignment_indeed\detokenize{##2}=\_e_t_x_\_e_t_x_\_e_o_t_ +% \ifassignment % \let#8\empty % \expandafter\edef\csname#1#4:\s!chain\endcsname{##1}% % \expandafter\edef\csname#1#4:\s!parent\endcsname{#3}% % \mult_interfaces_get_parameters{#1#4:}[##2]% +% \else +% \edef#8{##2}% +% \mult_check_for_parent{#1}{#3}#4#8% +% \expandafter\edef\csname#1#4:\s!chain\endcsname{\mult_interfaces_chain#1{##2}##1}% +% \expandafter\edef\csname#1#4:\s!parent\endcsname{#1##2}% % \fi % \else % \the#6% predefine @@ -432,6 +394,43 @@ % \the#7% % \let#4#9}} +\unexpanded\def\mult_interfaces_install_define_handler#1#2#3#4#5#6#7#8#9% why is \expanded still needed in clones + {\ifx#4\relax\let#4\empty\fi % see \defineregister + \unexpanded\def#2{\dotripleempty#5}% + \newtoks#6% + \newtoks#7% + \unexpanded\def#5[##1][##2][##3]% [child][parent][settings] | [child][settings] | [child][parent] | [child] + {\let#9#4% + \edef#4{##1}% + \ifthirdargument + \the#6% predefine + \edef#8{##2}% + \mult_check_for_parent{#1}{#3}#4#8% + \expandafter\edef\csname#1#4:\s!chain\endcsname{\mult_interfaces_chain#1{##2}##1}% + \expandafter\edef\csname#1#4:\s!parent\endcsname{#1##2}% + \mult_interfaces_get_parameters{#1#4:}[##3]% + \else\ifsecondargument + \the#6% predefine + \ifcondition\expandafter\mult_check_for_assignment_indeed_begin_\detokenize{##2}=\_e_t_x_\_e_t_x_\_e_o_t_ + \edef#8{##2}% + \mult_check_for_parent{#1}{#3}#4#8% + \expandafter\edef\csname#1#4:\s!chain\endcsname{\mult_interfaces_chain#1{##2}##1}% + \expandafter\edef\csname#1#4:\s!parent\endcsname{#1##2}% + \else + \let#8\empty + \expandafter\edef\csname#1#4:\s!chain\endcsname{##1}% + \expandafter\edef\csname#1#4:\s!parent\endcsname{#3}% + \mult_interfaces_get_parameters{#1#4:}[##2]% + \fi + \else + \the#6% predefine + \let#8\empty + \expandafter\edef\csname#1#4:\s!chain\endcsname{##1}% + \expandafter\edef\csname#1#4:\s!parent\endcsname{#3}% + \fi\fi + \the#7% + \let#4#9}} + \unexpanded\def\installdefinehandler#1#2#3% {\normalexpanded {\mult_interfaces_install_define_handler @@ -490,55 +489,6 @@ \unexpanded\def#2{\dodoubleempty#4}% \unexpanded\def#5{\mult_interfaces_get_parameters{#1#3:}}} -\unexpanded\def\mult_interfaces_install_switch_setup_handler_b#1#2#3#4#5#6#7#8#9% - {\newtoks#5% - \newconstant#2% - \newtoks#8% - \newtoks#9% - \ifx#6\relax\let#6\empty\fi - \unexpanded\def#4[##1][##2]% maybe helper - {\ifsecondargument % no commalist here - % \setuplayout[whatever][key=value] - \let#7#3% - \let#6#3% - \edef#3{##1}% - #2\doingrootsetupnamed - \mult_interfaces_get_parameters{#1#3:}[##2]% - \the#5% - \ifx#3#6\the#8\fi % only switchsetups if previous == current - \let#3#7% - \else\iffirstargument - % \mult_check_for_assignment{##1}% - \expandafter\mult_check_for_assignment_indeed\detokenize{##1}=@@\_end_ - \ifassignment - % \setuplayout[key=value] - \let#7#3% - \let#6#3% - \let#3\empty - #2\doingrootsetuproot - \mult_interfaces_get_parameters{#1:}[##1]% - \the#5% - \the#8% switchsetups - \let#3#7% - \else - % \setuplayout[whatever] - \let#6#3% % previous becomes current - \edef#3{##1}% this will catch reset so one needs to test for it - #2\doingrootsetnamed - \the#5% % we can check for previous vs current - \the#8% switchsetups - \fi - \else - % \setuplayout - \let#6#3% % previous becomes current - \let#3\empty % current becomes empty - #2\doingrootsetroot - \the#5% - \the#8% switchsetups - \fi\fi - #2\zerocount % mode is always zero at the end - \the#9}} - % \unexpanded\def\mult_interfaces_install_switch_setup_handler_b#1#2#3#4#5#6#7#8#9% % {\newtoks#5% % \newconstant#2% @@ -558,14 +508,8 @@ % \let#3#7% % \else\iffirstargument % % \mult_check_for_assignment{##1}% -% \ifcondition\expandafter\mult_check_for_assignment_indeed_begin_\detokenize{##1}=@@\_end_ -% % \setuplayout[whatever] -% \let#6#3% % previous becomes current -% \edef#3{##1}% this will catch reset so one needs to test for it -% #2\doingrootsetnamed -% \the#5% % we can check for previous vs current -% \the#8% switchsetups -% \else +% \expandafter\mult_check_for_assignment_indeed\detokenize{##1}=\_e_t_x_\_e_t_x_\_e_o_t_ +% \ifassignment % % \setuplayout[key=value] % \let#7#3% % \let#6#3% @@ -575,6 +519,13 @@ % \the#5% % \the#8% switchsetups % \let#3#7% +% \else +% % \setuplayout[whatever] +% \let#6#3% % previous becomes current +% \edef#3{##1}% this will catch reset so one needs to test for it +% #2\doingrootsetnamed +% \the#5% % we can check for previous vs current +% \the#8% switchsetups % \fi % \else % % \setuplayout @@ -587,6 +538,54 @@ % #2\zerocount % mode is always zero at the end % \the#9}} +\unexpanded\def\mult_interfaces_install_switch_setup_handler_b#1#2#3#4#5#6#7#8#9% + {\newtoks#5% + \newconstant#2% + \newtoks#8% + \newtoks#9% + \ifx#6\relax\let#6\empty\fi + \unexpanded\def#4[##1][##2]% maybe helper + {\ifsecondargument % no commalist here + % \setuplayout[whatever][key=value] + \let#7#3% + \let#6#3% + \edef#3{##1}% + #2\doingrootsetupnamed + \mult_interfaces_get_parameters{#1#3:}[##2]% + \the#5% + \ifx#3#6\the#8\fi % only switchsetups if previous == current + \let#3#7% + \else\iffirstargument + % \mult_check_for_assignment{##1}% + \ifcondition\expandafter\mult_check_for_assignment_indeed_begin_\detokenize{##1}=\_e_t_x_\_e_t_x_\_e_o_t_ + % \setuplayout[whatever] + \let#6#3% % previous becomes current + \edef#3{##1}% this will catch reset so one needs to test for it + #2\doingrootsetnamed + \the#5% % we can check for previous vs current + \the#8% switchsetups + \else + % \setuplayout[key=value] + \let#7#3% + \let#6#3% + \let#3\empty + #2\doingrootsetuproot + \mult_interfaces_get_parameters{#1:}[##1]% + \the#5% + \the#8% switchsetups + \let#3#7% + \fi + \else + % \setuplayout + \let#6#3% % previous becomes current + \let#3\empty % current becomes empty + #2\doingrootsetroot + \the#5% + \the#8% switchsetups + \fi\fi + #2\zerocount % mode is always zero at the end + \the#9}} + \unexpanded\def\installswitchsetuphandler#1#2% {\normalexpanded {\mult_interfaces_install_switch_setup_handler_a @@ -804,6 +803,24 @@ \expandafter\noexpand\csname setupcurrent#1\endcsname \expandafter\noexpand\csname #1_action\endcsname}} +% \unexpanded\def\mult_interfaces_install_action_handler#1#2#3#4% +% {\unexpanded\expandafter\def\csname#1\endcsname{\dodoubleempty#4}% +% \unexpanded\def#4[##1][##2]% +% {\begingroup +% \ifsecondargument +% \edef#2{##1}% +% #3[##2]% +% \else\iffirstargument +% \doifelseassignment{##1} +% {\let#2\empty +% #3[##1]}% +% {\edef#2{##1}}% +% \else +% \let#2\empty +% \fi\fi +% \directsetup{handler:action:#1}% +% \endgroup}} + \unexpanded\def\mult_interfaces_install_action_handler#1#2#3#4% {\unexpanded\expandafter\def\csname#1\endcsname{\dodoubleempty#4}% \unexpanded\def#4[##1][##2]% @@ -812,10 +829,12 @@ \edef#2{##1}% #3[##2]% \else\iffirstargument - \doifelseassignment{##1} - {\let#2\empty - #3[##1]}% - {\edef#2{##1}}% + \ifcondition\expandafter\mult_check_for_assignment_indeed_begin_\detokenize{##1}=\_e_t_x_\_e_t_x_\_e_o_t_ + \edef#2{##1}% + \else + \let#2\empty + #3[##1]% + \fi \else \let#2\empty \fi\fi |