summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/context/base/core-dat.lua
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2013-04-08 00:43:40 +0000
committerKarl Berry <karl@freefriends.org>2013-04-08 00:43:40 +0000
commit824f7b0903de8ad7f6ee3d7656005e4c59155e06 (patch)
treeabfc8673ef9916f3ab7074e811207384c301492b /Master/texmf-dist/tex/context/base/core-dat.lua
parent689aefb0727676ed3cddf331337b4be226495e72 (diff)
context import for TL13, from www.pragma-ade.com/context/beta/cont-tmf.zip
git-svn-id: svn://tug.org/texlive/trunk@29731 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/context/base/core-dat.lua')
-rw-r--r--Master/texmf-dist/tex/context/base/core-dat.lua85
1 files changed, 54 insertions, 31 deletions
diff --git a/Master/texmf-dist/tex/context/base/core-dat.lua b/Master/texmf-dist/tex/context/base/core-dat.lua
index 071a3fe0b47..826d3a675ee 100644
--- a/Master/texmf-dist/tex/context/base/core-dat.lua
+++ b/Master/texmf-dist/tex/context/base/core-dat.lua
@@ -11,7 +11,7 @@ if not modules then modules = { } end modules ['core-dat'] = {
replaces the twopass data mechanism.</p>
--ldx]]--
-local tonumber = tonumber
+local tonumber, tostring, type = tonumber, tostring, type
local context, commands = context, commands
@@ -23,9 +23,8 @@ local report_pagestate = logs.reporter("pagestate")
local allocate = utilities.storage.allocate
local settings_to_hash = utilities.parsers.settings_to_hash
-local format = string.format
local texcount = tex.count
-
+local formatters = string.formatters
local v_yes = interfaces.variables.yes
local new_latelua = nodes.pool.latelua
@@ -69,7 +68,12 @@ local function setdata(settings)
local tag = settings.tag
local data = settings.data
local list = tobesaved[name]
- data = settings_to_hash(data) or { }
+ if settings.convert and type(data) == "string" then
+ data = settings_to_hash(data)
+ end
+ if type(data) ~= "table" then
+ data = { data = settings.data }
+ end
if not tag then
tag = #list + 1
else
@@ -84,10 +88,10 @@ local function setdata(settings)
data.order = index
data.realpage = texcount.realpageno
if trace_datasets then
- report_dataset("delayed: name %s, tag %s, index %s",name,tag,index)
+ report_dataset("action %a, name %a, tag %a, index %a","assign delayed",name,tag,index)
end
elseif trace_datasets then
- report_dataset("immediate: name %s, tag %s",name,tag)
+ report_dataset("action %a, name %a, tag %a","assign immediate",name,tag)
end
return name, tag, data
end
@@ -103,47 +107,66 @@ function datasets.extend(name,tag)
t.realpage = realpage
t.order = order
if trace_datasets then
- report_dataset("flushed: name %s, tag %s, page %s, index %s, order",name,tag,t.index or 0,order,realpage)
+ report_dataset("action %a, name %a, tag %a, page %a, index %a","flush by order",name,tag,t.index or 0,order,realpage)
end
end
function datasets.getdata(name,tag,key,default)
local t = collected[name]
- if t then
+ if t == nil then
+ if trace_datasets then
+ report_dataset("error: unknown dataset, name %a",name)
+ end
+ elseif type(t) ~= "table" then
+ return t
+ else
t = t[tag] or t[tonumber(tag)]
- if t then
- if key then
- return t[key] or default
- else
- return t
+ if not t then
+ if trace_datasets then
+ report_dataset("error: unknown dataset, name %a, tag %a",name,tag)
end
- elseif trace_datasets then
- report_dataset("unknown: name %s, tag %s",name,tag)
+ elseif key then
+ return t[key] or default
+ else
+ return t
end
- elseif trace_datasets then
- report_dataset("unknown: name %s",name)
end
return default
end
function commands.setdataset(settings)
- local name, tag, data = setdata(settings)
+ settings.convert = true
+ local name, tag = setdata(settings)
if settings.delay ~= v_yes then
--
elseif type(tag) == "number" then
- context(new_latelua(format("job.datasets.extend(%q,%i)",name,tag)))
+ context(new_latelua(formatters["job.datasets.extend(%q,%i)"](name,tag)))
else
- context(new_latelua(format("job.datasets.extend(%q,%q)",name,tag)))
+ context(new_latelua(formatters["job.datasets.extend(%q,%q)"](name,tag)))
end
end
function commands.datasetvariable(name,tag,key)
local t = collected[name]
- t = t and (t[tag] or t[tonumber(tag)])
- if t then
- local s = t[key]
- if s then
- context(s)
+ if t == nil then
+ if trace_datasets then
+ report_dataset("error: unknown dataset, name %a, tag %a, not passed to tex",name) -- no tag
+ end
+ elseif type(t) ~= "table" then
+ context(tostring(t))
+ else
+ t = t and (t[tag] or t[tonumber(tag)])
+ if not t then
+ if trace_datasets then
+ report_dataset("error: unknown dataset, name %a, tag %a, not passed to tex",name,tag)
+ end
+ elseif type(t) == "table" then
+ local s = t[key]
+ if type(s) ~= "table" then
+ context(tostring(s))
+ elseif trace_datasets then
+ report_dataset("error: unknown dataset, name %a, tag %a, not passed to tex",name,tag)
+ end
end
end
end
@@ -188,7 +211,7 @@ local function setstate(settings)
local data = realpage
list[tag] = data
if trace_pagestates then
- report_pagestate("setting: name %s, tag %s, preset %s",name,tag,realpage)
+ report_pagestate("action %a, name %a, tag %a, preset %a","set",name,tag,realpage)
end
return name, tag, data
end
@@ -198,7 +221,7 @@ pagestates.setstate = setstate
function pagestates.extend(name,tag)
local realpage = texcount.realpageno
if trace_pagestates then
- report_pagestate("synchronizing: name %s, tag %s, preset %s",name,tag,realpage)
+ report_pagestate("action %a, name %a, tag %a, preset %a","synchronize",name,tag,realpage)
end
tobesaved[name][tag] = realpage
end
@@ -210,10 +233,10 @@ function pagestates.realpage(name,tag,default)
if t then
return tonumber(t or default)
elseif trace_pagestates then
- report_pagestate("unknown: name %s, tag %s",name,tag)
+ report_pagestate("error: unknown dataset, name %a, tag %a",name,tag)
end
elseif trace_pagestates then
- report_pagestate("unknown: name %s",name)
+ report_pagestate("error: unknown dataset, name %a, tag %a",name) -- nil
end
return default
end
@@ -221,9 +244,9 @@ end
function commands.setpagestate(settings)
local name, tag, data = setstate(settings)
if type(tag) == "number" then
- context(new_latelua(format("job.pagestates.extend(%q,%i)",name,tag)))
+ context(new_latelua(formatters["job.pagestates.extend(%q,%i)"](name,tag)))
else
- context(new_latelua(format("job.pagestates.extend(%q,%q)",name,tag)))
+ context(new_latelua(formatters["job.pagestates.extend(%q,%q)"](name,tag)))
end
end