diff options
author | Kim Alvefur <zash@zash.se> | 2015-08-07 13:31:12 +0200 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2015-08-07 13:31:12 +0200 |
commit | 564d3bc49b58bebfe19dd116816866df37d6abe9 (patch) | |
tree | eccd79e2b897195acf274253cfc794bd1b5f0054 /util | |
parent | 97ed1aed6c28bd5949be1dab5381b8bcab6c3454 (diff) | |
download | prosody-564d3bc49b58bebfe19dd116816866df37d6abe9.tar.gz prosody-564d3bc49b58bebfe19dd116816866df37d6abe9.zip |
util.interpolation: Add support for filter functions
Diffstat (limited to 'util')
-rw-r--r-- | util/interpolation.lua | 10 |
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; |