diff options
author | Context Git Mirror Bot <phg42.2a@gmail.com> | 2016-01-12 17:15:07 +0100 |
---|---|---|
committer | Context Git Mirror Bot <phg42.2a@gmail.com> | 2016-01-12 17:15:07 +0100 |
commit | 8d8d528d2ad52599f11250cfc567fea4f37f2a8b (patch) | |
tree | 94286bc131ef7d994f9432febaf03fe23d10eef8 /tex/context/base/mkii/xtag-run.mkii | |
parent | f5aed2e51223c36c84c5f25a6cad238b2af59087 (diff) | |
download | context-8d8d528d2ad52599f11250cfc567fea4f37f2a8b.tar.gz |
2016-01-12 16:26:00
Diffstat (limited to 'tex/context/base/mkii/xtag-run.mkii')
-rw-r--r-- | tex/context/base/mkii/xtag-run.mkii | 319 |
1 files changed, 319 insertions, 0 deletions
diff --git a/tex/context/base/mkii/xtag-run.mkii b/tex/context/base/mkii/xtag-run.mkii new file mode 100644 index 000000000..65424650c --- /dev/null +++ b/tex/context/base/mkii/xtag-run.mkii @@ -0,0 +1,319 @@ +%D \module +%D [ file=xtag-run, +%D version=2001.01.10, +%D title=\CONTEXT\ XML Macros, +%D subtitle=Visualization, +%D author=Hans Hagen, +%D date=\currentdate, +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] +%C +%C This module is part of the \CONTEXT\ macro||package and is +%C therefore copyrighted by \PRAGMA. See mreadme.pdf for +%C details. + +% TODO: make this mkiv compliant, catcode tables etc + +\writestatus{loading}{ConTeXt XML Macros / Visualization} + +\unprotect + +\bgroup + +\catcode`\.=\escapecatcode +.catcode`.B=.begingroupcatcode +.catcode`.E=.endgroupcatcode +.catcode`.#=.activecatcode +.catcode`.$=.activecatcode +.catcode`.%=.activecatcode +.catcode`.\=.activecatcode +.catcode`.^=.activecatcode +.catcode`._=.activecatcode +.catcode`.{=.activecatcode +.catcode`.}=.activecatcode +.catcode`.|=.activecatcode +.catcode`.~=.activecatcode + +.gdef.verbatimXML + B.catcode`.#=.activecatcode .let#.letterhash + .catcode`.$=.activecatcode .let$.dollar + .catcode`.%=.activecatcode .let%.percent + .catcode`.\=.activecatcode .let\.letterbackslash + .catcode`.^=.activecatcode .let^.letterhat + .catcode`._=.activecatcode .let_.letterunderscore + .catcode`.{=.activecatcode .let{.leftargument + .catcode`.}=.activecatcode .let}.rightargument + .catcode`.|=.activecatcode .let|.letterbar + .catcode`.~=.activecatcode .let~.lettertilde + E + +.egroup + +\gdef\@@XMLshow{\@@XML shw} + +\gdef\@XMLindent#1% + {\ifnum\XMLlevel>\plusone\advance\leftskip#11em\relax\fi} + +\gdef\@XMLlevel#1% + {\advance\XMLlevel#11\relax} + +\unexpanded\gdef\@XMLentity#1% + {\noindent\hbox{\localcolortrue\color[xtag:0]{\string}}} + +\bgroup + +\@EA\catcode\string`=\activecatcode +\@EA\catcode\string`"\activecatcode +\@EA\catcode\string``\activecatcode +\@EA\catcode\string`&\activecatcode + +\gdef\doshowXMLargument#1#2#3#4% + {\hskip\zeropoint % or maybe \allowbreak + \string#1\color[xtag:#3]{#4}\string#2}% + +\gdef\showXMLarguments + {\hskip\zeropoint % or maybe \allowbreak + \ifshowXMLarguments + \bgroup + \@EA\catcode\string`=\activecatcode + \@EA\catcode\string`"\activecatcode + \@EA\catcode\string``\activecatcode + \@EA\catcode\string`&\activecatcode + \def={\color[xtag:7]{\string=}}% + \def"##1"{\doshowXMLargument""8{##1}}% + \def`##1`{\doshowXMLargument``8{##1}}% + \def&##1;{\doshowXMLargument&;7{##1}}% + \scantokens\@EA{\currentXMLarguments}% + \egroup + \else + \currentXMLarguments + \fi} + +\egroup + +\ifx\XMLprettycycle\undefined \gdef\XMLprettycycle{3} \fi + +\doglobal\newcounter\@XMLnofelements +\doglobal\newif\ifXMLunspacepretty + +\gdef\@XMLelement#1% + {\ifnum\XMLlevel<\@@xflevel\relax + \ifnum\kindofXMLelement=2\else + \doglobal\increment\@XMLnofelements\relax + \ifcase\@XMLnofelements\else\@@xfinbetween\fi + \fi + \fi + % no, too fragile: +% \ifnum\XMLlevel>1\hangindent2em\fi + \ifcase\kindofXMLelement\or\or + \getvalue{\@@XMLshow::\currentXMLelement}\relax + \fi + \dontleavehmode % \indent + \bgroup + % \localcolortrue + \advance\XMLlevel \minusone + \DoMod\XMLlevel by\XMLprettycycle to\scratchcounter + \advance\scratchcounter \plusone + \startcolor[xtag:\ifnum\scratchcounter<0 0\else\number\scratchcounter\fi]% + \ifXMLunspacepretty\unskip\fi + \string<% + \ifnum\kindofXMLelement=2\string/\fi + \currentXMLelement + \stopcolor + \ifcase#1\or + \cleanupXMLarguments % get rid of spurious end space and end / + \ifx\currentXMLarguments\empty\else + \setbox\scratchbox\hbox{\space}\hskip\wd\scratchbox % hm, slow + \startcolor[xtag:0]\showXMLarguments\unskip\stopcolor\unskip + \fi + \fi + \startcolor[xtag:\ifnum\scratchcounter<0 0\else\number\scratchcounter\fi]% + \ifnum\kindofXMLelement=3\string/\fi + \string>% + \stopcolor + \egroup + \ifcase\kindofXMLelement\or + \getvalue{\@@XMLshow::\currentXMLelement}\relax + \fi + \ifnum\XMLlevel<\@@xflevel\relax + \ifnum\kindofXMLelement=1\else + \doglobal\increment\@XMLnofelements\relax + \ifcase\@XMLnofelements\else\@@xfinbetween\fi + \fi + \fi + \ifXMLunspacepretty\ignorespaces\fi} + +\gdef\nextXMLtext{\blank\@XMLlevel+\@XMLelement1\par} +\gdef\prevXMLtext{\par\@XMLelement0\par\@XMLlevel-\blank} +\gdef\nextXMLpara{\nextXMLline\par} +\gdef\prevXMLpara{\par\prevXMLline} +\gdef\nextXMLline{\par\@XMLlevel+\@XMLindent+\@XMLelement1} +\gdef\prevXMLline{\@XMLelement0\par\@XMLindent-\@XMLlevel-} +\gdef\nextXMLword{\@XMLlevel+\@XMLelement1} +\gdef\prevXMLword{\@XMLelement0\@XMLlevel-} + +\gdef\someXMLtext{\blank\@XMLlevel+\@XMLelement1\@XMLlevel-\blank} +\gdef\someXMLpara{\someXMLline} +\gdef\someXMLline{\par\@XMLlevel+\@XMLindent+\@XMLelement1\par\@XMLindent-\@XMLlevel-} +\gdef\someXMLword{\@XMLlevel+\@XMLelement1\@XMLlevel-} + +\gdef\@XMLindent#1% + {\ifnum\XMLlevel>\zerocount + \advance\leftskip#11em\relax + \fi} + +\gdef\nextXMLtext{\blank\@XMLlevel+\@XMLelement1\par\@XMLindent+} +\gdef\prevXMLtext{\par\@XMLindent-\@XMLelement0\par\@XMLlevel-\blank} +\gdef\nextXMLpara{\nextXMLline\par\@XMLindent+} +\gdef\prevXMLpara{\par\@XMLindent-\prevXMLline} +\gdef\nextXMLline{\par\@XMLlevel+\@XMLelement1} +\gdef\prevXMLline{\@XMLelement0\par\@XMLlevel-} + +\gdef\someXMLline{\par\@XMLlevel+\@XMLelement1\par\@XMLlevel-} + +\gdef\setXMLshow#1#2#3[#4]% + {\def\docommand##1{#1[##1]#2#3\letvalue{\@@XMLshow:##1}\empty}% + \processcommalist[#4]\docommand} + +\gdef\showXMLign[#1]% + {\setXMLshow\defineXMLignore \relax\relax[#1]% + \setXMLshow\defineXMLsingular \relax\relax[#1]} + +\gdef\showXMLnop[#1]% + {\setXMLshow\defineXMLenvironment\relax\relax[#1]% + \setXMLshow\defineXMLsingular \relax\relax[#1]} + +\gdef\showXMLtxt[#1]% + {\setXMLshow\defineXMLenvironment\nextXMLtext\prevXMLtext[#1]% + \setXMLshow\defineXMLsingular \someXMLtext\relax [#1]} + +\gdef\showXMLpar[#1]% + {\setXMLshow\defineXMLenvironment\nextXMLpara\prevXMLpara[#1]% + \setXMLshow\defineXMLsingular \someXMLline\relax [#1]} + +\gdef\showXMLlin[#1]% + {\setXMLshow\defineXMLenvironment\nextXMLline\prevXMLline[#1]% + \setXMLshow\defineXMLsingular \someXMLword\relax [#1]} + +\gdef\showXMLwrd[#1]% + {\setXMLshow\defineXMLenvironment\nextXMLword\prevXMLword[#1]% + \setXMLshow\defineXMLsingular \someXMLword\relax [#1]} + +\gdef\showXMLemp[#1]% + {\setXMLshow\defineXMLsingular\someXMLword\relax[#1]} + +\gdef\showXMLbreak[#1]% + {\def\docommand##1{\setvalue{\@@XMLshow::##1}{\hskip\zeropoint}}% + \processcommalist[#1]\docommand} + +\gdef\doautoshowXMLelement + {\ifcase\kindofXMLelement + \or \nextXMLpara \or \prevXMLpara \or \someXMLline + \fi} + +\gdef\autoshowXMLelement + {\ifcsname\@@XMLshow:\currentXMLelement\endcsname + \expandafter\normalexecuteXMLelement + \else + \expandafter\doautoshowXMLelement + \fi} + +\global\let\normalexecuteXMLelement\executeXMLelement + +\gdef\showXMLfile#1% + {\bgroup + % temp hack, will be the normal definition + \long\def\docleanupXMLarguments##1/ ##2\relax{\def\currentXMLarguments{##1}}% + % so far for hack + \nohyphens + \dontcomplain + \XMLlevel\zerocount + \increment\@@xflevel % hack + \tttf + \startpacked[\v!blank] + \ifautoXMLshow \let\executeXMLelement\autoshowXMLelement \fi + \let\executeXMLentity\@XMLentity + \enableXML\verbatimXML + \enableregime[utf]% + \utfunicodetracer\pluseight + \veryraggedright + \readfile{\truefilename{#1}}\donothing\donothing\endgraf + \removelastskip % really needed + \stoppacked + \egroup} + +\gdef\showXMLtext#1% + {\bgroup + % temp hack, will be the normal definition + \long\def\docleanupXMLarguments##1/ ##2\relax{\def\currentXMLarguments{##1}}% + % so far for hack + \dontcomplain + \XMLlevel\maxcard + \increment\@@xflevel % hack + \tttf + \ifautoXMLshow \let\executeXMLelement\autoshowXMLelement \fi + \let\executeXMLentity\@XMLentity + \let\par\allowbreak\let\endgraf\par + \setbox\scratchbox\hbox + {\enableXML\verbatimXML\scantokens{#1}\removelastskip}% + \unhbox\scratchbox + \egroup} + +\gdef\showXMLbuffer + {\dosingleempty\doshowXMLbuffer} + +\gdef\doshowXMLbuffer[#1]% + {\doifelsenothing{#1} + {\doshowXMLbuffer[\jobname]} + {\bgroup + \def\dodoprocessXMLbuffer##1{\showXMLfile{\TEXbufferfile{##1}}}% + \processcommalist[#1]\dodoprocessXMLbuffer + \egroup}} + +%D + +\gdef\showXSDcomponent + {\dodoubleargument\doshowXSDcomponent} + +\gdef\doshowXSDcomponent[#1][#2]% + {\bgroup + \showXMLnop[xsd:schema] + \showXMLign[xsd:appInfo] + \showXMLign[xsd:annotation] + \videXMLcontextblock[#2] + \showXMLfile{#1} + \egroup} + +\gdef\showRNGcomponent + {\dodoubleargument\doshowRNGcomponent} + +\gdef\doshowRNGcomponent[#1][#2]% + {\bgroup + \videXMLcontextblock[#2] + \showXMLfile{#1} + \egroup} + +%D + +\gdef\tracebackXMLattribute#1% + {\bgroup + \doloop + {\ifcsname\@@XMLdepth:\recurselevel\endcsname + \edef\!!stringa{\csname\@@XMLdepth:\recurselevel\endcsname}% + \writestatus + {XML TRACE} + {[#1] [\recurselevel] [\!!stringa] [\XMLinh{#1}]}% + \else + \exitloop + \fi}% + \egroup} + +\gdef\showXMLinh[#1]% + {\doifsomething{#1} + {\bgroup\infofont[% + \dorecurse\XMLdepth +% {\csname\@@XMLvariable:\csname\@@XMLdepth:\recurselevel\endcsname:#1\endcsname + {\csname\@@XMLvariable:\recurselevel:#1\endcsname + \ifnum\recurselevel<\XMLdepth->\fi}% + ]\egroup}} + +\protect \endinput |