1
+ /**
2
+ * Copyright (c) 2012, Jason Mulligan <[email protected] >
3
+ * All rights reserved.
4
+ *
5
+ * Redistribution and use in source and binary forms, with or without
6
+ * modification, are permitted provided that the following conditions are met:
7
+ * * Redistributions of source code must retain the above copyright
8
+ * notice, this list of conditions and the following disclaimer.
9
+ * * Redistributions in binary form must reproduce the above copyright
10
+ * notice, this list of conditions and the following disclaimer in the
11
+ * documentation and/or other materials provided with the distribution.
12
+ * * Neither the name of filesize.js nor the
13
+ * names of its contributors may be used to endorse or promote products
14
+ * derived from this software without specific prior written permission.
15
+ *
16
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19
+ * DISCLAIMED. IN NO EVENT SHALL JASON MULLIGAN BE LIABLE FOR ANY
20
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
+ */
27
+
28
+ /**
29
+ * filesize.js
30
+ *
31
+ * @author Jason Mulligan <[email protected] >
32
+ * @version 1.0
33
+ */
34
+ ( function ( window ) {
35
+ "use strict" ;
36
+
37
+ /**
38
+ * Transforms a file size into a readable String
39
+ *
40
+ * @param {Mixed } arg String, Int or Float to transform
41
+ * @param {Number } pos Position to round to
42
+ * @return {String } Readable file size String
43
+ */
44
+ var filesize = function ( arg , pos ) {
45
+ var num = String ( arg ) . indexOf ( "." ) > - 1 ? parseFloat ( arg ) : parseInt ( arg ) ,
46
+ sizes = [ { "kB" : 0 } , { "MB" : 1024 } , { "GB" : 1048576 } , { "TB" : 1073741824 } ] ,
47
+ i = sizes . length ,
48
+ result = "" ,
49
+ size , suffix , n , x ;
50
+
51
+ pos = typeof pos === "undefined" ? 2 : parseInt ( pos ) ;
52
+
53
+ while ( i -- ) {
54
+ x = sizes [ i ] ;
55
+ for ( n in x ) {
56
+ if ( x . hasOwnProperty ( n ) ) {
57
+ size = x [ n ] ;
58
+ suffix = n
59
+ }
60
+ }
61
+ if ( num >= size ) {
62
+ result = ( suffix === "kB" ? num : ( num / size ) . toFixed ( pos ) ) + suffix ;
63
+ break ;
64
+ }
65
+ }
66
+
67
+ return result ;
68
+ } ;
69
+
70
+ // AMD support
71
+ typeof define === "function" ? define ( "filesize" , [ ] , function ( ) { return filesize ; } ) : window . filesize = filesize ;
72
+ } ) ( window ) ;
0 commit comments