1%D \module 2%D [ file=core-dat, 3%D version=2021.04.17, % replaces core-two from 1997.03.31, 4%D title=\CONTEXT\ Core Macros, 5%D subtitle=Multipass Datasets, 6%D author=Hans Hagen, 7%D date=\currentdate, 8%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] 9%C 10%C This module is part of the \CONTEXT\ macro||package and is 11%C therefore copyrighted by \PRAGMA. See mreadme.pdf for 12%C details. 13 14\writestatus{loading}{ConTeXt Core Macros / Multipass Datasets} 15 16%D \starttyping 17%D \definedataset[test-1] 18%D \definedataset[test-2][delay=yes] 19%D 20%D \startlines 21%D set 1: \setdataset[test-1][whatever=this-or-that-1] 22%D set 2: \setdataset[test-2][whatever=this-or-that-2] 23%D set 3: \setdataset[test-2][whatever=this-or-that-3] 24%D \stoplines 25%D 26%D \startlines 27%D get 1: \datasetvariable{test-1}{1}{whatever} / \datasetvariable{test-1}{1}{realpage} 28%D get 2: \datasetvariable{test-2}{1}{whatever} / \datasetvariable{test-2}{1}{realpage} 29%D get 3: \datasetvariable{test-2}{2}{whatever} / \datasetvariable{test-2}{2}{realpage} 30%D \stoplines 31%D \stoptyping 32 33%D \starttyping 34%D \definedataset[nofpages] 35%D 36%D \dorecurse{16}{whatever\page} 37%D 38%D \setdataset [nofpages] [pagetotal=\lastpagenumber] 39%D 40%D \testfeatureonce{100}{test \datasetvariable[todo-datasets]{nofpages}{1}{pagetotal} } 41%D \stoptyping 42 43\unprotect 44 45\registerctxluafile{core-dat}{autosuffix} 46 47\installcorenamespace{dataset} 48 49\installcommandhandler \??dataset {dataset} \??dataset 50 51\permanent\tolerant\protected\def\setdataset[#1]#*[#S#2]#*[#S#3]% 52 {\begingroup 53 \cdef\currentdataset{#1}% 54 \ifparameters\or\or 55 \clf_setdataset 56 name {\currentdataset}% 57 delay {\datasetparameter\c!delay}% 58 data {#2}% 59 \relax 60 \or 61 \cdef\currentdataset{#1}% 62 \clf_setdataset 63 name {\currentdataset}% 64 tag {#2}% 65 delay {\datasetparameter\c!delay}% 66 data {#3}% 67 \relax 68 \fi 69 \endgroup} 70 71\permanent\tolerant\def\datasetvariable[#1]{\clf_datasetvariable{#1}} 72\permanent\tolerant\def\datasetsize [#1]{\clf_datasetsize {#1}} 73 74% \startsetups[dataset:demo] 75% \datasetvariable{autores}{\recurselevel}{whatever} 76% \stopsetups 77% \dorecurse{\datasetsize{demo}}{ 78% \setups[dataset:demo] 79% } 80 81% \startsetups[dataset:demo] 82% \datasetvariable{autores}{\datasetindex}{whatever} 83% \stopsetups 84% \processdataset[demo][dataset:demo] 85 86% \startsetups[dataset:demo] 87% \datasetentry{whatever} 88% \stopsetups 89% \processdataset[demo][dataset:demo] 90 91\mutable\let\datasetindex\!!zerocount 92\mutable\let\datasetentry\gobbleoneargument 93 94\permanent\tolerant\protected\def\processdataset[#1]#*[#2]#*[#3]% 95 {\ifparameters\or 96 \or\system_process_dataset {}{#1}{#2}% 97 \or\system_process_dataset{#1}{#2}{#3}% 98 \fi} 99 100\def\system_process_dataset#1#2#3% 101 {\pushmacro\datasetindex 102 \pushmacro\datasetentry 103 \def\datasetentry{\clf_datasetvariable{#1}{#2}{\datasetindex}}% 104 \dorecurse{\datasetsize[#1]{#2}}{\let\datasetindex\recurselevel\directsetup{#3}}% 105 \popmacro\datasetentry 106 \popmacro\datasetindex} 107 108\protect 109 |