aboutsummaryrefslogtreecommitdiffstats
path: root/util/xtemplate.lua
diff options
context:
space:
mode:
Diffstat (limited to 'util/xtemplate.lua')
-rw-r--r--util/xtemplate.lua18
1 files changed, 13 insertions, 5 deletions
diff --git a/util/xtemplate.lua b/util/xtemplate.lua
index 254c8af0..56413012 100644
--- a/util/xtemplate.lua
+++ b/util/xtemplate.lua
@@ -3,13 +3,21 @@ local s_match = string.match;
local s_sub = string.sub;
local t_concat = table.concat;
-local st = require("util.stanza");
+local st = require("prosody.util.stanza");
local function render(template, root, escape, filters)
escape = escape or st.xml_escape;
- return (s_gsub(template, "%b{}", function(block)
+ return (s_gsub(template, "(%s*)(%b{})(%s*)", function(pre_blank, block, post_blank)
local inner = s_sub(block, 2, -2);
+ if inner:sub(1, 1) == "-" then
+ pre_blank = "";
+ inner = inner:sub(2);
+ end
+ if inner:sub(-1, -1) == "-" then
+ post_blank = "";
+ inner = inner:sub(1, -2);
+ end
local path, pipe, pos = s_match(inner, "^([^|]+)(|?)()");
if not (type(path) == "string") then return end
local value
@@ -74,12 +82,12 @@ local function render(template, root, escape, filters)
if type(value) == "string" then
if not is_escaped then value = escape(value); end
- return value
+ return pre_blank .. value .. post_blank
elseif st.is_stanza(value) then
value = value:get_text();
- if value then return escape(value) end
+ if value then return pre_blank .. escape(value) .. post_blank end
end
- return ""
+ return pre_blank .. post_blank
end))
end