summaryrefslogtreecommitdiff
path: root/tex/context/base/util-tpl.lua
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/util-tpl.lua')
-rw-r--r--tex/context/base/util-tpl.lua34
1 files changed, 9 insertions, 25 deletions
diff --git a/tex/context/base/util-tpl.lua b/tex/context/base/util-tpl.lua
index 67d058221..7a6abefd6 100644
--- a/tex/context/base/util-tpl.lua
+++ b/tex/context/base/util-tpl.lua
@@ -17,8 +17,8 @@ local trace_template = false trackers.register("templates.trace",function(v) t
local report_template = logs.reporter("template")
local tostring = tostring
-local format, sub, byte = string.format, string.sub, string.byte
-local P, C, R, Cs, Cc, Carg, lpegmatch, lpegpatterns = lpeg.P, lpeg.C, lpeg.R, lpeg.Cs, lpeg.Cc, lpeg.Carg, lpeg.match, lpeg.patterns
+local format, sub = string.format, string.sub
+local P, C, Cs, Carg, lpegmatch = lpeg.P, lpeg.C, lpeg.Cs, lpeg.Carg, lpeg.match
-- todo: make installable template.new
@@ -52,10 +52,7 @@ local sqlescape = lpeg.replacer {
-- { "\t", "\\t" },
}
-local sqlquoted = lpeg.Cs(lpeg.Cc("'") * sqlescape * lpeg.Cc("'"))
-
-lpegpatterns.sqlescape = sqlescape
-lpegpatterns.sqlquoted = sqlquoted
+local sqlquotedescape = lpeg.Cs(lpeg.Cc("'") * sqlescape * lpeg.Cc("'"))
-- escapeset : \0\1\2\3\4\5\6\7\8\9\10\11\12\13\14\15\16\17\18\19\20\21\22\23\24\25\26\27\28\29\30\31\"\\\127
-- test string: [[1\0\31test23"\\]] .. string.char(19) .. "23"
@@ -71,7 +68,7 @@ lpegpatterns.sqlquoted = sqlquoted
-- }
--
-- slightly faster:
-
+--
-- local luaescape = Cs ((
-- P('"' ) / [[\"]] +
-- P('\\') / [[\\]] +
@@ -81,16 +78,9 @@ lpegpatterns.sqlquoted = sqlquoted
-- P(1)
-- )^0)
------ xmlescape = lpegpatterns.xmlescape
------ texescape = lpegpatterns.texescape
-local luaescape = lpegpatterns.luaescape
------ sqlquoted = lpegpatterns.sqlquoted
------ luaquoted = lpegpatterns.luaquoted
-
local escapers = {
lua = function(s)
- -- return sub(format("%q",s),2,-2)
- return lpegmatch(luaescape,s)
+ return sub(format("%q",s),2,-2)
end,
sql = function(s)
return lpegmatch(sqlescape,s)
@@ -99,14 +89,16 @@ local escapers = {
local quotedescapers = {
lua = function(s)
- -- return lpegmatch(luaquoted,s)
return format("%q",s)
end,
sql = function(s)
- return lpegmatch(sqlquoted,s)
+ return lpegmatch(sqlquotedescape,s)
end,
}
+lpeg.patterns.sqlescape = sqlescape
+lpeg.patterns.sqlescape = sqlquotedescape
+
local luaescaper = escapers.lua
local quotedluaescaper = quotedescapers.lua
@@ -159,14 +151,6 @@ end
templates.replace = replace
-function templates.replacer(str,how,recurse) -- reads nicer
- return function(mapping)
- return lpegmatch(replacer,str,1,mapping,how or "lua",recurse or false) or str
- end
-end
-
--- local cmd = templates.replacer([[foo %bar%]]) print(cmd { bar = "foo" })
-
function templates.load(filename,mapping,how,recurse)
local data = io.loaddata(filename) or ""
if mapping and next(mapping) then