r3tex

custom LuaTeX format
git clone git://git.rr3.xyz/r3tex
Log | Files | Refs | README | LICENSE

commit 770c085f3614b37e446791da65ab5c0cd52608a8
parent 044dacbb2f40c3fbb9a23f9cf667ca9a4b53b454
Author: robert <robertrussell.72001@gmail.com>
Date:   Sat, 15 Jan 2022 21:46:42 -0800

Simplify and move event and hook macros

Diffstat:
Mfont.tex | 25-------------------------
Mutil.tex | 21+++++++++++++++++++++
2 files changed, 21 insertions(+), 25 deletions(-)

diff --git a/font.tex b/font.tex @@ -12,28 +12,3 @@ An "M font set" is a tuple of three H font sets. easily confusable with \textfont.) \protected\def\rm{\rminit \rmtext \rmmath} - -% \defevent defines an "event". Hooks can be attached to events with \addhook, -% and all hooks are run in order when the event is triggered with \event. -% Events can have parameters like macros, and hooks have access to these -% parameters. For example, -% \defevent#1#2[myevent] -% \addhook[myevent]{Hello from my 1st hook! (\#1 = #1)} -% \addhook[myevent]{Hello from my 2nd hook! (\#2 = #2)} -% \event[myevent]{abc}{xyz} -% produces -% Hello from my 1st hook! (#1 = abc)Hello from my 2nd hook! (#2 = xyz) -\protected\def\defevent#1[#2]{% - \ea\newtoks\begcs param:#2\endcs \cs{param:#2}={#1}% - \ea\newtoks\begcs hooks:#2\endcs \cs{hooks:#2}={}% -} - -\protected\def\event[#1]{% - % Put start of \@hooks definition in \csA, so we can \expandafter over it - % to expand the hooks token list. - \edef\csA{\def\noexpand\@hooks\the\cs{param:#1}}% - \ea\csA\ea{\the\cs{hooks:#1}}% - \@hooks -} - -\protected\def\addhook[#1]#2{\cs{hooks:#1}\ea{\the\cs{hooks:#1}#2}} diff --git a/util.tex b/util.tex @@ -54,6 +54,27 @@ \protected\def\csletcs#1#2{\ea\let\begcs#1\ea\endcs\begcs#2\endcs} \protected\def\gcsletcs#1#2{\ea\glet\begcs#1\ea\endcs\begcs#2\endcs} +% \defevent defines an "event". Hooks can be attached to events with \addhook, +% and all hooks are run in order when the event is triggered with \event. +% Events can have parameters like macros, and hooks have access to these +% parameters. For example, +% \defevent#1#2[myevent] +% \addhook[myevent]{Hello from my 1st hook! (\#1 = #1)} +% \addhook[myevent]{Hello from my 2nd hook! (\#2 = #2)} +% \event[myevent]{abc}{xyz} +% produces +% Hello from my 1st hook! (#1 = abc)Hello from my 2nd hook! (#2 = xyz) +\protected\def\defevent#1[#2]{% + \toksA={#1}% Double hashes + \ecsdef{event:#2}{\def\noexpand\@hooks\the\toksA}% + \ea\newtoks\begcs hooks:#2\endcs \cs{hooks:#2}={}% +} +\protected\def\event[#1]{% + \begcs event:#1\ea\endcs\ea{\the\cs{hooks:#1}}% + \@hooks +} +\protected\def\addhook[#1]#2{\cs{hooks:#1}\ea{\the\cs{hooks:#1}#2}} + \def\selectx#1{} % \gobble \def\selectO#1{#1} \def\selectxx#1#2{} % \gobbletwo