[dev-context] Storing and retrieving two-pass data

Wolfgang Schuster schuster.wolfgang at googlemail.com
Thu Apr 19 13:23:52 CEST 2012


Am 18.04.2012 um 14:15 schrieb Marco:

> On 2012-04-18 Wolfgang Schuster <schuster.wolfgang at googlemail.com> wrote:
> 
>> The following works with the current beta, you can find another example in
>> core-dat.mkiv.
>> 
>> […]
> 
> Thanks a  lot. One more  question: How  to address the  last element
> without manually keeping track of how  often it was saved? Anyhow, I
> am just interested in the last  saved value. A solution which simply
> overwrites the old value every time would also be fine.
> 
> \starttext
> 	\definedataset [test]
> 	\setdataset    [test] [foo=first]
> 	\setdataset    [test] [foo=second]
> 
> 	% I don't know that element "2" is the last
> 	foo is: \datasetvariable{test}{2}{foo}
> 
> 	% what I need
> 	% foo is: \datasetvariable{test}{"last"}{foo}
> \stoptext


\definedataset[test]

\newcounter\testcounter % optional because \increment checks if the command is defined

\startsetups dataset:test

	\doifvariable{test}{foo}
		{
			\doglobal\increment\testcounter
			\setdataset[test][foo=\getvariable{test}{foo}]
		}

\stopsetups

\setvariables[test][set=\texsetup{dataset:test}]

\starttext

\setvariables[test][foo=first]
\setvariables[test][foo=second]

foo is: \datasetvariable{test}{\testcounter}{foo}

\stoptext

Wolfgang


More information about the dev-context mailing list