aboutsummaryrefslogtreecommitdiffstats
path: root/util
diff options
context:
space:
mode:
authorMatthew Wild <mwild1@gmail.com>2011-11-02 07:17:26 +0000
committerMatthew Wild <mwild1@gmail.com>2011-11-02 07:17:26 +0000
commit882ae673fe39c5bec5668168b6a5ba6f1b35fbab (patch)
treebcb788812b22466058e556eb3728670991458b01 /util
parent6ac9b5f26bc0d22899e9b01e06857ba1751d721f (diff)
parent6dd8ff0d00e3b5079e374afd0e36314a8e1f75d8 (diff)
downloadprosody-882ae673fe39c5bec5668168b6a5ba6f1b35fbab.tar.gz
prosody-882ae673fe39c5bec5668168b6a5ba6f1b35fbab.zip
Merge with Zash
Diffstat (limited to 'util')
-rw-r--r--util/jid.lua13
1 files changed, 13 insertions, 0 deletions
diff --git a/util/jid.lua b/util/jid.lua
index 069817c6..4c4371d8 100644
--- a/util/jid.lua
+++ b/util/jid.lua
@@ -13,6 +13,16 @@ local nodeprep = require "util.encodings".stringprep.nodeprep;
local nameprep = require "util.encodings".stringprep.nameprep;
local resourceprep = require "util.encodings".stringprep.resourceprep;
+local escapes = {
+ [" "] = "\\20"; ['"'] = "\\22";
+ ["&"] = "\\26"; ["'"] = "\\27";
+ ["/"] = "\\2f"; [":"] = "\\3a";
+ ["<"] = "\\3c"; [">"] = "\\3e";
+ ["@"] = "\\40"; ["\\"] = "\\5c";
+};
+local unescapes = {};
+for k,v in pairs(escapes) do unescapes[v] = k; end
+
module "jid"
local function _split(jid)
@@ -91,4 +101,7 @@ function compare(jid, acl)
return false
end
+function escape(s) return s and (s:gsub(".", escapes)); end
+function unescape(s) return s and (s:gsub("\\%x%x", unescapes)); end
+
return _M;