Comparison

util/stanza.lua @ 6499:9030b056bd4a 0.9.7

Backout changeset 6e67c73f730c: not a major fix and it breaks interop with at least Isode M-Link, and possibly standards, while it's not clear it actually fixes the original problem either.
author Matthew Wild <mwild1@gmail.com>
date Fri, 24 Oct 2014 23:20:06 +0100
parent 6466:6e67c73f730c
child 6501:71b6e8b48a12
comparison
equal deleted inserted replaced
6498:ce66fe13eebe 6499:9030b056bd4a
200 end 200 end
201 201
202 202
203 local xml_escape 203 local xml_escape
204 do 204 do
205 local escape_table = { 205 local escape_table = { ["'"] = "&apos;", ["\""] = "&quot;", ["<"] = "&lt;", [">"] = "&gt;", ["&"] = "&amp;" };
206 ["'"] = "&apos;"; 206 function xml_escape(str) return (s_gsub(str, "['&<>\"]", escape_table)); end
207 ['"'] = "&quot;";
208 ["<"] = "&lt;";
209 [">"] = "&gt;";
210 ["&"] = "&amp;";
211 -- escape this whitespace because [\r\n\t] change into spaces in attributes
212 -- and \r\n changes into \n in text, and we want to preserve original bytes
213 ["\t"] = "&#x9;";
214 ["\n"] = "&#xA;";
215 ["\r"] = "&#xD;";
216 };
217 function xml_escape(str) return (s_gsub(str, "['&<>\"\t\n\r]", escape_table)); end
218 _M.xml_escape = xml_escape; 207 _M.xml_escape = xml_escape;
219 end 208 end
220 209
221 local function _dostring(t, buf, self, xml_escape, parentns) 210 local function _dostring(t, buf, self, xml_escape, parentns)
222 local nsid = 0; 211 local nsid = 0;