aboutsummaryrefslogtreecommitdiffstats
path: root/util/interpolation.lua
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2015-08-07 13:31:12 +0200
committerKim Alvefur <zash@zash.se>2015-08-07 13:31:12 +0200
commit564d3bc49b58bebfe19dd116816866df37d6abe9 (patch)
treeeccd79e2b897195acf274253cfc794bd1b5f0054 /util/interpolation.lua
parent97ed1aed6c28bd5949be1dab5381b8bcab6c3454 (diff)
downloadprosody-564d3bc49b58bebfe19dd116816866df37d6abe9.tar.gz
prosody-564d3bc49b58bebfe19dd116816866df37d6abe9.zip
util.interpolation: Add support for filter functions
Diffstat (limited to 'util/interpolation.lua')
-rw-r--r--util/interpolation.lua10
1 files changed, 9 insertions, 1 deletions
diff --git a/util/interpolation.lua b/util/interpolation.lua
index 157a0bc9..315cc203 100644
--- a/util/interpolation.lua
+++ b/util/interpolation.lua
@@ -24,7 +24,7 @@ local pairs, ipairs = pairs, ipairs;
local s_sub, s_gsub, s_match = string.sub, string.gsub, string.match;
local t_concat = table.concat;
-local function new_render(pat, escape)
+local function new_render(pat, escape, funcs)
-- assert(type(pat) == "string", "bad argument #1 to 'new_render' (string expected)");
-- assert(type(escape) == "function", "bad argument #2 to 'new_render' (function expected)");
local function render(template, values)
@@ -42,6 +42,14 @@ local function new_render(pat, escape)
if not value then break; end
end
end
+ if funcs then
+ while value ~= nil and opt == '|' do
+ local f;
+ f, opt, e = s_match(block, "^([%a_][%w_.]*)(%p?)()", e);
+ f = funcs[f];
+ if f then value = f(value); end
+ end
+ end
if opt == '#' or opt == '%' then
if type(value) ~= "table" then return ""; end
local iter = opt == '#' and ipairs or pairs;