summaryrefslogtreecommitdiff
path: root/tex/context/base/page-lin.lua
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2009-10-16 16:13:00 +0200
committerHans Hagen <pragma@wxs.nl>2009-10-16 16:13:00 +0200
commit7f9b179ad5be5000f67192f283d20e7120402bd9 (patch)
tree18f83a8cbfe7fed1c2a6939fb4b2cf10473abbbe /tex/context/base/page-lin.lua
parentc878054f6360d50885dbdab96643a8f3ac61c46c (diff)
downloadcontext-7f9b179ad5be5000f67192f283d20e7120402bd9.tar.gz
beta 2009.10.16 16:13
Diffstat (limited to 'tex/context/base/page-lin.lua')
-rw-r--r--tex/context/base/page-lin.lua32
1 files changed, 30 insertions, 2 deletions
diff --git a/tex/context/base/page-lin.lua b/tex/context/base/page-lin.lua
index 0efb6314e..c8f5161d8 100644
--- a/tex/context/base/page-lin.lua
+++ b/tex/context/base/page-lin.lua
@@ -42,15 +42,16 @@ nodes.lines.scratchbox = nodes.lines.scratchbox or 0
-- cross referencing
function nodes.lines.number(n)
+ n = tonumber(n)
local cr = cross_references[n] or 0
cross_references[n] = nil
return cr
end
-local function resolve(n,m)
+local function resolve(n,m) -- we can now check the 'line' flag (todo)
while n do
local id = n.id
- if id == whatsit then
+ if id == whatsit then -- why whatsit
local a = has_attribute(n,line_reference)
if a then
cross_references[a] = m
@@ -62,6 +63,33 @@ local function resolve(n,m)
end
end
+function nodes.lines.finalize(t)
+ local getnumber = nodes.lines.number
+ for _,p in next, t do
+ for _,r in next, p do
+ if r.metadata.kind == "line" then
+ local e = r.entries
+ e.linenumber = getnumber(e.text or 0)
+ end
+ end
+ end
+end
+
+local filters = jobreferences.filters
+local helpers = structure.helpers
+
+jobreferences.registerfinalizer(nodes.lines.finalize)
+
+filters.line = filters.line or { }
+
+function filters.line.default(data)
+ helpers.title(data.entries.linenumber or "?",data.metadata)
+end
+
+function filters.line.page(data,prefixspec,pagespec) -- redundant
+ helpers.prefixpage(data,prefixspec,pagespec)
+end
+
-- boxed variant
nodes.lines.boxed = { }