summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/context/base/filt-ini.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/context/base/filt-ini.tex')
-rw-r--r--Master/texmf-dist/tex/context/base/filt-ini.tex142
1 files changed, 142 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/context/base/filt-ini.tex b/Master/texmf-dist/tex/context/base/filt-ini.tex
new file mode 100644
index 00000000000..ec4fa257b76
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/filt-ini.tex
@@ -0,0 +1,142 @@
+%D \module
+%D [ file=filt-ini,
+%D version=2000.09.19,
+%D title=\CONTEXT\ Filter Macros,
+%D subtitle=Initialization,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%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 Filter Macros (ini)}
+
+% \ifx\OmegaVersion\undefined
+
+% \let\definefiltersynonym \gobbledoubleempty
+% \let\definefiltersequence \gobbledoubleempty
+% \unexpanded\def\usefiltersequence {\gobblesingleempty}
+% \let\usefilter \gobblesingleempty
+% \let\truefiltername \gobbleoneargument
+
+% \expandafter \endinput
+% \fi
+
+\unprotect
+
+%D The real work starts here.
+
+\startmessages dutch library: filters
+ title: filter
+ 1: filter -- wordt geladen
+ 2: onbekend filter --
+\stopmessages
+
+\startmessages english library: filters
+ title: filter
+ 1: filter -- is loaded
+ 2: unknown filter --
+\stopmessages
+
+\startmessages german library: filters
+ title: filter
+ 1: filter -- is loaded
+ 2: unknown filter --
+\stopmessages
+
+\startmessages czech library: filters
+ title: filter
+ 1: filter -- is loaded
+ 2: unknown filter --
+\stopmessages
+
+\startmessages italian library: filters
+ title: filtri
+ 1: filtro -- caricato
+ 2: filtro sconosciuto --
+\stopmessages
+
+%D \macros
+%D {definefiltersynonym}
+
+\def\definefiltersynonym
+ {\dodoubleargument\dodefinefiltersynonym}
+
+\def\dodefinefiltersynonym[#1][#2]%
+ {\setvalue{\??or#1}{#2}}
+
+%D \macros
+%D {truefiltername}
+
+\def\truefiltername#1%
+ {\ifundefined{\??or#1}#1\else\truefiltername{\getvalue{\??or#1}}\fi}
+
+%D \macros
+%D {definefiltersequence}
+
+\def\definefiltersequence%
+ {\dodoubleargument\dodefinefiltersequence}
+
+\def\dodefinefiltersequence[#1][#2]%
+ {\setvalue{\??ot#1}{#2}}
+
+%D \macros
+%D {usefiltersequence}
+%D
+
+\def\magicocpnumber{1}
+
+% \def\dodousefiltersequence#1%
+% {\expandafter\ocp\csname\??or:#1\endcsname=\truefiltername{#1}\relax
+% \@EA \appendtoks
+% \@EA \addbeforeocplist \@EA \magicocpnumber \csname\??or:#1\endcsname
+% \to \scratchtoks}
+
+% one can do:
+%
+% \definefiltersequence
+% [farsi]
+% [utf8 to unicode16=>5,
+% persian fix,
+% arabic analysis=>3,
+% arabic glyphs]
+%
+% so, => is used to signal a priority
+
+\def\dodousefiltersequence#1%
+ {\expandafter\ocp\csname\??or:#1\endcsname=\truefiltername{#1}\relax
+ \splitstring#1\at=>\to\!!stringa\and\!!stringb
+ \edef\!!stringb{\number\ifx\!!stringb\empty\magicocpnumber\else\!!stringb\fi}%
+ \appendetoks
+ \noexpand\addbeforeocplist
+ \!!stringb\space
+ \expandafter\noexpand\csname\??or:\!!stringa\endcsname
+ \to \scratchtoks}
+
+\unexpanded\def\usefiltersequence[#1]%
+ {\edef\currentfiltersequence{\getvalue{\??ot#1}}%
+ \scratchtoks\emptytoks
+ \processcommacommand[\currentfiltersequence]\dodousefiltersequence
+ % \showthe\scratchtoks
+ \expanded{\ocplist\csname\??ot:#1\endcsname=\the\scratchtoks}\nullocplist
+ \expanded{\pushocplist\csname\??ot:#1\endcsname}\relax}
+
+%D \macros
+%D {usefilter}
+
+\def\dousefilter#1%
+ {\doifundefined{\c!file\f!filterprefix#1}%
+ {\letvalue{\c!file\f!filterprefix#1}\empty
+ \makeshortfilename[\f!filterprefix#1]%
+ \startreadingfile
+ \readsysfile\shortfilename
+ {\showmessage\m!filters1{#1}}
+ {\showmessage\m!filters2{#1}}%
+ \stopreadingfile}}
+
+\def\usefilter[#1]%
+ {\processcommalist[#1]\dousefilter}
+
+\protect \endinput