@@ -80,6 +80,19 @@ describe("Replacement", function() {
80
80
expect ( parse ( 'one {plural} ' ) [ 1 ] . arg ) . to . eql ( 'plural' ) ;
81
81
} ) ;
82
82
83
+ it ( "should correctly handle apostrophes" , function ( ) {
84
+ // This mirrors the default DOUBLE_OPTIONAL behavior of ICU.
85
+ expect ( parse ( "I see '{many}'" ) [ 0 ] ) . to . eql ( "I see {many}" ) ;
86
+ expect ( parse ( "I said '{''Wow!''}'" ) [ 0 ] ) . to . eql ( "I said {'Wow!'}" ) ;
87
+ expect ( parse ( "I don't know" ) [ 0 ] ) . to . eql ( "I don't know" ) ;
88
+ expect ( parse ( "I don''t know" ) [ 0 ] ) . to . eql ( "I don't know" ) ;
89
+ expect ( parse ( "A'a''a'A" ) [ 0 ] ) . to . eql ( "A'a'a'A" ) ;
90
+ expect ( parse ( "A'{a''a}'A" ) [ 0 ] ) . to . eql ( "A{a'a}A" ) ;
91
+
92
+ // # and | are not special here.
93
+ expect ( parse ( "A '#' A" ) [ 0 ] ) . to . eql ( "A '#' A" ) ;
94
+ expect ( parse ( "A '|' A" ) [ 0 ] ) . to . eql ( "A '|' A" ) ;
95
+ } ) ;
83
96
} ) ;
84
97
describe ( "Simple arguments" , function ( ) {
85
98
@@ -216,6 +229,30 @@ describe("Plurals", function() {
216
229
) . to . eql ( 4 ) ;
217
230
} ) ;
218
231
232
+ it ( "should support quoting" , function ( ) {
233
+ expect ( parse ( "{NUM, plural, one{{x,date,y-M-dd # '#'}} two{two}}" ) [ 0 ] . cases [ 0 ] . tokens [ 0 ] . type ) . to . eql ( 'function' ) ;
234
+ expect ( parse ( "{NUM, plural, one{{x,date,y-M-dd # '#'}} two{two}}" ) [ 0 ] . cases [ 0 ] . tokens [ 0 ] . arg ) . to . eql ( 'x' ) ;
235
+ expect ( parse ( "{NUM, plural, one{{x,date,y-M-dd # '#'}} two{two}}" ) [ 0 ] . cases [ 0 ] . tokens [ 0 ] . key ) . to . eql ( 'date' ) ;
236
+ // Octothorpe is not special here regardless of strict number sign
237
+ expect ( parse ( "{NUM, plural, one{{x,date,y-M-dd # '#'}} two{two}}" ) [ 0 ] . cases [ 0 ] . tokens [ 0 ] . params [ 0 ] ) . to . eql ( "y-M-dd # '#'" ) ;
238
+
239
+ expect ( parse ( "{NUM, plural, one{# '' #} two{two}}" ) [ 0 ] . cases [ 0 ] . tokens [ 0 ] . type ) . to . eql ( 'octothorpe' ) ;
240
+ expect ( parse ( "{NUM, plural, one{# '' #} two{two}}" ) [ 0 ] . cases [ 0 ] . tokens [ 1 ] ) . to . eql ( " ' " ) ;
241
+ expect ( parse ( "{NUM, plural, one{# '' #} two{two}}" ) [ 0 ] . cases [ 0 ] . tokens [ 2 ] . type ) . to . eql ( 'octothorpe' ) ;
242
+ expect ( parse ( "{NUM, plural, one{# '#'} two{two}}" ) [ 0 ] . cases [ 0 ] . tokens [ 0 ] . type ) . to . eql ( 'octothorpe' ) ;
243
+ expect ( parse ( "{NUM, plural, one{# '#'} two{two}}" ) [ 0 ] . cases [ 0 ] . tokens [ 1 ] ) . to . eql ( " #" ) ;
244
+
245
+ expect ( parse ( "{NUM, plural, one{one#} two{two}}" ) [ 0 ] . cases [ 0 ] . tokens [ 0 ] ) . to . eql ( 'one' ) ;
246
+ expect ( parse ( "{NUM, plural, one{one#} two{two}}" ) [ 0 ] . cases [ 0 ] . tokens [ 1 ] . type ) . to . eql ( 'octothorpe' ) ;
247
+
248
+ // without strict number sign
249
+ expect ( parse ( "{NUM, plural, one{# {VAR,select,key{# '#' one#}}} two{two}}" ) [ 0 ] . cases [ 0 ] . tokens [ 2 ] . cases [ 0 ] . tokens [ 0 ] . type ) . to . eql ( 'octothorpe' )
250
+ expect ( parse ( "{NUM, plural, one{# {VAR,select,key{# '#' one#}}} two{two}}" ) [ 0 ] . cases [ 0 ] . tokens [ 2 ] . cases [ 0 ] . tokens [ 1 ] ) . to . eql ( ' # one' )
251
+ expect ( parse ( "{NUM, plural, one{# {VAR,select,key{# '#' one#}}} two{two}}" ) [ 0 ] . cases [ 0 ] . tokens [ 2 ] . cases [ 0 ] . tokens [ 2 ] . type ) . to . eql ( 'octothorpe' )
252
+ // with strict number sign
253
+ expect ( parse ( "{NUM, plural, one{# {VAR,select,key{# '#' one#}}} two{two}}" , { strictNumberSign : true } ) [ 0 ] . cases [ 0 ] . tokens [ 2 ] . cases [ 0 ] . tokens [ 0 ] ) . to . eql ( '# \'#\' one#' )
254
+ } ) ;
255
+
219
256
} ) ;
220
257
describe ( "Ordinals" , function ( ) {
221
258
0 commit comments