numeraljs-rails 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,8 @@
1
+ module Numeraljs
2
+ module Rails
3
+ class Engine < ::Rails::Engine
4
+ # Get rails to add app, lib, vendor to load path
5
+ end
6
+ end
7
+ end
8
+
@@ -0,0 +1,32 @@
1
+ // numeral.js language configuration
2
+ // language : czech (cs)
3
+ // author : Anatoli Papirovski : https://github.com/apapirovski
4
+ (function () {
5
+ var language = {
6
+ delimiters: {
7
+ thousands: ' ',
8
+ decimal: ','
9
+ },
10
+ abbreviations: {
11
+ thousand: 'tis.',
12
+ million: 'mil.',
13
+ billion: 'b',
14
+ trillion: 't'
15
+ },
16
+ ordinal: function () {
17
+ return '.';
18
+ },
19
+ currency: {
20
+ symbol: 'Kč'
21
+ }
22
+ };
23
+
24
+ // Node
25
+ if (typeof module !== 'undefined' && module.exports) {
26
+ module.exports = language;
27
+ }
28
+ // Browser
29
+ if (typeof window !== 'undefined' && this.numeral && this.numeral.language) {
30
+ this.numeral.language('cs', language);
31
+ }
32
+ }());
@@ -0,0 +1,32 @@
1
+ // numeral.js language configuration
2
+ // language : german (de-de)
3
+ // author : Marco Krage : https://github.com/sinky
4
+ (function () {
5
+ var language = {
6
+ delimiters: {
7
+ thousands: '.',
8
+ decimal: ','
9
+ },
10
+ abbreviations: {
11
+ thousand: 'k',
12
+ million: 'm',
13
+ billion: 'b',
14
+ trillion: 't'
15
+ },
16
+ ordinal: function (number) {
17
+ return '.';
18
+ },
19
+ currency: {
20
+ symbol: '€'
21
+ }
22
+ };
23
+
24
+ // Node
25
+ if (typeof module !== 'undefined' && module.exports) {
26
+ module.exports = language;
27
+ }
28
+ // Browser
29
+ if (typeof window !== 'undefined' && this.numeral && this.numeral.language) {
30
+ this.numeral.language('de-de', language);
31
+ }
32
+ }());
@@ -0,0 +1,36 @@
1
+ // numeral.js language configuration
2
+ // language : english united kingdom (uk)
3
+ // author : Dan Ristic : https://github.com/dristic
4
+ (function () {
5
+ var language = {
6
+ delimiters: {
7
+ thousands: ',',
8
+ decimal: '.'
9
+ },
10
+ abbreviations: {
11
+ thousand: 'k',
12
+ million: 'm',
13
+ billion: 'b',
14
+ trillion: 't'
15
+ },
16
+ ordinal: function (number) {
17
+ var b = number % 10;
18
+ return (~~ (number % 100 / 10) === 1) ? 'th' :
19
+ (b === 1) ? 'st' :
20
+ (b === 2) ? 'nd' :
21
+ (b === 3) ? 'rd' : 'th';
22
+ },
23
+ currency: {
24
+ symbol: '£'
25
+ }
26
+ };
27
+
28
+ // Node
29
+ if (typeof module !== 'undefined' && module.exports) {
30
+ module.exports = language;
31
+ }
32
+ // Browser
33
+ if (typeof window !== 'undefined' && this.numeral && this.numeral.language) {
34
+ this.numeral.language('en-gb', language);
35
+ }
36
+ }());
@@ -0,0 +1,37 @@
1
+ // numeral.js language configuration
2
+ // language : spanish
3
+ // author : Hernan Garcia : https://github.com/hgarcia
4
+ (function () {
5
+ var language = {
6
+ delimiters: {
7
+ thousands: '.',
8
+ decimal: ','
9
+ },
10
+ abbreviations: {
11
+ thousand: 'k',
12
+ million: 'mm',
13
+ billion: 'b',
14
+ trillion: 't'
15
+ },
16
+ ordinal: function (number) {
17
+ var b = number % 10;
18
+ return (b === 1 || b === 3) ? 'er' :
19
+ (b === 2) ? 'do' :
20
+ (b === 7 || b === 0) ? 'mo' :
21
+ (b === 8) ? 'vo' :
22
+ (b === 9) ? 'no' : 'to';
23
+ },
24
+ currency: {
25
+ symbol: '$'
26
+ }
27
+ };
28
+
29
+ // Node
30
+ if (typeof module !== 'undefined' && module.exports) {
31
+ module.exports = language;
32
+ }
33
+ // Browser
34
+ if (typeof window !== 'undefined' && this.numeral && this.numeral.language) {
35
+ this.numeral.language('es', language);
36
+ }
37
+ }());
@@ -0,0 +1,32 @@
1
+ // numeral.js language configuration
2
+ // language : french (fr)
3
+ // author : Adam Draper : https://github.com/adamwdraper
4
+ (function () {
5
+ var language = {
6
+ delimiters: {
7
+ thousands: ' ',
8
+ decimal: ','
9
+ },
10
+ abbreviations: {
11
+ thousand: 'k',
12
+ million: 'm',
13
+ billion: 'b',
14
+ trillion: 't'
15
+ },
16
+ ordinal : function (number) {
17
+ return number === 1 ? 'er' : 'e';
18
+ },
19
+ currency: {
20
+ symbol: '€'
21
+ }
22
+ };
23
+
24
+ // Node
25
+ if (typeof module !== 'undefined' && module.exports) {
26
+ module.exports = language;
27
+ }
28
+ // Browser
29
+ if (typeof window !== 'undefined' && this.numeral && this.numeral.language) {
30
+ this.numeral.language('fr', language);
31
+ }
32
+ }());
@@ -0,0 +1,32 @@
1
+ // numeral.js language configuration
2
+ // language : italian Italy (it)
3
+ // author : Giacomo Trombi : http://cinquepunti.it
4
+ (function () {
5
+ var language = {
6
+ delimiters: {
7
+ thousands: '.',
8
+ decimal: ','
9
+ },
10
+ abbreviations: {
11
+ thousand: 'mila',
12
+ million: 'mil',
13
+ billion: 'b',
14
+ trillion: 't'
15
+ },
16
+ ordinal: function (number) {
17
+ return 'º';
18
+ },
19
+ currency: {
20
+ symbol: '€'
21
+ }
22
+ };
23
+
24
+ // Node
25
+ if (typeof module !== 'undefined' && module.exports) {
26
+ module.exports = language;
27
+ }
28
+ // Browser
29
+ if (typeof window !== 'undefined' && this.numeral && this.numeral.language) {
30
+ this.numeral.language('it', language);
31
+ }
32
+ }());
@@ -0,0 +1,4 @@
1
+ // numeral.js language configuration
2
+ // language : czech (cs)
3
+ // author : Anatoli Papirovski : https://github.com/apapirovski
4
+ (function(){var e={delimiters:{thousands:" ",decimal:","},abbreviations:{thousand:"tis.",million:"mil.",billion:"b",trillion:"t"},ordinal:function(){return"."},currency:{symbol:"Kč"}};typeof module!="undefined"&&module.exports&&(module.exports=e);typeof window!="undefined"&&this.numeral&&this.numeral.language&&this.numeral.language("cs",e)})();
@@ -0,0 +1,4 @@
1
+ // numeral.js language configuration
2
+ // language : german (de-de)
3
+ // author : Marco Krage : https://github.com/sinky
4
+ (function(){var e={delimiters:{thousands:".",decimal:","},abbreviations:{thousand:"k",million:"m",billion:"b",trillion:"t"},ordinal:function(e){return"."},currency:{symbol:"€"}};typeof module!="undefined"&&module.exports&&(module.exports=e);typeof window!="undefined"&&this.numeral&&this.numeral.language&&this.numeral.language("de-de",e)})();
@@ -0,0 +1,4 @@
1
+ // numeral.js language configuration
2
+ // language : english united kingdom (uk)
3
+ // author : Dan Ristic : https://github.com/dristic
4
+ (function(){var e={delimiters:{thousands:",",decimal:"."},abbreviations:{thousand:"k",million:"m",billion:"b",trillion:"t"},ordinal:function(e){var t=e%10;return~~(e%100/10)===1?"th":t===1?"st":t===2?"nd":t===3?"rd":"th"},currency:{symbol:"£"}};typeof module!="undefined"&&module.exports&&(module.exports=e);typeof window!="undefined"&&this.numeral&&this.numeral.language&&this.numeral.language("en-gb",e)})();
@@ -0,0 +1,4 @@
1
+ // numeral.js language configuration
2
+ // language : spanish
3
+ // author : Hernan Garcia : https://github.com/hgarcia
4
+ (function(){var e={delimiters:{thousands:".",decimal:","},abbreviations:{thousand:"k",million:"mm",billion:"b",trillion:"t"},ordinal:function(e){var t=e%10;return t===1||t===3?"er":t===2?"do":t===7||t===0?"mo":t===8?"vo":t===9?"no":"to"},currency:{symbol:"$"}};typeof module!="undefined"&&module.exports&&(module.exports=e);typeof window!="undefined"&&this.numeral&&this.numeral.language&&this.numeral.language("es",e)})();
@@ -0,0 +1,4 @@
1
+ // numeral.js language configuration
2
+ // language : french (fr)
3
+ // author : Adam Draper : https://github.com/adamwdraper
4
+ (function(){var e={delimiters:{thousands:" ",decimal:","},abbreviations:{thousand:"k",million:"m",billion:"b",trillion:"t"},ordinal:function(e){return e===1?"er":"e"},currency:{symbol:"€"}};typeof module!="undefined"&&module.exports&&(module.exports=e);typeof window!="undefined"&&this.numeral&&this.numeral.language&&this.numeral.language("fr",e)})();
@@ -0,0 +1,4 @@
1
+ // numeral.js language configuration
2
+ // language : italian Italy (it)
3
+ // author : Giacomo Trombi : http://cinquepunti.it
4
+ (function(){var e={delimiters:{thousands:".",decimal:","},abbreviations:{thousand:"mila",million:"mil",billion:"b",trillion:"t"},ordinal:function(e){return"º"},currency:{symbol:"€"}};typeof module!="undefined"&&module.exports&&(module.exports=e);typeof window!="undefined"&&this.numeral&&this.numeral.language&&this.numeral.language("it",e)})();
@@ -0,0 +1,4 @@
1
+ // numeral.js language configuration
2
+ // language : portuguese brazil (pt-br)
3
+ // author : Ramiro Varandas Jr : https://github.com/ramirovjr
4
+ (function(){var e={delimiters:{thousands:".",decimal:","},abbreviations:{thousand:"mil",million:"milhões",billion:"b",trillion:"t"},ordinal:function(e){return"º"},currency:{symbol:"R$"}};typeof module!="undefined"&&module.exports&&(module.exports=e);typeof window!="undefined"&&this.numeral&&this.numeral.language&&this.numeral.language("pt-br",e)})();
@@ -0,0 +1,4 @@
1
+ // numeral.js language configuration
2
+ // language : portuguese (pt-pt)
3
+ // author : Diogo Resende : https://github.com/dresende
4
+ (function(){var e={delimiters:{thousands:" ",decimal:","},abbreviations:{thousand:"k",million:"m",billion:"b",trillion:"t"},ordinal:function(e){return"º"},currency:{symbol:"€"}};typeof module!="undefined"&&module.exports&&(module.exports=e);typeof window!="undefined"&&this.numeral&&this.numeral.language&&this.numeral.language("pt-pt",e)})();
@@ -0,0 +1,4 @@
1
+ // numeral.js language configuration
2
+ // language : russian (ru)
3
+ // author : Anatoli Papirovski : https://github.com/apapirovski
4
+ (function(){var e={delimiters:{thousands:" ",decimal:","},abbreviations:{thousand:"тыс.",million:"млн",billion:"b",trillion:"t"},ordinal:function(){return"."},currency:{symbol:"руб."}};typeof module!="undefined"&&module.exports&&(module.exports=e);typeof window!="undefined"&&this.numeral&&this.numeral.language&&this.numeral.language("ru",e)})();
@@ -0,0 +1,6 @@
1
+ // numeral.js language configuration
2
+ // language : turkish (tr)
3
+ // author : Ecmel Ercan : https://github.com/ecmel
4
+ // Erhan Gundogan : https://github.com/erhangundogan,
5
+ // Burak Yiğit Kaya: https://github.com/BYK
6
+ (function(){var e={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"},t={delimiters:{thousands:".",decimal:","},abbreviations:{thousand:"b",million:"m",billion:"bi",trillion:"t"},ordinal:function(t){if(t===0)return"'ıncı";var n=t%10,r=t%100-n,i=t>=100?100:null;return e[n]||e[r]||e[i]},currency:{symbol:"₺"}};typeof module!="undefined"&&module.exports&&(module.exports=t);typeof window!="undefined"&&this.numeral&&this.numeral.language&&this.numeral.language("tr",t)})();
@@ -0,0 +1,32 @@
1
+ // numeral.js language configuration
2
+ // language : portuguese brazil (pt-br)
3
+ // author : Ramiro Varandas Jr : https://github.com/ramirovjr
4
+ (function () {
5
+ var language = {
6
+ delimiters: {
7
+ thousands: '.',
8
+ decimal: ','
9
+ },
10
+ abbreviations: {
11
+ thousand: 'mil',
12
+ million: 'milhões',
13
+ billion: 'b',
14
+ trillion: 't'
15
+ },
16
+ ordinal: function (number) {
17
+ return 'º';
18
+ },
19
+ currency: {
20
+ symbol: 'R$'
21
+ }
22
+ };
23
+
24
+ // Node
25
+ if (typeof module !== 'undefined' && module.exports) {
26
+ module.exports = language;
27
+ }
28
+ // Browser
29
+ if (typeof window !== 'undefined' && this.numeral && this.numeral.language) {
30
+ this.numeral.language('pt-br', language);
31
+ }
32
+ }());
@@ -0,0 +1,32 @@
1
+ // numeral.js language configuration
2
+ // language : portuguese (pt-pt)
3
+ // author : Diogo Resende : https://github.com/dresende
4
+ (function () {
5
+ var language = {
6
+ delimiters: {
7
+ thousands: ' ',
8
+ decimal: ','
9
+ },
10
+ abbreviations: {
11
+ thousand: 'k',
12
+ million: 'm',
13
+ billion: 'b',
14
+ trillion: 't'
15
+ },
16
+ ordinal : function (number) {
17
+ return 'º';
18
+ },
19
+ currency: {
20
+ symbol: '€'
21
+ }
22
+ };
23
+
24
+ // Node
25
+ if (typeof module !== 'undefined' && module.exports) {
26
+ module.exports = language;
27
+ }
28
+ // Browser
29
+ if (typeof window !== 'undefined' && this.numeral && this.numeral.language) {
30
+ this.numeral.language('pt-pt', language);
31
+ }
32
+ }());
@@ -0,0 +1,35 @@
1
+ // numeral.js language configuration
2
+ // language : russian (ru)
3
+ // author : Anatoli Papirovski : https://github.com/apapirovski
4
+ (function () {
5
+ var language = {
6
+ delimiters: {
7
+ thousands: ' ',
8
+ decimal: ','
9
+ },
10
+ abbreviations: {
11
+ thousand: 'тыс.',
12
+ million: 'млн',
13
+ billion: 'b',
14
+ trillion: 't'
15
+ },
16
+ ordinal: function () {
17
+ // not ideal, but since in Russian it can taken on
18
+ // different forms (masculine, feminine, neuter)
19
+ // this is all we can do
20
+ return '.';
21
+ },
22
+ currency: {
23
+ symbol: 'руб.'
24
+ }
25
+ };
26
+
27
+ // Node
28
+ if (typeof module !== 'undefined' && module.exports) {
29
+ module.exports = language;
30
+ }
31
+ // Browser
32
+ if (typeof window !== 'undefined' && this.numeral && this.numeral.language) {
33
+ this.numeral.language('ru', language);
34
+ }
35
+ }());
@@ -0,0 +1,68 @@
1
+ // numeral.js language configuration
2
+ // language : turkish (tr)
3
+ // author : Ecmel Ercan : https://github.com/ecmel
4
+ // Erhan Gundogan : https://github.com/erhangundogan,
5
+ // Burak Yiğit Kaya: https://github.com/BYK
6
+
7
+ (function () {
8
+ var suffixes = {
9
+ 1: "'inci",
10
+ 5: "'inci",
11
+ 8: "'inci",
12
+ 70: "'inci",
13
+ 80: "'inci",
14
+
15
+ 2: "'nci",
16
+ 7: "'nci",
17
+ 20: "'nci",
18
+ 50: "'nci",
19
+
20
+ 3: "'üncü",
21
+ 4: "'üncü",
22
+ 100: "'üncü",
23
+
24
+ 6: "'ncı",
25
+
26
+ 9: "'uncu",
27
+ 10: "'uncu",
28
+ 30: "'uncu",
29
+
30
+ 60: "'ıncı",
31
+ 90: "'ıncı"
32
+ };
33
+ var language = {
34
+ delimiters: {
35
+ thousands: '.',
36
+ decimal: ','
37
+ },
38
+ abbreviations: {
39
+ thousand: 'b',
40
+ million: 'm',
41
+ billion: 'bi',
42
+ trillion: 't'
43
+ },
44
+ ordinal: function (number) {
45
+ if (number === 0) { // special case for zero
46
+ return "'ıncı";
47
+ }
48
+
49
+ var a = number % 10;
50
+ var b = number % 100 - a;
51
+ var c = number >= 100 ? 100 : null;
52
+
53
+ return suffixes[a] || suffixes[b] || suffixes[c];
54
+ },
55
+ currency: {
56
+ symbol: '\u20BA'
57
+ }
58
+ };
59
+
60
+ // Node
61
+ if (typeof module !== 'undefined' && module.exports) {
62
+ module.exports = language;
63
+ }
64
+ // Browser
65
+ if (typeof window !== 'undefined' && this.numeral && this.numeral.language) {
66
+ this.numeral.language('tr', language);
67
+ }
68
+ }());
@@ -0,0 +1,518 @@
1
+ // numeral.js
2
+ // version : 1.4.5
3
+ // author : Adam Draper
4
+ // license : MIT
5
+ // http://adamwdraper.github.com/Numeral-js/
6
+
7
+ (function () {
8
+
9
+ /************************************
10
+ Constants
11
+ ************************************/
12
+
13
+ var numeral,
14
+ VERSION = '1.4.5',
15
+ // internal storage for language config files
16
+ languages = {},
17
+ currentLanguage = 'en',
18
+ zeroFormat = null,
19
+ // check for nodeJS
20
+ hasModule = (typeof module !== 'undefined' && module.exports);
21
+
22
+
23
+ /************************************
24
+ Constructors
25
+ ************************************/
26
+
27
+
28
+ // Numeral prototype object
29
+ function Numeral (number) {
30
+ this._n = number;
31
+ }
32
+
33
+ /**
34
+ * Implementation of toFixed() that treats floats more like decimals
35
+ *
36
+ * Fixes binary rounding issues (eg. (0.615).toFixed(2) === '0.61') that present
37
+ * problems for accounting- and finance-related software.
38
+ */
39
+ function toFixed (value, precision, optionals) {
40
+ var power = Math.pow(10, precision),
41
+ output;
42
+
43
+ // Multiply up by precision, round accurately, then divide and use native toFixed():
44
+ output = (Math.round(value * power) / power).toFixed(precision);
45
+
46
+ if (optionals) {
47
+ var optionalsRegExp = new RegExp('0{1,' + optionals + '}$');
48
+ output = output.replace(optionalsRegExp, '');
49
+ }
50
+
51
+ return output;
52
+ }
53
+
54
+ /************************************
55
+ Formatting
56
+ ************************************/
57
+
58
+ // determine what type of formatting we need to do
59
+ function formatNumeral (n, format) {
60
+ var output;
61
+
62
+ // figure out what kind of format we are dealing with
63
+ if (format.indexOf('$') > -1) { // currency!!!!!
64
+ output = formatCurrency(n, format);
65
+ } else if (format.indexOf('%') > -1) { // percentage
66
+ output = formatPercentage(n, format);
67
+ } else if (format.indexOf(':') > -1) { // time
68
+ output = formatTime(n, format);
69
+ } else { // plain ol' numbers or bytes
70
+ output = formatNumber(n, format);
71
+ }
72
+
73
+ // return string
74
+ return output;
75
+ }
76
+
77
+ // revert to number
78
+ function unformatNumeral (n, string) {
79
+ if (string.indexOf(':') > -1) {
80
+ n._n = unformatTime(string);
81
+ } else {
82
+ if (string === zeroFormat) {
83
+ n._n = 0;
84
+ } else {
85
+ var stringOriginal = string;
86
+ if (languages[currentLanguage].delimiters.decimal !== '.') {
87
+ string = string.replace(/\./g,'').replace(languages[currentLanguage].delimiters.decimal, '.');
88
+ }
89
+
90
+ // see if abbreviations are there so that we can multiply to the correct number
91
+ var thousandRegExp = new RegExp(languages[currentLanguage].abbreviations.thousand + '(?:\\)|(\\' + languages[currentLanguage].currency.symbol + ')?(?:\\))?)?$'),
92
+ millionRegExp = new RegExp(languages[currentLanguage].abbreviations.million + '(?:\\)|(\\' + languages[currentLanguage].currency.symbol + ')?(?:\\))?)?$'),
93
+ billionRegExp = new RegExp(languages[currentLanguage].abbreviations.billion + '(?:\\)|(\\' + languages[currentLanguage].currency.symbol + ')?(?:\\))?)?$'),
94
+ trillionRegExp = new RegExp(languages[currentLanguage].abbreviations.trillion + '(?:\\)|(\\' + languages[currentLanguage].currency.symbol + ')?(?:\\))?)?$');
95
+
96
+ // see if bytes are there so that we can multiply to the correct number
97
+ var prefixes = ['KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],
98
+ bytesMultiplier = false;
99
+
100
+ for (var power = 0; power <= prefixes.length; power++) {
101
+ bytesMultiplier = (string.indexOf(prefixes[power]) > -1) ? Math.pow(1024, power + 1) : false;
102
+
103
+ if (bytesMultiplier) {
104
+ break;
105
+ }
106
+ }
107
+
108
+ // do some math to create our number
109
+ n._n = ((bytesMultiplier) ? bytesMultiplier : 1) * ((stringOriginal.match(thousandRegExp)) ? Math.pow(10, 3) : 1) * ((stringOriginal.match(millionRegExp)) ? Math.pow(10, 6) : 1) * ((stringOriginal.match(billionRegExp)) ? Math.pow(10, 9) : 1) * ((stringOriginal.match(trillionRegExp)) ? Math.pow(10, 12) : 1) * ((string.indexOf('%') > -1) ? 0.01 : 1) * Number(((string.indexOf('(') > -1) ? '-' : '') + string.replace(/[^0-9\.'-]+/g, ''));
110
+
111
+ // round if we are talking about bytes
112
+ n._n = (bytesMultiplier) ? Math.ceil(n._n) : n._n;
113
+ }
114
+ }
115
+ return n._n;
116
+ }
117
+
118
+ function formatCurrency (n, format) {
119
+ var prependSymbol = (format.indexOf('$') <= 1) ? true : false;
120
+
121
+ // remove $ for the moment
122
+ var space = '';
123
+
124
+ // check for space before or after currency
125
+ if (format.indexOf(' $') > -1) {
126
+ space = ' ';
127
+ format = format.replace(' $', '');
128
+ } else if (format.indexOf('$ ') > -1) {
129
+ space = ' ';
130
+ format = format.replace('$ ', '');
131
+ } else {
132
+ format = format.replace('$', '');
133
+ }
134
+
135
+ // format the number
136
+ var output = formatNumeral(n, format);
137
+
138
+ // position the symbol
139
+ if (prependSymbol) {
140
+ if (output.indexOf('(') > -1 || output.indexOf('-') > -1) {
141
+ output = output.split('');
142
+ output.splice(1, 0, languages[currentLanguage].currency.symbol + space);
143
+ output = output.join('');
144
+ } else {
145
+ output = languages[currentLanguage].currency.symbol + space + output;
146
+ }
147
+ } else {
148
+ if (output.indexOf(')') > -1) {
149
+ output = output.split('');
150
+ output.splice(-1, 0, space + languages[currentLanguage].currency.symbol);
151
+ output = output.join('');
152
+ } else {
153
+ output = output + space + languages[currentLanguage].currency.symbol;
154
+ }
155
+ }
156
+
157
+ return output;
158
+ }
159
+
160
+ function formatPercentage (n, format) {
161
+ var space = '';
162
+ // check for space before %
163
+ if (format.indexOf(' %') > -1) {
164
+ space = ' ';
165
+ format = format.replace(' %', '');
166
+ } else {
167
+ format = format.replace('%', '');
168
+ }
169
+
170
+ n._n = n._n * 100;
171
+ var output = formatNumeral(n, format);
172
+ if (output.indexOf(')') > -1 ) {
173
+ output = output.split('');
174
+ output.splice(-1, 0, space + '%');
175
+ output = output.join('');
176
+ } else {
177
+ output = output + space + '%';
178
+ }
179
+ return output;
180
+ }
181
+
182
+ function formatTime (n, format) {
183
+ var hours = Math.floor(n._n/60/60),
184
+ minutes = Math.floor((n._n - (hours * 60 * 60))/60),
185
+ seconds = Math.round(n._n - (hours * 60 * 60) - (minutes * 60));
186
+ return hours + ':' + ((minutes < 10) ? '0' + minutes : minutes) + ':' + ((seconds < 10) ? '0' + seconds : seconds);
187
+ }
188
+
189
+ function unformatTime (string) {
190
+ var timeArray = string.split(':'),
191
+ seconds = 0;
192
+ // turn hours and minutes into seconds and add them all up
193
+ if (timeArray.length === 3) {
194
+ // hours
195
+ seconds = seconds + (Number(timeArray[0]) * 60 * 60);
196
+ // minutes
197
+ seconds = seconds + (Number(timeArray[1]) * 60);
198
+ // seconds
199
+ seconds = seconds + Number(timeArray[2]);
200
+ } else if (timeArray.lenght === 2) {
201
+ // minutes
202
+ seconds = seconds + (Number(timeArray[0]) * 60);
203
+ // seconds
204
+ seconds = seconds + Number(timeArray[1]);
205
+ }
206
+ return Number(seconds);
207
+ }
208
+
209
+ function formatNumber (n, format) {
210
+ var negP = false,
211
+ optDec = false,
212
+ abbr = '',
213
+ bytes = '',
214
+ ord = '',
215
+ abs = Math.abs(n._n);
216
+
217
+ // check if number is zero and a custom zero format has been set
218
+ if (n._n === 0 && zeroFormat !== null) {
219
+ return zeroFormat;
220
+ } else {
221
+ // see if we should use parentheses for negative number
222
+ if (format.indexOf('(') > -1) {
223
+ negP = true;
224
+ format = format.slice(1, -1);
225
+ }
226
+
227
+ // see if abbreviation is wanted
228
+ if (format.indexOf('a') > -1) {
229
+ // check for space before abbreviation
230
+ if (format.indexOf(' a') > -1) {
231
+ abbr = ' ';
232
+ format = format.replace(' a', '');
233
+ } else {
234
+ format = format.replace('a', '');
235
+ }
236
+
237
+ if (abs >= Math.pow(10, 12)) {
238
+ // trillion
239
+ abbr = abbr + languages[currentLanguage].abbreviations.tillion;
240
+ n._n = n._n / Math.pow(10, 12);
241
+ } else if (abs < Math.pow(10, 12) && abs >= Math.pow(10, 9)) {
242
+ // billion
243
+ abbr = abbr + languages[currentLanguage].abbreviations.billion;
244
+ n._n = n._n / Math.pow(10, 9);
245
+ } else if (abs < Math.pow(10, 9) && abs >= Math.pow(10, 6)) {
246
+ // million
247
+ abbr = abbr + languages[currentLanguage].abbreviations.million;
248
+ n._n = n._n / Math.pow(10, 6);
249
+ } else if (abs < Math.pow(10, 6) && abs >= Math.pow(10, 3)) {
250
+ // thousand
251
+ abbr = abbr + languages[currentLanguage].abbreviations.thousand;
252
+ n._n = n._n / Math.pow(10, 3);
253
+ }
254
+ }
255
+
256
+ // see if we are formatting bytes
257
+ if (format.indexOf('b') > -1) {
258
+ // check for space before
259
+ if (format.indexOf(' b') > -1) {
260
+ bytes = ' ';
261
+ format = format.replace(' b', '');
262
+ } else {
263
+ format = format.replace('b', '');
264
+ }
265
+
266
+ var prefixes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],
267
+ min,
268
+ max;
269
+
270
+ for (var power = 0; power <= prefixes.length; power++) {
271
+ min = Math.pow(1024, power);
272
+ max = Math.pow(1024, power+1);
273
+
274
+ if (n._n >= min && n._n < max) {
275
+ bytes = bytes + prefixes[power];
276
+ if (min > 0) {
277
+ n._n = n._n / min;
278
+ }
279
+ break;
280
+ }
281
+ }
282
+ }
283
+
284
+ // see if ordinal is wanted
285
+ if (format.indexOf('o') > -1) {
286
+ // check for space before
287
+ if (format.indexOf(' o') > -1) {
288
+ ord = ' ';
289
+ format = format.replace(' o', '');
290
+ } else {
291
+ format = format.replace('o', '');
292
+ }
293
+
294
+ ord = ord + languages[currentLanguage].ordinal(n._n);
295
+ }
296
+
297
+ if (format.indexOf('[.]') > -1) {
298
+ optDec = true;
299
+ format = format.replace('[.]', '.');
300
+ }
301
+
302
+ var w = n._n.toString().split('.')[0],
303
+ precision = format.split('.')[1],
304
+ thousands = format.indexOf(','),
305
+ d = '',
306
+ neg = false;
307
+
308
+ if (precision) {
309
+ if (precision.indexOf('[') > -1) {
310
+ precision = precision.replace(']', '');
311
+ precision = precision.split('[');
312
+ d = toFixed(n._n, (precision[0].length + precision[1].length), precision[1].length);
313
+ } else {
314
+ d = toFixed(n._n, precision.length);
315
+ }
316
+
317
+ w = d.split('.')[0];
318
+
319
+ if (d.split('.')[1].length) {
320
+ d = languages[currentLanguage].delimiters.decimal + d.split('.')[1];
321
+ } else {
322
+ d = '';
323
+ }
324
+
325
+ if (optDec && Number(d) === 0) {
326
+ d = '';
327
+ }
328
+ } else {
329
+ w = toFixed(n._n, null);
330
+ }
331
+
332
+ // format number
333
+ if (w.indexOf('-') > -1) {
334
+ w = w.slice(1);
335
+ neg = true;
336
+ }
337
+
338
+ if (thousands > -1) {
339
+ w = w.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1' + languages[currentLanguage].delimiters.thousands);
340
+ }
341
+
342
+ if (format.indexOf('.') === 0) {
343
+ w = '';
344
+ }
345
+
346
+ return ((negP && neg) ? '(' : '') + ((!negP && neg) ? '-' : '') + w + d + ((ord) ? ord : '') + ((abbr) ? abbr : '') + ((bytes) ? bytes : '') + ((negP && neg) ? ')' : '');
347
+ }
348
+ }
349
+
350
+ /************************************
351
+ Top Level Functions
352
+ ************************************/
353
+
354
+ numeral = function (input) {
355
+ if (numeral.isNumeral(input)) {
356
+ input = input.value();
357
+ } else if (!Number(input)) {
358
+ input = 0;
359
+ }
360
+
361
+ return new Numeral(Number(input));
362
+ };
363
+
364
+ // version number
365
+ numeral.version = VERSION;
366
+
367
+ // compare numeral object
368
+ numeral.isNumeral = function (obj) {
369
+ return obj instanceof Numeral;
370
+ };
371
+
372
+ // This function will load languages and then set the global language. If
373
+ // no arguments are passed in, it will simply return the current global
374
+ // language key.
375
+ numeral.language = function (key, values) {
376
+ if (!key) {
377
+ return currentLanguage;
378
+ }
379
+
380
+ if (key && !values) {
381
+ currentLanguage = key;
382
+ }
383
+
384
+ if (values || !languages[key]) {
385
+ loadLanguage(key, values);
386
+ }
387
+
388
+ return numeral;
389
+ };
390
+
391
+ numeral.language('en', {
392
+ delimiters: {
393
+ thousands: ',',
394
+ decimal: '.'
395
+ },
396
+ abbreviations: {
397
+ thousand: 'k',
398
+ million: 'm',
399
+ billion: 'b',
400
+ trillion: 't'
401
+ },
402
+ ordinal: function (number) {
403
+ var b = number % 10;
404
+ return (~~ (number % 100 / 10) === 1) ? 'th' :
405
+ (b === 1) ? 'st' :
406
+ (b === 2) ? 'nd' :
407
+ (b === 3) ? 'rd' : 'th';
408
+ },
409
+ currency: {
410
+ symbol: '$'
411
+ }
412
+ });
413
+
414
+ numeral.zeroFormat = function (format) {
415
+ if (typeof(format) === 'string') {
416
+ zeroFormat = format;
417
+ } else {
418
+ zeroFormat = null;
419
+ }
420
+ };
421
+
422
+ /************************************
423
+ Helpers
424
+ ************************************/
425
+
426
+ function loadLanguage(key, values) {
427
+ languages[key] = values;
428
+ }
429
+
430
+
431
+ /************************************
432
+ Numeral Prototype
433
+ ************************************/
434
+
435
+
436
+ numeral.fn = Numeral.prototype = {
437
+
438
+ clone : function () {
439
+ return numeral(this);
440
+ },
441
+
442
+ format : function (inputString) {
443
+ return formatNumeral(this, inputString ? inputString : numeral.defaultFormat);
444
+ },
445
+
446
+ unformat : function (inputString) {
447
+ return unformatNumeral(this, inputString ? inputString : numeral.defaultFormat);
448
+ },
449
+
450
+ value : function () {
451
+ return this._n;
452
+ },
453
+
454
+ valueOf : function () {
455
+ return this._n;
456
+ },
457
+
458
+ set : function (value) {
459
+ this._n = Number(value);
460
+ return this;
461
+ },
462
+
463
+ add : function (value) {
464
+ this._n = this._n + Number(value);
465
+ return this;
466
+ },
467
+
468
+ subtract : function (value) {
469
+ this._n = this._n - Number(value);
470
+ return this;
471
+ },
472
+
473
+ multiply : function (value) {
474
+ this._n = this._n * Number(value);
475
+ return this;
476
+ },
477
+
478
+ divide : function (value) {
479
+ this._n = this._n / Number(value);
480
+ return this;
481
+ },
482
+
483
+ difference : function (value) {
484
+ var difference = this._n - Number(value);
485
+
486
+ if (difference < 0) {
487
+ difference = -difference;
488
+ }
489
+
490
+ return difference;
491
+ }
492
+
493
+ };
494
+
495
+ /************************************
496
+ Exposing Numeral
497
+ ************************************/
498
+
499
+ // CommonJS module is defined
500
+ if (hasModule) {
501
+ module.exports = numeral;
502
+ }
503
+
504
+ /*global ender:false */
505
+ if (typeof ender === 'undefined') {
506
+ // here, `this` means `window` in the browser, or `global` on the server
507
+ // add `numeral` as a global object via a string identifier,
508
+ // for Closure Compiler 'advanced' mode
509
+ this['numeral'] = numeral;
510
+ }
511
+
512
+ /*global define:false */
513
+ if (typeof define === 'function' && define.amd) {
514
+ define([], function () {
515
+ return numeral;
516
+ });
517
+ }
518
+ }).call(this);
@@ -0,0 +1,6 @@
1
+ // numeral.js
2
+ // version : 1.4.5
3
+ // author : Adam Draper
4
+ // license : MIT
5
+ // http://adamwdraper.github.com/Numeral-js/
6
+ (function(){function o(e){this._n=e}function u(e,t,n){var r=Math.pow(10,t),i;i=(Math.round(e*r)/r).toFixed(t);if(n){var s=new RegExp("0{1,"+n+"}$");i=i.replace(s,"")}return i}function a(e,t){var n;t.indexOf("$")>-1?n=l(e,t):t.indexOf("%")>-1?n=c(e,t):t.indexOf(":")>-1?n=h(e,t):n=d(e,t);return n}function f(e,t){if(t.indexOf(":")>-1)e._n=p(t);else if(t===i)e._n=0;else{var s=t;n[r].delimiters.decimal!=="."&&(t=t.replace(/\./g,"").replace(n[r].delimiters.decimal,"."));var o=new RegExp(n[r].abbreviations.thousand+"(?:\\)|(\\"+n[r].currency.symbol+")?(?:\\))?)?$"),u=new RegExp(n[r].abbreviations.million+"(?:\\)|(\\"+n[r].currency.symbol+")?(?:\\))?)?$"),a=new RegExp(n[r].abbreviations.billion+"(?:\\)|(\\"+n[r].currency.symbol+")?(?:\\))?)?$"),f=new RegExp(n[r].abbreviations.trillion+"(?:\\)|(\\"+n[r].currency.symbol+")?(?:\\))?)?$"),l=["KB","MB","GB","TB","PB","EB","ZB","YB"],c=!1;for(var h=0;h<=l.length;h++){c=t.indexOf(l[h])>-1?Math.pow(1024,h+1):!1;if(c)break}e._n=(c?c:1)*(s.match(o)?Math.pow(10,3):1)*(s.match(u)?Math.pow(10,6):1)*(s.match(a)?Math.pow(10,9):1)*(s.match(f)?Math.pow(10,12):1)*(t.indexOf("%")>-1?.01:1)*Number((t.indexOf("(")>-1?"-":"")+t.replace(/[^0-9\.'-]+/g,""));e._n=c?Math.ceil(e._n):e._n}return e._n}function l(e,t){var i=t.indexOf("$")<=1?!0:!1,s="";if(t.indexOf(" $")>-1){s=" ";t=t.replace(" $","")}else if(t.indexOf("$ ")>-1){s=" ";t=t.replace("$ ","")}else t=t.replace("$","");var o=a(e,t);if(i)if(o.indexOf("(")>-1||o.indexOf("-")>-1){o=o.split("");o.splice(1,0,n[r].currency.symbol+s);o=o.join("")}else o=n[r].currency.symbol+s+o;else if(o.indexOf(")")>-1){o=o.split("");o.splice(-1,0,s+n[r].currency.symbol);o=o.join("")}else o=o+s+n[r].currency.symbol;return o}function c(e,t){var n="";if(t.indexOf(" %")>-1){n=" ";t=t.replace(" %","")}else t=t.replace("%","");e._n=e._n*100;var r=a(e,t);if(r.indexOf(")")>-1){r=r.split("");r.splice(-1,0,n+"%");r=r.join("")}else r=r+n+"%";return r}function h(e,t){var n=Math.floor(e._n/60/60),r=Math.floor((e._n-n*60*60)/60),i=Math.round(e._n-n*60*60-r*60);return n+":"+(r<10?"0"+r:r)+":"+(i<10?"0"+i:i)}function p(e){var t=e.split(":"),n=0;if(t.length===3){n+=Number(t[0])*60*60;n+=Number(t[1])*60;n+=Number(t[2])}else if(t.lenght===2){n+=Number(t[0])*60;n+=Number(t[1])}return Number(n)}function d(e,t){var s=!1,o=!1,a="",f="",l="",c=Math.abs(e._n);if(e._n===0&&i!==null)return i;if(t.indexOf("(")>-1){s=!0;t=t.slice(1,-1)}if(t.indexOf("a")>-1){if(t.indexOf(" a")>-1){a=" ";t=t.replace(" a","")}else t=t.replace("a","");if(c>=Math.pow(10,12)){a+=n[r].abbreviations.tillion;e._n=e._n/Math.pow(10,12)}else if(c<Math.pow(10,12)&&c>=Math.pow(10,9)){a+=n[r].abbreviations.billion;e._n=e._n/Math.pow(10,9)}else if(c<Math.pow(10,9)&&c>=Math.pow(10,6)){a+=n[r].abbreviations.million;e._n=e._n/Math.pow(10,6)}else if(c<Math.pow(10,6)&&c>=Math.pow(10,3)){a+=n[r].abbreviations.thousand;e._n=e._n/Math.pow(10,3)}}if(t.indexOf("b")>-1){if(t.indexOf(" b")>-1){f=" ";t=t.replace(" b","")}else t=t.replace("b","");var h=["B","KB","MB","GB","TB","PB","EB","ZB","YB"],p,d;for(var v=0;v<=h.length;v++){p=Math.pow(1024,v);d=Math.pow(1024,v+1);if(e._n>=p&&e._n<d){f+=h[v];p>0&&(e._n=e._n/p);break}}}if(t.indexOf("o")>-1){if(t.indexOf(" o")>-1){l=" ";t=t.replace(" o","")}else t=t.replace("o","");l+=n[r].ordinal(e._n)}if(t.indexOf("[.]")>-1){o=!0;t=t.replace("[.]",".")}var m=e._n.toString().split(".")[0],g=t.split(".")[1],y=t.indexOf(","),b="",w=!1;if(g){if(g.indexOf("[")>-1){g=g.replace("]","");g=g.split("[");b=u(e._n,g[0].length+g[1].length,g[1].length)}else b=u(e._n,g.length);m=b.split(".")[0];b.split(".")[1].length?b=n[r].delimiters.decimal+b.split(".")[1]:b="";o&&Number(b)===0&&(b="")}else m=u(e._n,null);if(m.indexOf("-")>-1){m=m.slice(1);w=!0}y>-1&&(m=m.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1"+n[r].delimiters.thousands));t.indexOf(".")===0&&(m="");return(s&&w?"(":"")+(!s&&w?"-":"")+m+b+(l?l:"")+(a?a:"")+(f?f:"")+(s&&w?")":"")}function v(e,t){n[e]=t}var e,t="1.4.5",n={},r="en",i=null,s=typeof module!="undefined"&&module.exports;e=function(t){e.isNumeral(t)?t=t.value():Number(t)||(t=0);return new o(Number(t))};e.version=t;e.isNumeral=function(e){return e instanceof o};e.language=function(t,i){if(!t)return r;t&&!i&&(r=t);(i||!n[t])&&v(t,i);return e};e.language("en",{delimiters:{thousands:",",decimal:"."},abbreviations:{thousand:"k",million:"m",billion:"b",trillion:"t"},ordinal:function(e){var t=e%10;return~~(e%100/10)===1?"th":t===1?"st":t===2?"nd":t===3?"rd":"th"},currency:{symbol:"$"}});e.zeroFormat=function(e){typeof e=="string"?i=e:i=null};e.fn=o.prototype={clone:function(){return e(this)},format:function(t){return a(this,t?t:e.defaultFormat)},unformat:function(t){return f(this,t?t:e.defaultFormat)},value:function(){return this._n},valueOf:function(){return this._n},set:function(e){this._n=Number(e);return this},add:function(e){this._n=this._n+Number(e);return this},subtract:function(e){this._n=this._n-Number(e);return this},multiply:function(e){this._n=this._n*Number(e);return this},divide:function(e){this._n=this._n/Number(e);return this},difference:function(e){var t=this._n-Number(e);t<0&&(t=-t);return t}};s&&(module.exports=e);typeof ender=="undefined"&&(this.numeral=e);typeof define=="function"&&define.amd&&define([],function(){return e})}).call(this);
metadata ADDED
@@ -0,0 +1,68 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: numeraljs-rails
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Adam Draper
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-01-30 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: A javascript library for formatting and manipulating numbers.
15
+ email: rustam@zagirov.name
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/numeraljs-rails.rb
21
+ - vendor/assets/javascripts/languages/cs.js
22
+ - vendor/assets/javascripts/languages/de-de.js
23
+ - vendor/assets/javascripts/languages/en-gb.js
24
+ - vendor/assets/javascripts/languages/es.js
25
+ - vendor/assets/javascripts/languages/fr.js
26
+ - vendor/assets/javascripts/languages/it.js
27
+ - vendor/assets/javascripts/languages/min/cs.min.js
28
+ - vendor/assets/javascripts/languages/min/de-de.min.js
29
+ - vendor/assets/javascripts/languages/min/en-gb.min.js
30
+ - vendor/assets/javascripts/languages/min/es.min.js
31
+ - vendor/assets/javascripts/languages/min/fr.min.js
32
+ - vendor/assets/javascripts/languages/min/it.min.js
33
+ - vendor/assets/javascripts/languages/min/pt-br.min.js
34
+ - vendor/assets/javascripts/languages/min/pt-pt.min.js
35
+ - vendor/assets/javascripts/languages/min/ru.min.js
36
+ - vendor/assets/javascripts/languages/min/tr.min.js
37
+ - vendor/assets/javascripts/languages/pt-br.js
38
+ - vendor/assets/javascripts/languages/pt-pt.js
39
+ - vendor/assets/javascripts/languages/ru.js
40
+ - vendor/assets/javascripts/languages/tr.js
41
+ - vendor/assets/javascripts/numeral.js
42
+ - vendor/assets/javascripts/numeral.min.js
43
+ homepage: http://numeraljs.com/
44
+ licenses: []
45
+ post_install_message:
46
+ rdoc_options: []
47
+ require_paths:
48
+ - lib
49
+ required_ruby_version: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ required_rubygems_version: !ruby/object:Gem::Requirement
56
+ none: false
57
+ requirements:
58
+ - - ! '>='
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ requirements: []
62
+ rubyforge_project:
63
+ rubygems_version: 1.8.24
64
+ signing_key:
65
+ specification_version: 3
66
+ summary: Numeral.js
67
+ test_files: []
68
+ has_rdoc: