source: Dev/trunk/src/client/dojox/xmpp/util.js @ 529

Last change on this file since 529 was 483, checked in by hendrikvanantwerpen, 11 years ago

Added Dojo 1.9.3 release.

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:
112        //              decodes HTML entities to js characters so the string can be
113        //              fed to a textarea.value
114        var ta = dojo.doc.createElement("textarea");
115        ta.innerHTML = str.replace(/</g,"&lt;").replace(/>/g,"&gt;");
116        return ta.value;
117};
118
119dojox.xmpp.util.htmlToPlain = function(str){
120        str = dojox.xmpp.util.decodeHtmlEntities(str);
121        str = str.replace(/<br\s*[i\/]{0,1}>/gi,"\n");
122        str = dojox.xmpp.util.stripHtml(str);
123        return str;
124};
125
126dojox.xmpp.util.Base64 = {};
127
128dojox.xmpp.util.Base64.encode = function(input){
129        var s2b = function(s){
130                var b = [];
131                for(var i = 0; i < s.length; ++i){
132                        b.push(s.charCodeAt(i));
133                }
134                return b;
135        };
136        return dojox.encoding.base64.encode(s2b(input));
137};
138
139
140dojox.xmpp.util.Base64.decode = function(input){
141        var b2s = function(b){
142                var s = [];
143                dojo.forEach(b, function(c){ s.push(String.fromCharCode(c)); });
144                return s.join("");
145        };
146        return b2s(dojox.encoding.base64.decode(input));
147};
Note: See TracBrowser for help on using the repository browser.