summaryrefslogtreecommitdiff
path: root/tex/context/base/toks-ini.mkiv
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/toks-ini.mkiv')
-rw-r--r--tex/context/base/toks-ini.mkiv78
1 files changed, 78 insertions, 0 deletions
diff --git a/tex/context/base/toks-ini.mkiv b/tex/context/base/toks-ini.mkiv
new file mode 100644
index 000000000..22deca745
--- /dev/null
+++ b/tex/context/base/toks-ini.mkiv
@@ -0,0 +1,78 @@
+%D \module
+%D [ file=toks-ini,
+%D version=2007.03.03,
+%D title=\CONTEXT\ Token Support,
+%D subtitle=Initialization,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright=PRAGMA]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{ConTeXt Token Support / Initialization}
+
+\registerctxluafile{toks-ini}{1.001}
+
+\unprotect
+
+%D Handy for manuals \unknown
+
+\unexpanded\def\starttokens [#1]{\ctxlua{collectors.install("#1", "stoptokens")}}
+\let\stoptokens \relax
+\def\flushtokens [#1]{\ctxlua{collectors.flush("#1")}}
+\def\showtokens [#1]{\ctxlua{collectors.show("#1")}}
+\def\testtokens [#1]{\ctxlua{collectors.with_words("#1")}}
+\def\registertoken #1{\ctxlua{collectors.register("#1")}}
+
+%D Inspired by a prototype by Taco for Thomas cum suis.
+
+% \defineremapper[babelgreek]
+%
+% \remapcharacter[babelgreek][`a]{\alpha}
+% \remapcharacter[babelgreek][`b]{\beta}
+% \remapcharacter[babelgreek][`c]{\gamma}
+% \remapcharacter[babelgreek][`d]{OEPS}
+%
+% \starttext
+%
+% [\startbabelgreek
+% a b c some stuff here \blank[big] oeps b d
+% \stopbabelgreek]
+%
+% [\babelgreek{some stuff here}]
+%
+% \stoptext
+
+% incompatible with mkii ! ! ! ! so we need other names here
+%
+% \def\dograbuntil#1#2%
+% {\long\def\next##1#1{#2##1}\next}
+%
+% \def\grabuntil#1%
+% {\expandafter\dograbuntil\expandafter{\csname#1\endcsname}}
+
+\def\dostartremapper#1%
+ {\ctxlua{collectors.install("#1", "\e!stop#1")}}
+
+\def\dostopremapper#1%
+ {\ctxlua{collectors.handle("#1",function(str) return collectors.remapper.convert("#1",str) end, true)}}
+
+\def\remaptokens#1%
+ {\ctxlua{collectors.handle("#1",function(str) return collectors.remapper.convert("#1",str) end)}}
+
+\unexpanded\def\defineremapper[#1]%
+ {\setvalue{\e!start#1}{\dostartremapper{#1}}%
+ \setvalue{\e!stop #1}{\dostopremapper {#1}}%
+ \def\next##1{\setvalue{#1}####1{\getvalue{\e!start#1}####1##1}}%
+ \expandafter\next\csname\e!stop#1\endcsname}
+
+\def\remapcharacter
+ {\dodoubleempty\doremapcharacter}
+
+\def\doremapcharacter[#1][#2]#3%
+ {\ctxlua{collectors.install("store", "ctxlua")}#3%
+ \ctxlua{collectors.remapper.store("store","#1",\number#2)}}
+
+\protect \endinput