f780395403cfce07e590ea503ef48d2eadb83adb
[roojs1] / docs / src / Roo_util_Format.js.html
1 <html><head><title>/home/edward/gitlive/roojs1/Roo/util/Format.js</title><link rel="stylesheet" type="text/css" href="../../css/highlight-js.css"/></head><body class="highlightpage"><code class="jsdoc-pretty"><span class="jsdoc-comment">/*
2  * Based on:
3  * Ext JS Library 1.1.1
4  * Copyright(c) 2006-2007, Ext JS, LLC.
5  *
6  * Originally Released Under LGPL - original licence link has changed is not relivant.
7  *
8  * Fork - LGPL
9  * &lt;script type=&quot;text/javascript&quot;&gt;
10  */
11
12 /**
13  * @class Roo.util.Format
14  * Reusable data formatting functions
15  * @singleton
16  */
17 </span><span class="jsdoc-var">Roo.util.Format </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
18     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">trimRe </span><span class="jsdoc-syntax">= /^\s+|\s+$/g;
19     </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">{
20         </span><span class="jsdoc-comment">/**
21          * Truncate a string and add an ellipsis ('...') to the end if it exceeds the specified length
22          * @param {String} value The string to truncate
23          * @param {Number} length The maximum length to allow before truncating
24          * @return {String} The converted text
25          */
26         </span><span class="jsdoc-var">ellipsis </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">){
27             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">value.length </span><span class="jsdoc-syntax">&gt; </span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">){
28                 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">value.substr</span><span class="jsdoc-syntax">(0, </span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">-3)+</span><span class="jsdoc-string">&quot;...&quot;</span><span class="jsdoc-syntax">;
29             }
30             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">;
31         },
32
33         </span><span class="jsdoc-comment">/**
34          * Checks a reference and converts it to empty string if it is undefined
35          * @param {Mixed} value Reference to check
36          * @return {Mixed} Empty string if converted, otherwise the original value
37          */
38         </span><span class="jsdoc-var">undef </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">){
39             </span><span class="jsdoc-keyword">return typeof </span><span class="jsdoc-var">value </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-string">&quot;undefined&quot; </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">value </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;&quot;</span><span class="jsdoc-syntax">;
40         },
41
42         </span><span class="jsdoc-comment">/**
43          * Convert certain characters (&amp;, &lt;, &gt;, and ') to their HTML character equivalents for literal display in web pages.
44          * @param {String} value The string to encode
45          * @return {String} The encoded text
46          */
47         </span><span class="jsdoc-var">htmlEncode </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">){
48             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">!</span><span class="jsdoc-var">value </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">value </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">String</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/&amp;/g, </span><span class="jsdoc-string">&quot;&amp;amp;&quot;</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/&gt;/g, </span><span class="jsdoc-string">&quot;&amp;gt;&quot;</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/&lt;/g, </span><span class="jsdoc-string">&quot;&amp;lt;&quot;</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/&quot;/g, </span><span class="jsdoc-string">&quot;&amp;quot;&quot;</span><span class="jsdoc-syntax">);
49         },
50
51         </span><span class="jsdoc-comment">/**
52          * Convert certain characters (&amp;, &lt;, &gt;, and ') from their HTML character equivalents.
53          * @param {String} value The string to decode
54          * @return {String} The decoded text
55          */
56         </span><span class="jsdoc-var">htmlDecode </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">){
57             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">!</span><span class="jsdoc-var">value </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">value </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">String</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/&amp;amp;/g, </span><span class="jsdoc-string">&quot;&amp;&quot;</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/&amp;gt;/g, </span><span class="jsdoc-string">&quot;&gt;&quot;</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/&amp;lt;/g, </span><span class="jsdoc-string">&quot;&lt;&quot;</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/&amp;quot;/g, </span><span class="jsdoc-string">'&quot;'</span><span class="jsdoc-syntax">);
58         },
59
60         </span><span class="jsdoc-comment">/**
61          * Trims any whitespace from either side of a string
62          * @param {String} value The text to trim
63          * @return {String} The trimmed text
64          */
65         </span><span class="jsdoc-var">trim </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">){
66             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">String</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">trimRe</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;&quot;</span><span class="jsdoc-syntax">);
67         },
68
69         </span><span class="jsdoc-comment">/**
70          * Returns a substring from within an original string
71          * @param {String} value The original text
72          * @param {Number} start The start index of the substring
73          * @param {Number} length The length of the substring
74          * @return {String} The substring
75          */
76         </span><span class="jsdoc-var">substr </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">start</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">length</span><span class="jsdoc-syntax">){
77             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">String</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.substr</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">start</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">length</span><span class="jsdoc-syntax">);
78         },
79
80         </span><span class="jsdoc-comment">/**
81          * Converts a string to all lower case letters
82          * @param {String} value The text to convert
83          * @return {String} The converted text
84          */
85         </span><span class="jsdoc-var">lowercase </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">){
86             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">String</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.toLowerCase</span><span class="jsdoc-syntax">();
87         },
88
89         </span><span class="jsdoc-comment">/**
90          * Converts a string to all upper case letters
91          * @param {String} value The text to convert
92          * @return {String} The converted text
93          */
94         </span><span class="jsdoc-var">uppercase </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">){
95             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">String</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.toUpperCase</span><span class="jsdoc-syntax">();
96         },
97
98         </span><span class="jsdoc-comment">/**
99          * Converts the first character only of a string to upper case
100          * @param {String} value The text to convert
101          * @return {String} The converted text
102          */
103         </span><span class="jsdoc-var">capitalize </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">){
104             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">!</span><span class="jsdoc-var">value </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">value </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">value.charAt</span><span class="jsdoc-syntax">(0)</span><span class="jsdoc-var">.toUpperCase</span><span class="jsdoc-syntax">() + </span><span class="jsdoc-var">value.substr</span><span class="jsdoc-syntax">(1)</span><span class="jsdoc-var">.toLowerCase</span><span class="jsdoc-syntax">();
105         },
106
107         </span><span class="jsdoc-comment">// private
108         </span><span class="jsdoc-var">call </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">fn</span><span class="jsdoc-syntax">){
109             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">arguments.length </span><span class="jsdoc-syntax">&gt; 2){
110                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">args </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Array.prototype.slice.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">arguments</span><span class="jsdoc-syntax">, 2);
111                 </span><span class="jsdoc-var">args.unshift</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">);
112
113                 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-comment">/** eval:var:value */  </span><span class="jsdoc-keyword">eval</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">fn</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.apply</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">window</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">args</span><span class="jsdoc-syntax">);
114             }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
115                 </span><span class="jsdoc-comment">/** eval:var:value */
116                 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-comment">/** eval:var:value */ </span><span class="jsdoc-keyword">eval</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">fn</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">window</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">);
117             }
118         },
119
120
121         </span><span class="jsdoc-comment">/**
122          * safer version of Math.toFixed..??/
123          * @param {Number/String} value The numeric value to format
124          * @param {Number/String} value Decimal places 
125          * @return {String} The formatted currency string
126          */
127         </span><span class="jsdoc-var">toFixed </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">)
128         {
129             </span><span class="jsdoc-comment">// why not use to fixed - precision is buggered???
130             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">) {
131                 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">Math.round</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">-0);
132             }
133             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">fact </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.pow</span><span class="jsdoc-syntax">(10,</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">+1);
134             </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">Math.round</span><span class="jsdoc-syntax">((</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">-0)*</span><span class="jsdoc-var">fact</span><span class="jsdoc-syntax">))/</span><span class="jsdoc-var">fact</span><span class="jsdoc-syntax">;
135             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">z </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">+</span><span class="jsdoc-var">fact</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.substring</span><span class="jsdoc-syntax">(2);
136             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">Math.floor</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">)) {
137                 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">Math.floor</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">) + </span><span class="jsdoc-string">'.' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">z</span><span class="jsdoc-syntax">;
138             }
139
140             </span><span class="jsdoc-comment">// now just padd decimals..
141             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ps </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">String</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.split</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'.'</span><span class="jsdoc-syntax">);
142             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">fd </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">ps</span><span class="jsdoc-syntax">[1] + </span><span class="jsdoc-var">z</span><span class="jsdoc-syntax">);
143             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">r </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">fd.substring</span><span class="jsdoc-syntax">(0,</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">);
144             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">rm </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">fd.substring</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">);
145             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">rm </span><span class="jsdoc-syntax">&lt; 5) {
146                 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">ps</span><span class="jsdoc-syntax">[0] + </span><span class="jsdoc-string">'.' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">;
147             }
148             </span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">*=1; </span><span class="jsdoc-comment">// turn it into a number;
149             </span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">++;
150             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">String</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.length </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">) {
151                 </span><span class="jsdoc-var">ps</span><span class="jsdoc-syntax">[0]*=1;
152                 </span><span class="jsdoc-var">ps</span><span class="jsdoc-syntax">[0]++;
153                 </span><span class="jsdoc-var">r </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">String</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.substring</span><span class="jsdoc-syntax">(1); </span><span class="jsdoc-comment">// chop the end off.
154             </span><span class="jsdoc-syntax">}
155
156             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">ps</span><span class="jsdoc-syntax">[0] + </span><span class="jsdoc-string">'.' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">;
157
158         },
159
160         </span><span class="jsdoc-comment">/**
161          * Format a number as US currency
162          * @param {Number/String} value The numeric value to format
163          * @return {String} The formatted currency string
164          */
165         </span><span class="jsdoc-var">usMoney </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">){
166             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">'$' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">Roo.util.Format.number</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">);
167         },
168
169         </span><span class="jsdoc-comment">/**
170          * Format a number
171          * eventually this should probably emulate php's number_format
172          * @param {Number/String} value The numeric value to format
173          * @param {Number} decimals number of decimal places
174          * @param {String} delimiter for thousands (default comma)
175          * @return {String} The formatted currency string
176          */
177         </span><span class="jsdoc-var">number </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">decimals</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">thousandsDelimiter</span><span class="jsdoc-syntax">)
178         {
179             </span><span class="jsdoc-comment">// multiply and round.
180             </span><span class="jsdoc-var">decimals </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">decimals</span><span class="jsdoc-syntax">) == </span><span class="jsdoc-string">'undefined' </span><span class="jsdoc-syntax">? 2 : </span><span class="jsdoc-var">decimals</span><span class="jsdoc-syntax">;
181             </span><span class="jsdoc-var">thousandsDelimiter </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">thousandsDelimiter</span><span class="jsdoc-syntax">) == </span><span class="jsdoc-string">'undefined' </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">',' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">thousandsDelimiter</span><span class="jsdoc-syntax">;
182
183             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">mul </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.pow</span><span class="jsdoc-syntax">(10, </span><span class="jsdoc-var">decimals</span><span class="jsdoc-syntax">);
184             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">zero </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">String</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">mul</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.substring</span><span class="jsdoc-syntax">(1);
185             </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">Math.round</span><span class="jsdoc-syntax">((</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">-0)*</span><span class="jsdoc-var">mul</span><span class="jsdoc-syntax">))/</span><span class="jsdoc-var">mul</span><span class="jsdoc-syntax">;
186
187             </span><span class="jsdoc-comment">// if it's '0' number.. then
188
189             //v = (v == Math.floor(v)) ? v + &quot;.&quot; + zero : ((v*10 == Math.floor(v*10)) ? v + &quot;0&quot; : v);
190             </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">String</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">);
191             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ps </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">v.split</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'.'</span><span class="jsdoc-syntax">);
192             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">whole </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">ps</span><span class="jsdoc-syntax">[0];
193
194             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">r </span><span class="jsdoc-syntax">= /(\d+)(\d{3})/;
195             </span><span class="jsdoc-comment">// add comma's
196
197             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">thousandsDelimiter.length </span><span class="jsdoc-syntax">!= 0) {
198                 </span><span class="jsdoc-var">whole </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">whole.replace</span><span class="jsdoc-syntax">(/\B(?=(\d{3})+(?!\d))/g, </span><span class="jsdoc-var">thousandsDelimiter </span><span class="jsdoc-syntax">);
199             }
200
201             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">sub </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">ps</span><span class="jsdoc-syntax">[1] ?
202                     </span><span class="jsdoc-comment">// has decimals..
203                     </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">decimals </span><span class="jsdoc-syntax">?  (</span><span class="jsdoc-string">'.'</span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">ps</span><span class="jsdoc-syntax">[1] + </span><span class="jsdoc-var">zero.substring</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ps</span><span class="jsdoc-syntax">[1]</span><span class="jsdoc-var">.length</span><span class="jsdoc-syntax">)) : </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">) :
204                     </span><span class="jsdoc-comment">// does not have decimals
205                     </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">decimals </span><span class="jsdoc-syntax">? (</span><span class="jsdoc-string">'.' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">zero</span><span class="jsdoc-syntax">) : </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">);
206
207
208             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">whole </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">sub </span><span class="jsdoc-syntax">;
209         },
210
211         </span><span class="jsdoc-comment">/**
212          * Parse a value into a formatted date using the specified format pattern.
213          * @param {Mixed} value The value to format
214          * @param {String} format (optional) Any valid date format string (defaults to 'm/d/Y')
215          * @return {String} The formatted date string
216          */
217         </span><span class="jsdoc-var">date </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">format</span><span class="jsdoc-syntax">){
218             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">){
219                 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">&quot;&quot;</span><span class="jsdoc-syntax">;
220             }
221             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!(</span><span class="jsdoc-var">v </span><span class="jsdoc-keyword">instanceof </span><span class="jsdoc-var">Date</span><span class="jsdoc-syntax">)){
222                 </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Date</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Date.parse</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">));
223             }
224             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">v.dateFormat</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">format </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">Roo.util.Format.defaults.date</span><span class="jsdoc-syntax">);
225         },
226
227         </span><span class="jsdoc-comment">/**
228          * Returns a date rendering function that can be reused to apply a date format multiple times efficiently
229          * @param {String} format Any valid date format string
230          * @return {Function} The date formatting function
231          */
232         </span><span class="jsdoc-var">dateRenderer </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">format</span><span class="jsdoc-syntax">){
233             </span><span class="jsdoc-keyword">return function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">){
234                 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">Roo.util.Format.date</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">format</span><span class="jsdoc-syntax">);
235             };
236         },
237
238         </span><span class="jsdoc-comment">// private
239         </span><span class="jsdoc-var">stripTagsRE </span><span class="jsdoc-syntax">: /&lt;\/?[^&gt;]+&gt;/gi,
240
241         </span><span class="jsdoc-comment">/**
242          * Strips all HTML tags
243          * @param {Mixed} value The text from which to strip tags
244          * @return {String} The stripped text
245          */
246         </span><span class="jsdoc-var">stripTags </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">){
247             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">!</span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">String</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.stripTagsRE</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;&quot;</span><span class="jsdoc-syntax">);
248         }
249     };
250 }();
251 </span><span class="jsdoc-var">Roo.util.Format.defaults </span><span class="jsdoc-syntax">= {
252     </span><span class="jsdoc-var">date </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'d/M/Y'
253 </span><span class="jsdoc-syntax">};</span></code></body></html>