1
- "use strict" ;
2
- exports . NUMERIC = "numeric" ;
3
- exports . LONG = "long" ;
4
- exports . SHORT = "short" ;
5
- exports . TWODIGIT = "2-digit" ;
6
- exports . FULL = "full" ;
7
- var DateTimeFormat = ( function ( ) {
8
- function DateTimeFormat ( locale , options , pattern ) {
1
+ export const NUMERIC = "numeric" ;
2
+ export const LONG = "long" ;
3
+ export const SHORT = "short" ;
4
+ export const TWODIGIT = "2-digit" ;
5
+ export const FULL = "full" ;
6
+ export class DateTimeFormat {
7
+ constructor ( locale , options , pattern ) {
9
8
this . locale = locale ;
10
9
this . options = options ;
11
10
this . pattern = pattern ;
@@ -23,50 +22,52 @@ var DateTimeFormat = (function () {
23
22
"G" : "era" ,
24
23
"a" : "hour12"
25
24
} ;
26
- if ( options && options . minute === exports . NUMERIC ) {
27
- this . options . minute = exports . TWODIGIT ;
25
+ if ( options && options . minute === NUMERIC ) {
26
+ this . options . minute = TWODIGIT ;
28
27
}
29
- if ( options && options . hour === exports . NUMERIC ) {
30
- this . options . hour = exports . TWODIGIT ;
28
+ if ( options && options . hour === NUMERIC ) {
29
+ this . options . hour = TWODIGIT ;
31
30
}
32
31
}
33
- DateTimeFormat . prototype . hasTimeOptions = function ( options ) {
32
+ hasTimeOptions ( options ) {
34
33
return options . hour !== undefined || options . minute !== undefined || options . second !== undefined ;
35
- } ;
36
- DateTimeFormat . prototype . hasDateOptions = function ( options ) {
37
- return options . weekday !== undefined || options . year !== undefined || options . month !== undefined || options . day !== undefined ;
38
- } ;
39
- DateTimeFormat . prototype . useFullDatePattern = function ( intlOptions ) {
40
- var i ;
41
- var propsArray = Object . keys ( intlOptions ) ;
42
- var propsArrayLength = propsArray . length ;
43
- var result = false ;
34
+ }
35
+ hasDateOptions ( options ) {
36
+ return options . weekday !== undefined ||
37
+ options . year !== undefined ||
38
+ options . month !== undefined ||
39
+ options . day !== undefined ;
40
+ }
41
+ useFullDatePattern ( intlOptions ) {
42
+ let i ;
43
+ let propsArray = Object . keys ( intlOptions ) ;
44
+ let propsArrayLength = propsArray . length ;
45
+ let result = false ;
44
46
for ( i = 0 ; i < propsArrayLength ; i ++ ) {
45
- if ( intlOptions [ propsArray [ i ] ] === exports . LONG || intlOptions [ propsArray [ i ] ] === exports . SHORT ) {
47
+ if ( intlOptions [ propsArray [ i ] ] === LONG || intlOptions [ propsArray [ i ] ] === SHORT ) {
46
48
result = true ;
47
49
break ;
48
50
}
49
51
}
50
52
return result ;
51
- } ;
52
- DateTimeFormat . prototype . getNativePattern = function ( patternDefinition , locale ) {
53
+ }
54
+ getNativePattern ( patternDefinition , locale ) {
53
55
return "" ;
54
- } ;
55
- DateTimeFormat . prototype . getCorrectPatternForLocale = function ( ) {
56
- var dateTimePatternOptions = { } ;
56
+ }
57
+ getCorrectPatternForLocale ( ) {
58
+ let dateTimePatternOptions = { } ;
57
59
if ( this . hasDateOptions ( this . options ) ) {
58
60
if ( this . useFullDatePattern ( this . options ) ) {
59
- dateTimePatternOptions . date = exports . FULL ;
61
+ dateTimePatternOptions . date = FULL ;
60
62
}
61
63
else {
62
- dateTimePatternOptions . date = exports . SHORT ;
64
+ dateTimePatternOptions . date = SHORT ;
63
65
}
64
66
}
65
67
if ( this . hasTimeOptions ( this . options ) ) {
66
- dateTimePatternOptions . time = exports . FULL ;
68
+ dateTimePatternOptions . time = FULL ;
67
69
}
68
- var result = this . getNativePattern ( dateTimePatternOptions , this . locale ) ;
69
- console . log ( "nativePattern: " + result ) ;
70
+ let result = this . getNativePattern ( dateTimePatternOptions , this . locale ) ;
70
71
if ( this . options . hour ) {
71
72
if ( this . options . hour12 !== undefined ) {
72
73
result = this . options . hour12 ? result . replace ( / H / g, "h" ) : result . replace ( / h / g, "H" ) ;
@@ -76,19 +77,19 @@ var DateTimeFormat = (function () {
76
77
}
77
78
}
78
79
return result ;
79
- } ;
80
- DateTimeFormat . prototype . getDateElementsFromPattern = function ( pattern ) {
81
- var result = [ ] ;
82
- var patternLength = pattern . length ;
83
- var i = 0 ;
84
- var stringInsidePattern = false ;
80
+ }
81
+ getDateElementsFromPattern ( pattern ) {
82
+ let result = [ ] ;
83
+ let patternLength = pattern . length ;
84
+ let i = 0 ;
85
+ let stringInsidePattern = false ;
85
86
while ( i < patternLength ) {
86
87
if ( pattern [ i ] === '"' || pattern [ i ] === "'" ) {
87
- var p = i + 1 ;
88
+ let p = i + 1 ;
88
89
while ( p < patternLength && pattern [ i ] !== pattern [ p ] ) {
89
90
p ++ ;
90
91
}
91
- for ( var j = i ; j < p + 1 ; j ++ ) {
92
+ for ( let j = i ; j < p + 1 ; j ++ ) {
92
93
result . push ( {
93
94
"isDateElement" : false ,
94
95
"patternValue" : pattern [ j ]
@@ -98,7 +99,7 @@ var DateTimeFormat = (function () {
98
99
continue ;
99
100
}
100
101
if ( this . dateTimeFormatElements . hasOwnProperty ( pattern [ i ] ) ) {
101
- var j = i ;
102
+ let j = i ;
102
103
while ( i < patternLength && pattern [ i ] === pattern [ j ] ) {
103
104
i ++ ;
104
105
}
@@ -117,16 +118,16 @@ var DateTimeFormat = (function () {
117
118
}
118
119
}
119
120
return result ;
120
- } ;
121
- DateTimeFormat . prototype . prepareDateElement = function ( intlOption , dateElement ) {
121
+ }
122
+ prepareDateElement ( intlOption , dateElement ) {
122
123
switch ( intlOption ) {
123
- case exports . NUMERIC :
124
+ case NUMERIC :
124
125
return dateElement ;
125
- case exports . TWODIGIT :
126
+ case TWODIGIT :
126
127
return dateElement . repeat ( 2 ) ;
127
- case exports . SHORT :
128
+ case SHORT :
128
129
return dateElement . repeat ( 3 ) ;
129
- case exports . LONG :
130
+ case LONG :
130
131
return dateElement . repeat ( 4 ) ;
131
132
case true :
132
133
return dateElement ;
@@ -135,22 +136,21 @@ var DateTimeFormat = (function () {
135
136
default :
136
137
return dateElement ;
137
138
}
138
- } ;
139
- DateTimeFormat . prototype . preparePattern = function ( pattern , options ) {
140
- console . log ( "preparePattern input - " + pattern ) ;
141
- var patternOptions = this . getDateElementsFromPattern ( pattern ) ;
142
- var patternOptionsLength = patternOptions . length ;
143
- for ( var i_1 = 0 ; i_1 < patternOptionsLength ; i_1 ++ ) {
144
- if ( patternOptions [ i_1 ] . isDateElement ) {
145
- var formatChar = patternOptions [ i_1 ] . patternValue [ 0 ] ;
146
- var intlOptionValue = options [ patternOptions [ i_1 ] . intlOption ] ;
139
+ }
140
+ preparePattern ( pattern , options ) {
141
+ let patternOptions = this . getDateElementsFromPattern ( pattern ) ;
142
+ let patternOptionsLength = patternOptions . length ;
143
+ for ( let i = 0 ; i < patternOptionsLength ; i ++ ) {
144
+ if ( patternOptions [ i ] . isDateElement ) {
145
+ let formatChar = patternOptions [ i ] . patternValue [ 0 ] ;
146
+ let intlOptionValue = options [ patternOptions [ i ] . intlOption ] ;
147
147
if ( intlOptionValue !== undefined ) {
148
- var newPatternValue = this . prepareDateElement ( intlOptionValue , formatChar ) ;
149
- patternOptions [ i_1 ] . patternValue = newPatternValue ;
148
+ let newPatternValue = this . prepareDateElement ( intlOptionValue , formatChar ) ;
149
+ patternOptions [ i ] . patternValue = newPatternValue ;
150
150
}
151
151
else {
152
- if ( i_1 > 0 ) {
153
- var j = i_1 - 1 ;
152
+ if ( i > 0 ) {
153
+ let j = i - 1 ;
154
154
while ( patternOptions [ j ] && patternOptions [ j ] . isDateElement === false ) {
155
155
if ( patternOptions [ j ] . patternValue !== " " ) {
156
156
if ( patternOptions [ j ] . patternValue !== '"' && patternOptions [ j ] . patternValue !== "'" ) {
@@ -164,58 +164,48 @@ var DateTimeFormat = (function () {
164
164
j -- ;
165
165
}
166
166
}
167
- patternOptions [ i_1 ] . patternValue = "" ;
167
+ patternOptions [ i ] . patternValue = "" ;
168
168
}
169
169
}
170
170
}
171
- var result = [ ] ;
172
- var i = 0 ;
171
+ let result = [ ] ;
172
+ let i = 0 ;
173
173
while ( patternOptions [ i ] . patternValue === "" || patternOptions [ i ] . isDateElement === false ) {
174
174
i ++ ;
175
175
}
176
176
for ( i ; i < patternOptionsLength ; i ++ ) {
177
177
result . push ( patternOptions [ i ] . patternValue ) ;
178
178
}
179
- console . log ( "preparePattern output - " + result . join ( "" ) ) ;
180
179
return result . join ( "" ) ;
181
- } ;
182
- DateTimeFormat . prototype . formatNative = function ( pattern , locale , date ) {
180
+ }
181
+ formatNative ( pattern , locale , date ) {
183
182
return "" ;
184
- } ;
185
- Object . defineProperty ( DateTimeFormat . prototype , "preparedPattern" , {
186
- get : function ( ) {
187
- if ( ! this . _preparedPattern ) {
188
- if ( this . pattern ) {
189
- this . _preparedPattern = this . pattern ;
190
- }
191
- else {
192
- this . _preparedPattern = this . preparePattern ( this . getCorrectPatternForLocale ( ) , this . options ) ;
193
- }
183
+ }
184
+ get preparedPattern ( ) {
185
+ if ( ! this . _preparedPattern ) {
186
+ if ( this . pattern ) {
187
+ this . _preparedPattern = this . pattern ;
194
188
}
195
- console . log ( "preparedPattern: " + this . _preparedPattern ) ;
196
- return this . _preparedPattern ;
197
- } ,
198
- enumerable : true ,
199
- configurable : true
200
- } ) ;
201
- DateTimeFormat . prototype . format = function ( date ) {
189
+ else {
190
+ this . _preparedPattern = this . preparePattern ( this . getCorrectPatternForLocale ( ) , this . options ) ;
191
+ }
192
+ }
193
+ return this . _preparedPattern ;
194
+ }
195
+ format ( date ) {
202
196
return this . formatNative ( this . preparedPattern , this . locale , date ) ;
203
- } ;
204
- return DateTimeFormat ;
205
- } ( ) ) ;
206
- exports . DateTimeFormat = DateTimeFormat ;
207
- var NumberFormat = ( function ( ) {
208
- function NumberFormat ( locale , options , pattern ) {
197
+ }
198
+ }
199
+ export class NumberFormat {
200
+ constructor ( locale , options , pattern ) {
209
201
this . locale = locale ;
210
202
this . options = options ;
211
203
this . pattern = pattern ;
212
204
}
213
- NumberFormat . prototype . formatNative = function ( value , locale , options , pattern ) {
205
+ formatNative ( value , locale , options , pattern ) {
214
206
return "" ;
215
- } ;
216
- NumberFormat . prototype . format = function ( value ) {
207
+ }
208
+ format ( value ) {
217
209
return this . formatNative ( value , this . locale , this . options , this . pattern ) ;
218
- } ;
219
- return NumberFormat ;
220
- } ( ) ) ;
221
- exports . NumberFormat = NumberFormat ;
210
+ }
211
+ }
0 commit comments