summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/core-dat.lua
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mkiv/core-dat.lua')
-rw-r--r--tex/context/base/mkiv/core-dat.lua53
1 files changed, 44 insertions, 9 deletions
diff --git a/tex/context/base/mkiv/core-dat.lua b/tex/context/base/mkiv/core-dat.lua
index fa4d089d0..5f9bc9d08 100644
--- a/tex/context/base/mkiv/core-dat.lua
+++ b/tex/context/base/mkiv/core-dat.lua
@@ -15,6 +15,7 @@ local tonumber, tostring, type = tonumber, tostring, type
local context = context
local commands = commands
+local ctx_latelua = context.latelua
local trace_datasets = false trackers.register("job.datasets" , function(v) trace_datasets = v end)
local trace_pagestates = false trackers.register("job.pagestates", function(v) trace_pagestates = v end)
@@ -244,7 +245,7 @@ end
pagestates.setstate = setstate
-function pagestates.extend(name,tag)
+local function extend(name,tag)
local realpage = texgetcount("realpageno")
if trace_pagestates then
report_pagestate("action %a, name %a, tag %a, preset %a","synchronize",name,tag,realpage)
@@ -252,6 +253,8 @@ function pagestates.extend(name,tag)
tobesaved[name][tag] = realpage
end
+pagestates.extend = extend
+
function pagestates.realpage(name,tag,default)
local t = collected[name]
if t then
@@ -267,21 +270,47 @@ function pagestates.realpage(name,tag,default)
return default
end
+-- local function setpagestate(settings)
+-- local name, tag = setstate(settings)
+-- if type(tag) == "number" then
+-- context(new_latelua(formatters["job.pagestates.extend(%q,%i)"](name,tag)))
+-- else
+-- context(new_latelua(formatters["job.pagestates.extend(%q,%q)"](name,tag)))
+-- end
+-- end
+
local function setpagestate(settings)
- local name, tag, data = setstate(settings)
- if type(tag) == "number" then
- context(new_latelua(formatters["job.pagestates.extend(%q,%i)"](name,tag)))
- else
- context(new_latelua(formatters["job.pagestates.extend(%q,%q)"](name,tag)))
- end
+ local name, tag = setstate(settings)
+ -- context(new_latelua(function() extend(name,tag) end))
+ ctx_latelua(function() extend(name,tag) end)
end
local function pagestaterealpage(name,tag)
local t = collected[name]
- t = t and (t[tag] or t[tonumber(tag)])
if t then
- context(t)
+ t = t[tag] or t[tonumber(tag)]
+ if t then
+ context(t)
+ end
+ end
+end
+
+local function pagestaterealpageorder(name,tag)
+ local t = collected[name]
+ if t then
+ local p = t[tag]
+ if p then
+ local n = 1
+ for i=tag-1,1,-1 do
+ if t[i] == p then
+ n = n +1
+ end
+ end
+ context(n)
+ return
+ end
end
+ context(0)
end
local function setpagestaterealpageno(name,tag)
@@ -313,3 +342,9 @@ implement {
actions = setpagestaterealpageno,
arguments = "2 strings",
}
+
+implement {
+ name = "pagestaterealpageorder",
+ actions = pagestaterealpageorder,
+ arguments = { "string", "integer" }
+}