summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/context/base/mkiv/strc-mar.lua
diff options
context:
space:
mode:
authorNorbert Preining <preining@logic.at>2019-02-24 15:12:57 +0000
committerNorbert Preining <preining@logic.at>2019-02-24 15:12:57 +0000
commit1314fbe93790c501dc436a5cf99f106b9e5c0f63 (patch)
tree04dc7734c8be8ffe385d41f4388826ef5857b6f9 /Master/texmf-dist/tex/context/base/mkiv/strc-mar.lua
parenteb80ce7b34f59896a1dfee5ca422495394d6677f (diff)
Revert "ConTeXt version 2019.02.22 19:35"
This reverts commit 5c6357cdb820b4f628d036ba7b2248f221d50c0b. git-svn-id: svn://tug.org/texlive/trunk@50112 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/context/base/mkiv/strc-mar.lua')
-rw-r--r--Master/texmf-dist/tex/context/base/mkiv/strc-mar.lua180
1 files changed, 75 insertions, 105 deletions
diff --git a/Master/texmf-dist/tex/context/base/mkiv/strc-mar.lua b/Master/texmf-dist/tex/context/base/mkiv/strc-mar.lua
index 0221b9b8f19..24a7fd4919f 100644
--- a/Master/texmf-dist/tex/context/base/mkiv/strc-mar.lua
+++ b/Master/texmf-dist/tex/context/base/mkiv/strc-mar.lua
@@ -13,82 +13,78 @@ local insert, concat = table.insert, table.concat
local tostring, next, rawget, type = tostring, next, rawget, type
local lpegmatch = lpeg.match
-local context = context
-local commands = commands
+local context = context
+local commands = commands
-local implement = interfaces.implement
+local implement = interfaces.implement
-local allocate = utilities.storage.allocate
-local setmetatableindex = table.setmetatableindex
+local allocate = utilities.storage.allocate
+local setmetatableindex = table.setmetatableindex
-local nuts = nodes.nuts
-local tonut = nuts.tonut
+local nuts = nodes.nuts
+local tonut = nuts.tonut
-local getid = nuts.getid
-local getlist = nuts.getlist
-local getattr = nuts.getattr
-local getbox = nuts.getbox
+local getid = nuts.getid
+local getlist = nuts.getlist
+local getattr = nuts.getattr
+local getbox = nuts.getbox
-local nextnode = nuts.traversers.node
+local traverse = nuts.traverse
+local traverse_id = nuts.traverse_id
-local nodecodes = nodes.nodecodes
-local whatsitcodes = nodes.whatsitcodes
+local nodecodes = nodes.nodecodes
+local glyph_code = nodecodes.glyph
+local hlist_code = nodecodes.hlist
+local vlist_code = nodecodes.vlist
-local glyph_code = nodecodes.glyph
-local hlist_code = nodecodes.hlist
-local vlist_code = nodecodes.vlist
-local whatsit_code = nodecodes.whatsit
+local texsetattribute = tex.setattribute
-local lateluawhatsit_code = whatsitcodes.latelua
+local a_marks = attributes.private("structure","marks")
-local texsetattribute = tex.setattribute
+local trace_marks_set = false trackers.register("marks.set", function(v) trace_marks_set = v end)
+local trace_marks_get = false trackers.register("marks.get", function(v) trace_marks_get = v end)
+local trace_marks_all = false trackers.register("marks.detail", function(v) trace_marks_all = v end)
-local a_marks = attributes.private("structure","marks")
+local report_marks = logs.reporter("structure","marks")
-local trace_marks_set = false trackers.register("marks.set", function(v) trace_marks_set = v end)
-local trace_marks_get = false trackers.register("marks.get", function(v) trace_marks_get = v end)
-local trace_marks_all = false trackers.register("marks.detail", function(v) trace_marks_all = v end)
+local variables = interfaces.variables
-local report_marks = logs.reporter("structure","marks")
+local v_first = variables.first
+local v_last = variables.last
+local v_previous = variables.previous
+local v_next = variables.next
+local v_top = variables.top
+local v_bottom = variables.bottom
+local v_current = variables.current
+local v_default = variables.default
+local v_page = variables.page
+local v_all = variables.all
+local v_keep = variables.keep
-local variables = interfaces.variables
+local v_nocheck_suffix = ":" .. variables.nocheck
-local v_first = variables.first
-local v_last = variables.last
-local v_previous = variables.previous
-local v_next = variables.next
-local v_top = variables.top
-local v_bottom = variables.bottom
-local v_current = variables.current
-local v_default = variables.default
-local v_page = variables.page
-local v_all = variables.all
-local v_keep = variables.keep
+local v_first_nocheck = variables.first .. v_nocheck_suffix
+local v_last_nocheck = variables.last .. v_nocheck_suffix
+local v_previous_nocheck = variables.previous .. v_nocheck_suffix
+local v_next_nocheck = variables.next .. v_nocheck_suffix
+local v_top_nocheck = variables.top .. v_nocheck_suffix
+local v_bottom_nocheck = variables.bottom .. v_nocheck_suffix
-local v_nocheck_suffix = ":" .. variables.nocheck
+local structures = structures
+local marks = structures.marks
+local lists = structures.lists
-local v_first_nocheck = variables.first .. v_nocheck_suffix
-local v_last_nocheck = variables.last .. v_nocheck_suffix
-local v_previous_nocheck = variables.previous .. v_nocheck_suffix
-local v_next_nocheck = variables.next .. v_nocheck_suffix
-local v_top_nocheck = variables.top .. v_nocheck_suffix
-local v_bottom_nocheck = variables.bottom .. v_nocheck_suffix
+local settings_to_array = utilities.parsers.settings_to_array
-local structures = structures
-local marks = structures.marks
-local lists = structures.lists
-
-local settings_to_array = utilities.parsers.settings_to_array
-
-local boxes_too = false -- at some point we can also tag boxes or use a zero char
+local boxes_too = false -- at some point we can also tag boxes or use a zero char
directives.register("marks.boxestoo", function(v) boxes_too = v end)
-local data = marks.data or allocate()
-marks.data = data
+marks.data = marks.data or allocate()
storage.register("structures/marks/data", marks.data, "structures.marks.data")
+local data = marks.data
local stack, topofstack = { }, 0
local ranges = {
@@ -120,9 +116,9 @@ end
-- identify range
local function sweep(head,first,last)
- for n, id, subtype in nextnode, head do
- -- we need to handle empty heads so we test for latelua
- if id == glyph_code or (id == whatsit_code and subtype == lateluawhatsit_code) then
+ for n in traverse(head) do
+ local id = getid(n)
+ if id == glyph_code then
local a = getattr(n,a_marks)
if not a then
-- next
@@ -437,8 +433,7 @@ local function resolve(name,first,last,strict,quitonfalse,notrace)
if trace_marks_get and not notrace then
report_marks("found chain [ % => T ]",fullchain)
end
- local chaindata = { }
- local chainlength = #fullchain
+ local chaindata, chainlength = { }, #fullchain
for i=1,chainlength do
local cname = fullchain[i]
if data[cname].set > 0 then
@@ -514,8 +509,7 @@ local methods = { }
local function doresolve(name,rangename,swap,df,dl,strict)
local range = ranges[rangename] or ranges[v_page]
- local first = range.first
- local last = range.last
+ local first, last = range.first, range.last
if trace_marks_get then
report_marks("action %a, name %a, range %a, swap %a, first %a, last %a, df %a, dl %a, strict %a",
"resolving",name,rangename,swap or false,first,last,df,dl,strict or false)
@@ -644,10 +638,7 @@ function marks.tracers.showtable()
context.tabulaterowbold("name","parent","chain","children","fullchain")
context.ML()
for k, v in table.sortedpairs(data) do
- local parent = v.parent or ""
- local chain = v.chain or ""
- local children = v.children or { }
- local fullchain = v.fullchain or { }
+ local parent, chain, children, fullchain = v.parent or "", v.chain or "", v.children or { }, v.fullchain or { }
table.sort(children) -- in-place but harmless
context.tabulaterowtyp(k,parent,chain,concat(children," "),concat(fullchain," "))
end
@@ -656,49 +647,28 @@ end
-- pushing to context:
--- local separator = context.nested.markingseparator
--- local command = context.nested.markingcommand
--- local ctxconcat = context.concat
-
--- local function fetchonemark(name,range,method)
--- context(command(name,fetched(name,range,method)))
--- end
-
--- local function fetchtwomarks(name,range)
--- ctxconcat( {
--- command(name,fetched(name,range,v_first)),
--- command(name,fetched(name,range,v_last)),
--- }, separator(name))
--- end
-
--- local function fetchallmarks(name,range)
--- ctxconcat( {
--- command(name,fetched(name,range,v_previous)),
--- command(name,fetched(name,range,v_first)),
--- command(name,fetched(name,range,v_last)),
--- }, separator(name))
--- end
-
- local ctx_separator = context.markingseparator
- local ctx_command = context.markingcommand
-
- local function fetchonemark(name,range,method)
- ctx_command(name,fetched(name,range,method))
- end
+local separator = context.nested.markingseparator
+local command = context.nested.markingcommand
+local ctxconcat = context.concat
- local function fetchtwomarks(name,range)
- ctx_command(name,fetched(name,range,v_first))
- ctx_separator(name)
- ctx_command(name,fetched(name,range,v_last))
- end
+local function fetchonemark(name,range,method)
+ context(command(name,fetched(name,range,method)))
+end
- local function fetchallmarks(name,range)
- ctx_command(name,fetched(name,range,v_previous))
- ctx_separator(name)
- ctx_command(name,fetched(name,range,v_first))
- ctx_separator(name)
- ctx_command(name,fetched(name,range,v_last))
- end
+local function fetchtwomarks(name,range)
+ ctxconcat( {
+ command(name,fetched(name,range,v_first)),
+ command(name,fetched(name,range,v_last)),
+ }, separator(name))
+end
+
+local function fetchallmarks(name,range)
+ ctxconcat( {
+ command(name,fetched(name,range,v_previous)),
+ command(name,fetched(name,range,v_first)),
+ command(name,fetched(name,range,v_last)),
+ }, separator(name))
+end
function marks.fetch(name,range,method) -- chapter page first | chapter column:1 first
if trace_marks_get then