@@ -87,7 +87,11 @@ function pluralExtractor(content, localeInfo) {
87
87
continue ;
88
88
}
89
89
var temp = goog . i18n . pluralRules . select . toString ( ) .
90
- replace ( / g o o g .i 1 8 n .p l u r a l R u l e s .K e y w o r d / g, 'PLURAL_CATEGORY' ) . replace ( / \n / g, '' ) ;
90
+ replace ( / g o o g \. i 1 8 n \. p l u r a l R u l e s \. K e y w o r d / g, 'PLURAL_CATEGORY' ) .
91
+ replace ( / g o o g \. i 1 8 n \. p l u r a l R u l e s \. g e t _ v f _ / g, 'getVF' ) .
92
+ replace ( / g o o g \. i 1 8 n \. p l u r a l R u l e s \. g e t _ w t _ / g, 'getWT' ) .
93
+ replace ( / g o o g \. i 1 8 n \. p l u r a l R u l e s \. d e c i m a l s _ / g, 'getDecimals' ) .
94
+ replace ( / \n / g, '' ) ;
91
95
92
96
///@@ is a crazy place holder to be replaced before writing to file
93
97
localeInfo [ localeIds [ i ] ] . pluralCat = "@@" + temp + "@@" ;
@@ -158,15 +162,39 @@ function outputLocale(localeInfo, localeID) {
158
162
}
159
163
localeObj . id = correctedLocaleId ( localeID ) ;
160
164
161
- var prefix =
162
- "'use strict';\n" +
163
- 'angular.module("ngLocale", [], ["$provide", function($provide) {\n' +
164
- 'var PLURAL_CATEGORY = {' +
165
- 'ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"' +
166
- '};\n' +
167
- '$provide.value("$locale", ' ;
168
-
169
- var suffix = ');\n}]);' ;
165
+ var getDecimals = [
166
+ 'function getDecimals(n) {' ,
167
+ ' n = n + \'\';' ,
168
+ ' var i = n.indexOf(\'.\');' ,
169
+ ' return (i == -1) ? 0 : n.length - i - 1;' ,
170
+ '}' , '' , ''
171
+ ] . join ( '\n' ) ;
172
+
173
+ var getVF = [
174
+ 'function getVF(n, opt_precision) {' ,
175
+ ' var v = opt_precision;' , '' ,
176
+ ' if (undefined === v) {' ,
177
+ ' v = Math.min(getDecimals(n), 3);' ,
178
+ ' }' , '' ,
179
+ ' var base = Math.pow(10, v);' ,
180
+ ' var f = ((n * base) | 0) % base;' ,
181
+ ' return {v: v, f: f};' ,
182
+ '}' , '' , ''
183
+ ] . join ( '\n' ) ;
184
+
185
+ var getWT =
186
+ [
187
+ 'function getWT(v, f) {' ,
188
+ ' if (f === 0) {' ,
189
+ ' return {w: 0, t: 0};' ,
190
+ ' }' , '' ,
191
+ ' while ((f % 10) === 0) {' ,
192
+ ' f /= 10;' ,
193
+ ' v--;' ,
194
+ ' }' , '' ,
195
+ ' return {w: v, t: f};' ,
196
+ '}' , '' , ''
197
+ ] . join ( '\n' ) ;
170
198
171
199
localeObj = {
172
200
DATETIME_FORMATS : localeObj . DATETIME_FORMATS ,
@@ -176,6 +204,26 @@ function outputLocale(localeInfo, localeID) {
176
204
} ;
177
205
178
206
var content = serializeContent ( localeInfo [ localeID ] ) ;
207
+ if ( content . indexOf ( 'getVF(' ) < 0 ) {
208
+ getVF = '' ;
209
+ }
210
+ if ( content . indexOf ( 'getWT(' ) < 0 ) {
211
+ getWT = '' ;
212
+ }
213
+ if ( ! getVF && content . indexOf ( 'getDecimals(' ) < 0 ) {
214
+ getDecimals = '' ;
215
+ }
216
+
217
+ var prefix =
218
+ "'use strict';\n" +
219
+ 'angular.module("ngLocale", [], ["$provide", function($provide) {\n' +
220
+ 'var PLURAL_CATEGORY = {' +
221
+ 'ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"' +
222
+ '};\n' +
223
+ getDecimals + getVF + getWT +
224
+ '$provide.value("$locale", ' ;
225
+
226
+ var suffix = ');\n}]);' ;
179
227
180
228
return prefix + content + suffix ;
181
229
}
0 commit comments