3 |
3 |
4 module "jid" |
4 module "jid" |
5 |
5 |
6 function split(jid) |
6 function split(jid) |
7 if not jid then return; end |
7 if not jid then return; end |
8 -- TODO verify JID, and return; if invalid |
|
9 local node, nodelen = match(jid, "^([^@]+)@()"); |
8 local node, nodelen = match(jid, "^([^@]+)@()"); |
10 local host, hostlen = match(jid, "^([^@/]+)()", nodelen) |
9 local host, hostlen = match(jid, "^([^@/]+)()", nodelen) |
11 if node and not host then return nil, nil, nil; end |
10 if node and not host then return nil, nil, nil; end |
12 local resource = match(jid, "^/(.+)$", hostlen); |
11 local resource = match(jid, "^/(.+)$", hostlen); |
13 if (not host) or ((not resource) and #jid >= hostlen) then return nil, nil, nil; end |
12 if (not host) or ((not resource) and #jid >= hostlen) then return nil, nil, nil; end |