summaryrefslogtreecommitdiff
path: root/tex/context/base/mlib-pdf.lua
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mlib-pdf.lua')
-rw-r--r--tex/context/base/mlib-pdf.lua42
1 files changed, 34 insertions, 8 deletions
diff --git a/tex/context/base/mlib-pdf.lua b/tex/context/base/mlib-pdf.lua
index d5f22cd7e..1f37223a7 100644
--- a/tex/context/base/mlib-pdf.lua
+++ b/tex/context/base/mlib-pdf.lua
@@ -276,13 +276,31 @@ local key = C((1-equal)^1) * equal
local newline = S("\n\r")^1
local number = (((1-space-newline)^1) / tonumber) * (space^0)
local variable =
- lpeg.P("1:") * key * number
- + lpeg.P("2:") * key * C((1-newline)^0)
- + lpeg.P("3:") * key * (P("false") * Cc(false) + P("true") * Cc(true))
- + lpeg.S("4568") * P(":") * key * Ct(number^1)
- + lpeg.P("7:") * key * Ct(Ct(number * number^-5)^1)
+ P("1:") * key * number
+ + P("2:") * key * C((1-newline)^0)
+ + P("3:") * key * (P("false") * Cc(false) + P("true") * Cc(true))
+ + S("4568") * P(":") * key * Ct(number^1)
+ + P("7:") * key * Ct(Ct(number * number^-5)^1)
-local pattern = Cf ( Carg(1) * (Cg(variable * newline^0)^0), rawset)
+local pattern_key = Cf ( Carg(1) * (Cg(variable * newline^0)^0), rawset)
+
+local variable =
+ P("1:") * number
+ + P("2:") * C((1-newline)^0)
+ + P("3:") * (P("false") * Cc(false) + P("true") * Cc(true))
+ + S("4568") * P(":") * Ct(number^1)
+ + P("7:") * Ct(Ct(number * number^-5)^1)
+
+local pattern_tab = Cf ( Carg(1) * (Cg(variable * newline^0)^0), rawset)
+
+local variable =
+ P("1:") * number
+ + P("2:") * C((1-newline)^0)
+ + P("3:") * (P("false") * Cc(false) + P("true") * Cc(true))
+ + S("4568") * P(":") * number^1
+ + P("7:") * (number * number^-5)^1
+
+local pattern_lst = (variable * newline^0)^0
metapost.variables = { } -- to be stacked
metapost.llx = 0 -- to be stacked
@@ -290,7 +308,7 @@ metapost.lly = 0 -- to be stacked
metapost.urx = 0 -- to be stacked
metapost.ury = 0 -- to be stacked
-function commands.mprunvar(key,n)
+function commands.mprunvar(key,n) -- should be defined in another lib
local value = metapost.variables[key]
if value ~= nil then
local tvalue = type(value)
@@ -311,6 +329,14 @@ function commands.mprunvar(key,n)
end
end
+function metapost.untagvariable(str,variables)
+ if variables == false then
+ return lpegmatch(pattern_lst,str)
+ else
+ return lpegmatch(pattern_tab,str,1,variables or { })
+ end
+end
+
function metapost.flush(result,flusher,askedfig)
if result then
local figures = result.fig
@@ -366,7 +392,7 @@ function metapost.flush(result,flusher,askedfig)
if objecttype == "start_bounds" or objecttype == "stop_bounds" then
-- skip
elseif objecttype == "special" then
- lpegmatch(pattern,object.prescript,1,variables)
+ lpegmatch(pattern_key,object.prescript,1,variables)
elseif objecttype == "start_clip" then
t[#t+1] = "q"
flushnormalpath(object.path,t,false)