Mercurial > prosody-hg
comparison util/stanza.lua @ 6466:6e67c73f730c
util.stanza: Escape newlines and tabs (\r\n\t) when serializing stanzas. \r\n transforms into \n otherwise, and \r\n\t in attributes transforms into spaces.
| author | Waqas Hussain <waqas20@gmail.com> |
|---|---|
| date | Wed, 08 Oct 2014 15:56:11 -0400 |
| parents | f56e449a63e3 |
| children | 3728c30da4e3 9030b056bd4a |
comparison
equal
deleted
inserted
replaced
| 6463:460584257cc9 | 6466:6e67c73f730c |
|---|---|
| 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 = { |
| 206 function xml_escape(str) return (s_gsub(str, "['&<>\"]", escape_table)); end | 206 ["'"] = "'"; |
| 207 ['"'] = """; | |
| 208 ["<"] = "<"; | |
| 209 [">"] = ">"; | |
| 210 ["&"] = "&"; | |
| 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"] = "	"; | |
| 214 ["\n"] = "
"; | |
| 215 ["\r"] = "
"; | |
| 216 }; | |
| 217 function xml_escape(str) return (s_gsub(str, "['&<>\"\t\n\r]", escape_table)); end | |
| 207 _M.xml_escape = xml_escape; | 218 _M.xml_escape = xml_escape; |
| 208 end | 219 end |
| 209 | 220 |
| 210 local function _dostring(t, buf, self, xml_escape, parentns) | 221 local function _dostring(t, buf, self, xml_escape, parentns) |
| 211 local nsid = 0; | 222 local nsid = 0; |
