r20514: implement idl for DsGetNT4ChangeLog() which transferres the meta data
[ira/wip.git] / webapps / qooxdoo-0.6.3-sdk / frontend / framework / source / class / qx / lang / String.js
1 /* ************************************************************************
2
3    qooxdoo - the new era of web development
4
5    http://qooxdoo.org
6
7    Copyright:
8      2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
9
10    License:
11      LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
12
13    Authors:
14      * Sebastian Werner (wpbasti)
15      * Andreas Ecker (ecker)
16
17 ************************************************************************ */
18
19 /* ************************************************************************
20
21 #module(core)
22
23 ************************************************************************ */
24
25 qx.OO.defineClass("qx.lang.String");
26
27 qx.Class.toCamelCase = function(str)
28 {
29   var vArr = str.split("-"), vLength = vArr.length;
30
31   if(vLength == 1) {
32     return vArr[0];
33   }
34
35   var vNew = str.indexOf("-") == 0 ? vArr[0].charAt(0).toUpperCase() + vArr[0].substring(1) : vArr[0];
36
37   for (var vPart, i=1; i<vLength; i++)
38   {
39     vPart = vArr[i];
40     vNew += vPart.charAt(0).toUpperCase() + vPart.substring(1);
41   }
42
43   return vNew;
44 }
45
46 qx.Class.trimLeft = function(str) {
47   return str.replace(/^\s+/, "");
48 }
49
50 qx.Class.trimRight = function(str) {
51   return str.replace(/\s+$/, "");
52 }
53
54 qx.Class.trim = function(str) {
55   return str.replace(/^\s+|\s+$/g, "");
56 }
57
58 qx.Class.stripTags = function(str) {
59   return str.replace(/<\/?[^>]+>/gi, "");
60 }
61
62 qx.Class.startsWith = function(fullstr, substr) {
63   return !fullstr.indexOf(substr);
64 }
65
66 qx.Class.endsWith = function(fullstr, substr) {
67   return fullstr.lastIndexOf(substr) === fullstr.length-substr.length;
68 }
69
70 qx.Class.pad = function(str, length, ch)
71 {
72   if (typeof ch === "undefined") {
73     ch = "0";
74   }
75
76   var temp = "";
77
78   for (var i=length, l=str.length; l<i; l++) {
79     temp += ch;
80   }
81
82   return temp + str;
83 }
84
85 qx.Class.toFirstUp = function(str) {
86   return str.charAt(0).toUpperCase() + str.substr(1);
87 }
88
89 qx.Class.add = function(str, v, sep)
90 {
91   if (str == v)
92   {
93     return str;
94   }
95   else if (str == "")
96   {
97     return v;
98   }
99   else
100   {
101     if (qx.util.Validation.isInvalid(sep)) {
102       sep = ",";
103     }
104
105     var a = str.split(sep);
106
107     if (a.indexOf(v) == -1)
108     {
109       a.push(v);
110       return a.join(sep);
111     }
112     else
113     {
114       return str;
115     }
116   }
117 }
118
119 qx.Class.remove = function(str, v, sep)
120 {
121   if (str == v || str == "")
122   {
123     return "";
124   }
125   else
126   {
127     if (qx.util.Validation.isInvalid(sep)) {
128       sep = ",";
129     }
130
131     var a = str.split(sep);
132     var p = a.indexOf(v);
133
134     if (p === -1) {
135       return str;
136     }
137
138     do { a.splice(p, 1); }
139     while((p = a.indexOf(v)) != -1);
140
141     return a.join(sep);
142   }
143 }
144
145 qx.Class.contains = function(str, s) {
146   return str.indexOf(s) != -1;
147 }
148
149
150 /**
151  * Escapes all chars that have a special meaning in regular expressions
152  *
153  * @param str {string} the string where to escape the chars.
154  * @return {string} the string with the escaped chars.
155  */
156 qx.Class.escapeRegexpChars = function(str) {
157     return str.replace(/([\\\.\(\)\[\]\{\}\^\$\?\+\*])/g, "\\$1");
158 }