summaryrefslogtreecommitdiff
path: root/tex/context/base/core-dat.mkiv
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/core-dat.mkiv')
-rw-r--r--tex/context/base/core-dat.mkiv98
1 files changed, 98 insertions, 0 deletions
diff --git a/tex/context/base/core-dat.mkiv b/tex/context/base/core-dat.mkiv
new file mode 100644
index 000000000..f1d2a52cb
--- /dev/null
+++ b/tex/context/base/core-dat.mkiv
@@ -0,0 +1,98 @@
+%D \module
+%D [ file=core-dat,
+%D version=20122.04.17, % replaces core-two from 1997.03.31,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Multipass Datasets,
+%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.
+
+\writestatus{loading}{ConTeXt Core Macros / Multipass Datasets}
+
+%D \starttyping
+%D \definedataset[test-1]
+%D \definedataset[test-2][delay=yes]
+%D
+%D \startlines
+%D set 1: \setdataset[test-1][whatever=this-or-that-1]
+%D set 2: \setdataset[test-2][whatever=this-or-that-2]
+%D set 3: \setdataset[test-2][whatever=this-or-that-3]
+%D \stoplines
+%D
+%D \startlines
+%D get 1: \datasetvariable{test-1}{1}{whatever} / \datasetvariable{test-1}{1}{realpage}
+%D get 2: \datasetvariable{test-2}{1}{whatever} / \datasetvariable{test-2}{1}{realpage}
+%D get 3: \datasetvariable{test-2}{2}{whatever} / \datasetvariable{test-2}{2}{realpage}
+%D \stoplines
+%D \stoptyping
+
+\unprotect
+
+\registerctxluafile{core-dat}{1.001}
+
+\installcorenamespace{dataset}
+
+\installcommandhandler \??dataset {dataset} \??dataset
+
+\unexpanded\def\setdataset
+ {\dotripleempty\syst_datasets_set}
+
+\def\syst_datasets_set
+ {\ifthirdargument
+ \expandafter\syst_datasets_set_named
+ \else
+ \expandafter\syst_datasets_set_indexed
+ \fi}
+
+\def\syst_datasets_set_named[#1][#2][#3]%
+ {\begingroup
+ \edef\currentdataset{#1}%
+ \ctxcommand{setdataset{
+ name = "\currentdataset",
+ tag = \!!bs#2\!!es,
+ delay = "\datasetparameter\c!delay",
+ data = \!!bs#3\!!es
+ }}%
+ \endgroup}
+
+\def\syst_datasets_set_indexed[#1][#2][#3]%
+ {\begingroup
+ \edef\currentdataset{#1}%
+ \ctxcommand{setdataset{
+ name = "\currentdataset",
+ delay = "\datasetparameter\c!delay",
+ data = \!!bs#2\!!es
+ }}%
+ \endgroup}
+
+\def\datasetvariable#1#2#3%
+ {\ctxcommand{datasetvariable("#1","#2","#3")}}
+
+\installcorenamespace{pagestate}
+
+\installcommandhandler \??pagestate {pagestate} \??pagestate
+
+\setuppagestate
+ [\c!delay=\v!yes]
+
+\unexpanded\def\setpagestate
+ {\dodoubleempty\syst_pagestates_set}
+
+\def\syst_pagestates_set[#1][#2]%
+ {\begingroup
+ \edef\currentpagestate{#1}%
+ \ctxcommand{setpagestate{
+ name = "\currentpagestate",
+ tag = \!!bs#2\!!es,
+ delay = "\pagestateparameter\c!delay",
+ }}%
+ \endgroup}
+
+\def\pagestaterealpage#1#2%
+ {\ctxcommand{pagestaterealpage("#1","#2")}}
+
+\protect