summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/page-flt.lua
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mkiv/page-flt.lua')
-rw-r--r--tex/context/base/mkiv/page-flt.lua20
1 files changed, 11 insertions, 9 deletions
diff --git a/tex/context/base/mkiv/page-flt.lua b/tex/context/base/mkiv/page-flt.lua
index b1f729f7a..7c2220840 100644
--- a/tex/context/base/mkiv/page-flt.lua
+++ b/tex/context/base/mkiv/page-flt.lua
@@ -12,7 +12,7 @@ if not modules then modules = { } end modules ['page-flt'] = {
local next = next
local tostring = tostring
local insert, remove = table.insert, table.remove
-local find = string.find
+local find, topattern = string.find, string.topattern
local abs = math.abs
local trace_floats = false trackers.register("floats.caching", function(v) trace_floats = v end)
@@ -21,7 +21,7 @@ local trace_collecting = false trackers.register("floats.collecting", function(
local report_floats = logs.reporter("floats","caching")
local report_collecting = logs.reporter("floats","collecting")
-local C, S, P, lpegmatch = lpeg.C, lpeg.S, lpeg.P, lpeg.match
+local C, Cc, S, P, lpegmatch = lpeg.C, lpeg.Cc, lpeg.S, lpeg.P, lpeg.match
-- we use floatbox, floatwidth, floatheight
-- text page leftpage rightpage (todo: top, bottom, margin, order)
@@ -119,7 +119,7 @@ local function get(stack,n,bylabel)
if bylabel then
for i=1,#stack do
local s = stack[i]
- local n = string.topattern(tostring(n)) -- to be sure
+ local n = topattern(tostring(n)) -- to be sure
if find(s.data.label,n) then
return s, s.box, i
end
@@ -326,16 +326,18 @@ end
-- todo: check for digits !
+local digits = lpeg.patterns.digits
+local nothing = Cc("")
local method = C((1-S(", :"))^1)
-local position = P(":") * C((1-S("*,"))^1) * (P("*") * C((1-S(","))^1))^0
+local position = P(":") * C(digits^1) * (P("*") * C(digits^1) + nothing)
local label = P(":") * C((1-S(",*: "))^0)
local pattern = method * (
- label * position * C("")
- + C("") * position * C("")
- + label * C("") * C("")
- + C("") * C("") * C("")
-) + C("") * C("") * C("") * C("")
+ label * position
+ + nothing * position
+ + label * nothing * nothing
+ + nothing * nothing * nothing
+) + nothing * nothing * nothing * nothing
-- inspect { lpegmatch(pattern,"somewhere:blabla,crap") }
-- inspect { lpegmatch(pattern,"somewhere:1*2") }