summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/context/base/mkiv/strc-blk.lua
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/context/base/mkiv/strc-blk.lua')
-rw-r--r--Master/texmf-dist/tex/context/base/mkiv/strc-blk.lua92
1 files changed, 32 insertions, 60 deletions
diff --git a/Master/texmf-dist/tex/context/base/mkiv/strc-blk.lua b/Master/texmf-dist/tex/context/base/mkiv/strc-blk.lua
index 89df440c966..703d36379cb 100644
--- a/Master/texmf-dist/tex/context/base/mkiv/strc-blk.lua
+++ b/Master/texmf-dist/tex/context/base/mkiv/strc-blk.lua
@@ -9,7 +9,7 @@ if not modules then modules = { } end modules ['strc-blk'] = {
-- this one runs on top of buffers and structure
local type, next = type, next
-local find, formatters, validstring = string.find, string.formatters, string.valid
+local find, format, validstring = string.find, string.format, string.valid
local settings_to_set, settings_to_array = utilities.parsers.settings_to_set, utilities.parsers.settings_to_array
local allocate = utilities.storage.allocate
@@ -25,7 +25,6 @@ structures.blocks = structures.blocks or { }
local blocks = structures.blocks
local sections = structures.sections
local lists = structures.lists
-local helpers = structures.helpers
local collected = allocate()
local tobesaved = allocate()
@@ -43,28 +42,14 @@ end
job.register('structures.blocks.collected', tobesaved, initializer)
local listitem = utilities.parsers.listitem
-local f_block = formatters["block.%s"]
-
-function blocks.uservariable(index,key,default)
- local c = collected[index]
- if c then
- local u = c.userdata
- if u then
- local v = u[key] or default
- if v then
- context(v)
- end
- end
- end
-end
-local function printblock(index,name,data,hide)
+function blocks.print(name,data,hide)
if hide then
- context.dostarthiddenblock(index,name)
+ context.dostarthiddenblock(name)
else
- context.dostartnormalblock(index,name)
+ context.dostartnormalblock(name)
end
- context.viafile(data,f_block(validstring(name,"noname")))
+ context.viafile(data,format("block.%s",validstring(name,"noname")))
if hide then
context.dostophiddenblock()
else
@@ -72,14 +57,12 @@ local function printblock(index,name,data,hide)
end
end
-blocks.print = printblock
-
function blocks.define(name)
states[name] = { all = "hide" }
end
function blocks.setstate(state,name,tag)
- local all = tag == ""
+ local all = tag == ""
local tags = not all and settings_to_array(tag)
for n in listitem(name) do
local sn = states[n]
@@ -115,12 +98,12 @@ function blocks.select(state,name,tag,criterium)
local metadata = ri.metadata
if names[metadata.name] then
if all then
- printblock(ri.index,name,ri.data,hide)
+ blocks.print(name,ri.data,hide)
else
local mtags = metadata.tags
for tag, sta in next, tags do
if mtags[tag] then
- printblock(ri.index,name,ri.data,hide)
+ blocks.print(name,ri.data,hide)
break
end
end
@@ -129,51 +112,41 @@ function blocks.select(state,name,tag,criterium)
end
end
-function blocks.save(name,tag,userdata,buffer) -- wrong, not yet adapted
- local data = buffers.getcontent(buffer)
- local tags = settings_to_set(tag)
- local plus = false
- local minus = false
- local last = #tobesaved + 1
- local all = states[name].all
- if tags['+'] then
- plus = true
- tags['+'] = nil
- end
- if tags['-'] then
- minus = true
- tags['-'] = nil
- end
- tobesaved[last] = helpers.simplify {
- metadata = {
- name = name,
- tags = tags,
- plus = plus,
+function blocks.save(name,tag,buffer) -- wrong, not yet adapted
+ local data = buffers.getcontent(buffer)
+ local tags = settings_to_set(tag)
+ local plus, minus = false, false
+ if tags['+'] then plus = true tags['+'] = nil end
+ if tags['-'] then minus = true tags['-'] = nil end
+ tobesaved[#tobesaved+1] = {
+ metadata = {
+ name = name,
+ tags = tags,
+ plus = plus,
minus = minus,
},
- index = last,
- data = data or "error",
- userdata = userdata and type(userdata) == "string" and helpers.touserdata(userdata),
references = {
- section = sections.currentid(),
+ section = sections.currentid(),
},
+ data = data or "error",
}
+ local allstate = states[name].all
if not next(tags) then
- if all ~= "hide" then
- printblock(last,name,data)
+ if allstate ~= "hide" then
+ blocks.print(name,data)
elseif plus then
- printblock(last,name,data,true)
+ blocks.print(name,data,true)
end
else
local sn = states[name]
for tag, _ in next, tags do
if sn[tag] == nil then
- if all ~= "hide" then
- printblock(last,name,data)
+ if allstate ~= "hide" then
+ blocks.print(name,data)
break
end
elseif sn[tag] ~= "hide" then
- printblock(last,name,data)
+ blocks.print(name,data)
break
end
end
@@ -183,8 +156,7 @@ end
-- interface
-implement { name = "definestructureblock", actions = blocks.define, arguments = "string" }
-implement { name = "savestructureblock", actions = blocks.save, arguments = "4 strings" }
-implement { name = "selectstructureblock", actions = blocks.select, arguments = "4 strings" }
-implement { name = "setstructureblockstate", actions = blocks.setstate, arguments = "3 strings" }
-implement { name = "structureblockuservariable", actions = blocks.uservariable, arguments = { "integer", "string" } }
+implement { name = "definestructureblock", actions = blocks.define, arguments = "string" }
+implement { name = "savestructureblock", actions = blocks.save, arguments = "3 strings" }
+implement { name = "selectstructureblock", actions = blocks.select, arguments = "4 strings" }
+implement { name = "setstructureblockstate", actions = blocks.setstate, arguments = "3 strings" }