util.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. // wrapped by build app
  2. define("dojox/xmpp/util", ["dijit","dojo","dojox","dojo/require!dojox/string/Builder,dojox/encoding/base64"], function(dijit,dojo,dojox){
  3. dojo.provide("dojox.xmpp.util");
  4. dojo.require("dojox.string.Builder");
  5. dojo.require("dojox.encoding.base64");
  6. dojox.xmpp.util.xmlEncode = function(str) {
  7. if(str) {
  8. str = str.replace("&", "&amp;").replace(">", "&gt;").replace("<", "&lt;").replace("'", "&apos;").replace('"', "&quot;");
  9. }
  10. return str;
  11. }
  12. dojox.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. dojox.xmpp.util.decodeJid = function(jid) {
  51. jid = jid.replace(/\\([23][02367acef])/g, function(match) {
  52. switch(match){
  53. case "\\20" :
  54. return ' ';
  55. case "\\22" :
  56. return '"';
  57. case "\\23" :
  58. return '#' ;
  59. case "\\26" :
  60. return '&';
  61. case "\\27" :
  62. return "'";
  63. case "\\2f" :
  64. return '/';
  65. case "\\3a" :
  66. return ':' ;
  67. case "\\3c" :
  68. return '<';
  69. case "\\3e" :
  70. return '>';
  71. }
  72. return "ARG";
  73. });
  74. return jid;
  75. }
  76. dojox.xmpp.util.createElement = function(tag, attributes, terminal){
  77. var elem = new dojox.string.Builder("<");
  78. elem.append(tag + " ");
  79. for (var attr in attributes){
  80. elem.append(attr + '="');
  81. elem.append(attributes[attr]);
  82. elem.append('" ');
  83. }
  84. if (terminal){
  85. elem.append("/>");
  86. }else{
  87. elem.append(">");
  88. }
  89. return elem.toString();
  90. }
  91. dojox.xmpp.util.stripHtml = function(str){
  92. // summary
  93. // Strips all HTML, including attributes and brackets
  94. // | <div onmouse="doBadThing()">Click <b>Me</b></div>
  95. // | becomes: Click Me
  96. var re=/<[^>]*?>/gi;
  97. for (var i=0; i<arguments.length; i++) {}
  98. return str.replace(re, "");
  99. }
  100. dojox.xmpp.util.decodeHtmlEntities = function(str){
  101. // Summary: decodes HTML entities to js characters so the string can be
  102. // fed to a textarea.value
  103. var ta = dojo.doc.createElement("textarea");
  104. ta.innerHTML = str.replace(/</g,"&lt;").replace(/>/g,"&gt;");
  105. return ta.value;
  106. }
  107. dojox.xmpp.util.htmlToPlain = function(str){
  108. str = dojox.xmpp.util.decodeHtmlEntities(str);
  109. str = str.replace(/<br\s*[i\/]{0,1}>/gi,"\n");
  110. str = dojox.xmpp.util.stripHtml(str);
  111. return str;
  112. }
  113. dojox.xmpp.util.Base64 = {};
  114. dojox.xmpp.util.Base64.encode = function(input){
  115. var s2b = function(s){
  116. var b = [];
  117. for(var i = 0; i < s.length; ++i){
  118. b.push(s.charCodeAt(i));
  119. }
  120. return b;
  121. };
  122. return dojox.encoding.base64.encode(s2b(input));
  123. }
  124. dojox.xmpp.util.Base64.decode = function(input){
  125. var b2s = function(b){
  126. var s = [];
  127. dojo.forEach(b, function(c){ s.push(String.fromCharCode(c)); });
  128. return s.join("");
  129. };
  130. return b2s(dojox.encoding.base64.decode(input));
  131. }
  132. });