diff options
author | Mojca Miklavec <mojca.miklavec@gmail.com> | 2012-05-14 17:38:55 +0000 |
---|---|---|
committer | Mojca Miklavec <mojca.miklavec@gmail.com> | 2012-05-14 17:38:55 +0000 |
commit | 15995e10bfc68edf79970c4ea4fbb6678566c46e (patch) | |
tree | 2de7ca2a83f2d37ef043ad7429a5cb945bb79ddb /Master/texmf-dist/tex/context/base/buff-ini.mkiv | |
parent | c9a39f716f1e5ec820ed3aab2c9aef25c5a9d730 (diff) |
ConTeXt 2012.05.14 16:00
git-svn-id: svn://tug.org/texlive/trunk@26371 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/context/base/buff-ini.mkiv')
-rw-r--r-- | Master/texmf-dist/tex/context/base/buff-ini.mkiv | 210 |
1 files changed, 111 insertions, 99 deletions
diff --git a/Master/texmf-dist/tex/context/base/buff-ini.mkiv b/Master/texmf-dist/tex/context/base/buff-ini.mkiv index 7bd382fe2e9..239a274c0a8 100644 --- a/Master/texmf-dist/tex/context/base/buff-ini.mkiv +++ b/Master/texmf-dist/tex/context/base/buff-ini.mkiv @@ -5,7 +5,7 @@ %D subtitle=Buffers, %D author=Hans Hagen, %D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%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 @@ -20,143 +20,143 @@ % number is messy and not needed as we store the number anyway % we can get rid of \c!number -\newcount\nofdefinedbuffers - \let\currentbuffer\empty \def\doifelsebuffer#1% {\ctxcommand{doifelsebuffer("#1")}} -\def\resetbuffer - {\dosingleempty\doresetbuffer} +\unexpanded\def\resetbuffer + {\dosingleempty\buff_reset} -\def\doresetbuffer[#1]% +\def\buff_reset[#1]% {\ctxcommand{erasebuffer("#1")}} -\unexpanded\def\dostartdefinedbuffer - {\bgroup +\setuvalue{\e!start\v!buffer}% + {\begingroup % (3) \obeylines - \doquadrupleempty\dodostartbuffer} - -\let\dostartbuffer\dostartdefinedbuffer % used in some modules + \dosingleempty\buff_start} -\def\dodostartbuffer[#1][#2][#3][#4]% [category] [name] [start] [stop] - {\iffourthargument - \def\next{\dododostartbuffer{#1}{#2}{#3}{#4}}% - \else - \def\next{\dododostartbuffer {}{#1}{#2}{#3}}% - \fi - \next} +\def\buff_start[#1]% + {\buff_start_indeed{}{#1}{\e!start\v!buffer}{\e!stop\v!buffer}} -\def\dododostartbuffer#1#2#3#4% \donothing needed ! - {\normalexpanded{\dodowithbuffer{#2}{#3}{#4}{\donothing}{\egroup\noexpand\getvalue{#4}}}} +\def\buff_start_indeed#1#2#3#4% \donothing needed ! + {\normalexpanded{\buff_pickup{#2}{#3}{#4}{}{\buff_stop{#4}}}} -\setvalue{\e!start\v!buffer}% - {\bgroup +\unexpanded\def\grabbufferdata % was: \dostartbuffer + {\begingroup % (4) \obeylines - \dosingleempty\redostartbuffer} + \doquadrupleempty\buff_grab_direct_indeed} -\def\redostartbuffer[#1]% - {\dododostartbuffer{}{#1}{\e!start\v!buffer}{\e!stop\v!buffer}} +\unexpanded\def\grabbufferdatadirect % name start stop + {\begingroup % (6) + \buff_start_indeed\empty} -\def\dowithbuffer#1#2#3% name, startsequence, stopsequence, before, after - {\normalexpanded{\dodowithbuffer{#1}{#2}{#3}}} +\def\buff_grab_direct_indeed % [category] [name] [start] [stop] + {\iffourthargument + \expandafter\buff_grab_direct_indeed_a + \else + \expandafter\buff_grab_direct_indeed_b + \fi} -\unexpanded\long\def\dodowithbuffer#1#2#3#4#5% name, startsequence, stopsequence, before, after - {#4% - \bgroup +\def\buff_grab_direct_indeed_a[#1][#2][#3][#4]{\buff_start_indeed {#1}{#2}{#3}{#4}} +\def\buff_grab_direct_indeed_b[#1][#2][#3][#4]{\buff_start_indeed\empty{#1}{#2}{#3}} + +\unexpanded\def\buff_pickup#1#2#3#4#5% name, startsequence, stopsequence, before, after + {\begingroup % (1) + #4% + \begingroup % (2) + \edef\catcodetableofbuffer{\number\catcodetable}% \ctxcommand{erasebuffer("#1")}% - \setcatcodetable \vrbcatcodes - \long\def\nododowithbuffer - {\egroup + \setcatcodetable\vrbcatcodes + \def\buff_finish + {\endgroup % (1) + \endgroup % (2) #5}% - \long\def\dododowithbuffer##1#3% is detokenize needed? TEST - {\ctxcommand{grabbuffer("#1","#2","#3",\!!bs\detokenize{##1}\!!es)} % space ? - \dododowithbuffer - \nododowithbuffer}% - \dododowithbuffer} + \def\buff_gobble##1#3% is detokenize needed? TEST + %{\ctxcommand{grabbuffer("#1","#2","#3",\!!bs\detokenize{##1}\!!es)} % space ? + {\ctxcommand{grabbuffer("#1","#2","#3",\!!bs>##1\!!es,\catcodetableofbuffer)}% space ? + \buff_gobble + \buff_finish}% + \buff_gobble} -\def\setbuffer - {\dosingleempty\dosetbuffer} +\unexpanded\def\buff_stop#1% + {\endgroup % (3 & 4 & 5 & 6) + \getvalue{#1}} -\let\endbuffer\relax +\unexpanded\def\setbuffer + {\dosingleempty\buff_set} -\long\def\dosetbuffer[#1]#2\endbuffer % seldom used so we just pass #2 - {\ctxcommand{assignbuffer("#1", \!!bs\detokenize{#2}\!!es)}} +\let\endbuffer\relax -\def\namedbufferparameter#1#2{\csname\??bu#1#2\endcsname} +\def\buff_set[#1]#2\endbuffer % seldom used so we just pass #2 + {\ctxcommand{assignbuffer("#1",\!!bs\detokenize{#2}\!!es,\number\catcodetable)}} -\unexpanded\def\setupbuffer - {\dodoubleempty\dosetupbuffer} +% beware, never adapt the global buffer settings, actually we might introduce +% a broken parent chain for this purpose but on the other hand it's not that +% different from framed cum suis -\def\dosetupbuffer[#1][#2]% - {\ifsecondargument - \getparameters[\??bu#1][#2]% - \else - \getparameters[\??bu][#1]% - \fi} +\installcorenamespace{buffer} -\newtoks\everydefinebuffer +\installcommandhandler \??buffer {buffer} \??buffer -\unexpanded\def\definebuffer - {\dodoubleempty\dodefinebuffer} +\setupbuffer + [\c!before=, + \c!after=] -\def\dodefinebuffer[#1][#2]% - {\iffirstargument - \global\advance\nofdefinedbuffers\plusone - \setevalue{\??bu#1\c!number}{\number\nofdefinedbuffers}% - \def\currentbuffer{#1}% - \getparameters[\??bu#1][#2]% - \the\everydefinebuffer - \else - % fatal error - \fi} +\newcount\c_buff_n_of_defined -\def\thebuffernumber #1{\csname\??bu#1\c!number\endcsname} -\def\thedefinedbuffer#1{def-\csname\??bu#1\c!number\endcsname} +\let\currentdefinedbuffer\s!dummy \appendtoks - \setuevalue{\e!start\currentbuffer}% - {\noexpand\dostartdefinedbuffer - [\currentbuffer]% - [def-\number\nofdefinedbuffers]% - [\e!start\currentbuffer]% - [\e!stop\currentbuffer]}% - \setuevalue{\e!get\currentbuffer}% - {\noexpand\dogetdefinedbuffer - [\currentbuffer]% - [def-\number\nofdefinedbuffers]}% + \global\advance\c_buff_n_of_defined\plusone + \setexpandedbufferparameter\c!number{\number\c_buff_n_of_defined}% + \edef\currentdefinedbuffer{def-\number\c_buff_n_of_defined}% + \setuevalue{\e!start\currentbuffer}{\buff_start_defined{\currentbuffer}{\currentdefinedbuffer}{\e!start\currentbuffer}{\e!stop\currentbuffer}}% + \setuevalue{\e!get\currentbuffer }{\buff_get_stored{\currentbuffer}{\currentdefinedbuffer}}% \to \everydefinebuffer -\def\doprocessbufferlist#1#2% - {\doifelsenothing{#1} - {\dododogetbuffer\empty} - {\processcommalist[#1]#2}} +\unexpanded\def\buff_start_defined + {\begingroup % (5) + \buff_start_indeed} + +\def\thebuffernumber #1{\namedbufferparameter{#1}\c!number} +\def\thedefinedbuffer#1{def-\namedbufferparameter{#1}\c!number} \unexpanded\def\getbuffer % no [settings yet] - {\dosingleempty\dogetbuffer} + {\dosingleempty\buff_get} -\unexpanded\def\dogetbuffer[#1]% [name] +\unexpanded\def\buff_get[#1]% [name] {\namedbufferparameter\empty\c!before - \doprocessbufferlist{#1}\dododogetbuffer + \doifelsenothing{#1} + {\buff_get_stored_indeed\empty} + {\processcommalist[#1]\buff_get_stored_indeed}% \namedbufferparameter\empty\c!after} -\def\dogetdefinedbuffer[#1][#2]% +\unexpanded\def\buff_get_stored#1#2% {\namedbufferparameter{#1}\c!before - \dododogetbuffer{#2}% + \buff_get_stored_indeed{#2}% \namedbufferparameter{#1}\c!after} -\def\dododogetbuffer#1% +\unexpanded\def\buff_get_stored_indeed#1% {\ctxcommand{getbuffer("#1")}} -\definebuffer[\v!hiding] \setupbuffer[\v!hiding][\c!before=,\c!after=] - -\let\processTEXbuffer\getbuffer % handy synonym +\definebuffer + [\v!hiding] \setupbuffer + [\v!hiding] [\c!before=, \c!after=] +\unexpanded\def\processTEXbuffer % keep case, maybe also lower + {\dosingleempty\buff_process_tex} + +\def\buff_process_tex[#1]% + {\pushcatcodetable + \catcodetable\ctxcatcodes % \setcatcodetable + \buff_get_stored_indeed{#1}% + \popcatcodetable} + % only mkiv: % % \startbuffer[x] @@ -165,26 +165,38 @@ % % \savebuffer[x][temp.log] -\unexpanded\def\savebuffer{\dodoubleempty\dosavebuffer} +\unexpanded\def\savebuffer + {\dodoubleempty\buff_save} -\def\dosavebuffer[#1][#2]{\ctxcommand{savebuffer("#1","#2")}} +\def\buff_save[#1][#2]% + {\ctxcommand{savebuffer("#1","#2")}} %D Experimental: no expansion of commands in buffer! % \startbuffer[what] -% tex.print("WHAT") +% context("WHAT") % \stopbuffer % \startbuffer -% tex.print("JOBNAME") +% context("JOBNAME") % \stopbuffer % % \ctxluabuffer[what] \ctxluabuffer -\def\ctxluabuffer {\dosingleempty\doctxluabuffer} -\def\mkvibuffer {\dosingleempty\domkvibuffer} -\def\mkvibufferraw{\dosingleempty\domkvibufferraw} +\unexpanded\def\ctxluabuffer {\dosingleempty\buff_ctxlua} +\unexpanded\def\mkvibuffer {\dosingleempty\buff_mkvi} +% what was: \mkvibufferraw + +\def\buff_ctxlua[#1]{\ctxcommand{getbufferctxlua("#1")}} +\def\buff_mkvi [#1]{\ctxcommand{getbuffermkvi("#1")}} + +% used elsewhere + +\unexpanded\def\doprocesstexbuffer#1{\buff_process_tex[#1]} % still used? + +\let\dostartbuffer\grabbufferdata % for old times sake + +% new (expandable): -\def\doctxluabuffer [#1]{\ctxcommand{getbufferctxlua("#1")}} -\def\domkvibuffer [#1]{\ctxcommand{getbuffermkvi("#1")}} +\def\getbufferdata[#1]{\buff_get_stored_indeed{#1}} \protect \endinput |