source: Dev/branches/rest-dojo-ui/client/dojox/xmpp/util.js @ 275

Last change on this file since 275 was 256, checked in by hendrikvanantwerpen, 13 years ago

Reworked project structure based on REST interaction and Dojo library. As
soon as this is stable, the old jQueryUI branch can be removed (it's
kept for reference).

File size: 3.0 KB
Line 
1dojo.provide("dojox.xmpp.util");
2dojo.require("dojox.string.Builder");
3dojo.require("dojox.encoding.base64");
4
5dojox.xmpp.util.xmlEncode = function(str) {
6        if(str) {
7                str = str.replace("&", "&amp;").replace(">", "&gt;").replace("<", "&lt;").replace("'", "&apos;").replace('"', "&quot;");
8        }
9        return str;
10}
11
12dojox.xmpp.util.encodeJid = function(jid) {
13                var buffer = new dojox.string.Builder();
14                for(var i =0; i < jid.length; i++) {
15                        var ch = jid.charAt(i);
16                        var rep = ch;
17                        switch(ch){
18                                case ' ' :
19                                        rep = "\\20";
20                                break;
21                                case '"' :
22                                        rep = "\\22";
23                                break;
24                                case '#' :
25                                        rep = "\\23";
26                                break;
27                                case '&' :
28                                        rep = "\\26";
29                                break;
30                                case "'" :
31                                        rep = "\\27";
32                                break;
33                                case '/' :
34                                        rep = "\\2f";
35                                break;
36                                case ':' :
37                                        rep = "\\3a";
38                                break;
39                                case '<' :
40                                        rep = "\\3c";
41                                break;
42                                case '>' :
43                                        rep = "\\3e";
44                                break;
45                        }
46                        buffer.append(rep);
47                }
48                return buffer.toString();
49        }
50
51dojox.xmpp.util.decodeJid = function(jid) {
52       
53        jid = jid.replace(/\\([23][02367acef])/g, function(match) {
54                        switch(match){
55                                case "\\20" :
56                                        return  ' ';
57                                case "\\22"  :
58                                        return '"';
59                                case "\\23" :
60                                        return '#' ;
61                                case "\\26" :
62                                        return  '&';
63                                case "\\27" :
64                                        return   "'";
65                                case "\\2f" :
66                                        return  '/';
67                                case "\\3a" :
68                                        return ':' ;
69                                case "\\3c" :
70                                        return  '<';
71                                case "\\3e" :
72                                        return  '>';
73                        }
74                        return "ARG";
75        });
76       
77        return jid;
78}
79
80
81dojox.xmpp.util.createElement = function(tag, attributes, terminal){
82        var elem = new dojox.string.Builder("<");
83        elem.append(tag + " ");
84
85        for (var attr in attributes){
86                elem.append(attr + '="');
87                elem.append(attributes[attr]);
88                elem.append('" ');
89        }
90       
91        if (terminal){
92                elem.append("/>");
93        }else{
94                elem.append(">");
95        }
96
97        return elem.toString();
98}
99
100dojox.xmpp.util.stripHtml = function(str){
101        // summary
102        //              Strips all HTML, including attributes and brackets
103        //              | <div onmouse="doBadThing()">Click <b>Me</b></div>
104        //              | becomes: Click Me
105        var re=/<[^>]*?>/gi;
106        for (var i=0; i<arguments.length; i++) {}
107        return str.replace(re, "");
108}
109
110dojox.xmpp.util.decodeHtmlEntities = function(str){
111        // Summary: decodes HTML entities to js characters so the string can be
112        // fed to a textarea.value
113        var ta = dojo.doc.createElement("textarea");
114        ta.innerHTML = str.replace(/</g,"&lt;").replace(/>/g,"&gt;");
115        return ta.value;
116}
117
118dojox.xmpp.util.htmlToPlain = function(str){
119        str = dojox.xmpp.util.decodeHtmlEntities(str);
120        str = str.replace(/<br\s*[i\/]{0,1}>/gi,"\n");
121        str = dojox.xmpp.util.stripHtml(str);
122        return str;
123}
124
125dojox.xmpp.util.Base64 = {};
126
127dojox.xmpp.util.Base64.encode = function(input){
128        var s2b = function(s){
129                var b = [];
130                for(var i = 0; i < s.length; ++i){
131                        b.push(s.charCodeAt(i));
132                }
133                return b;
134        };
135        return dojox.encoding.base64.encode(s2b(input));
136}
137
138
139dojox.xmpp.util.Base64.decode = function(input){
140        var b2s = function(b){
141                var s = [];
142                dojo.forEach(b, function(c){ s.push(String.fromCharCode(c)); });
143                return s.join("");
144        };
145        return b2s(dojox.encoding.base64.decode(input));
146}
Note: See TracBrowser for help on using the repository browser.