twitter_cldr_js 2.3.2 → 2.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +1 -5
- data/History.txt +8 -0
- data/README.md +69 -1
- data/Rakefile +0 -9
- data/lib/assets/javascripts/twitter_cldr/af.js +2042 -142
- data/lib/assets/javascripts/twitter_cldr/ar.js +2043 -143
- data/lib/assets/javascripts/twitter_cldr/be.js +2044 -144
- data/lib/assets/javascripts/twitter_cldr/bg.js +2042 -142
- data/lib/assets/javascripts/twitter_cldr/bn.js +2042 -142
- data/lib/assets/javascripts/twitter_cldr/ca.js +2042 -142
- data/lib/assets/javascripts/twitter_cldr/cs.js +2043 -143
- data/lib/assets/javascripts/twitter_cldr/cy.js +2043 -143
- data/lib/assets/javascripts/twitter_cldr/da.js +2042 -142
- data/lib/assets/javascripts/twitter_cldr/de-CH.js +2042 -142
- data/lib/assets/javascripts/twitter_cldr/de.js +2042 -142
- data/lib/assets/javascripts/twitter_cldr/el.js +2042 -142
- data/lib/assets/javascripts/twitter_cldr/en-150.js +2042 -142
- data/lib/assets/javascripts/twitter_cldr/en-AU.js +2042 -142
- data/lib/assets/javascripts/twitter_cldr/en-CA.js +2042 -142
- data/lib/assets/javascripts/twitter_cldr/en-GB.js +2042 -142
- data/lib/assets/javascripts/twitter_cldr/en-IE.js +2042 -142
- data/lib/assets/javascripts/twitter_cldr/en-SG.js +2042 -142
- data/lib/assets/javascripts/twitter_cldr/en-ZA.js +2042 -142
- data/lib/assets/javascripts/twitter_cldr/en.js +2042 -142
- data/lib/assets/javascripts/twitter_cldr/es-419.js +2042 -142
- data/lib/assets/javascripts/twitter_cldr/es-CO.js +2042 -142
- data/lib/assets/javascripts/twitter_cldr/es-MX.js +2044 -144
- data/lib/assets/javascripts/twitter_cldr/es-US.js +2043 -143
- data/lib/assets/javascripts/twitter_cldr/es.js +2043 -143
- data/lib/assets/javascripts/twitter_cldr/eu.js +2042 -142
- data/lib/assets/javascripts/twitter_cldr/fa.js +2042 -142
- data/lib/assets/javascripts/twitter_cldr/fi.js +2042 -142
- data/lib/assets/javascripts/twitter_cldr/fil.js +2043 -143
- data/lib/assets/javascripts/twitter_cldr/fr-BE.js +2042 -142
- data/lib/assets/javascripts/twitter_cldr/fr-CA.js +2042 -142
- data/lib/assets/javascripts/twitter_cldr/fr-CH.js +2043 -143
- data/lib/assets/javascripts/twitter_cldr/fr.js +2042 -142
- data/lib/assets/javascripts/twitter_cldr/ga.js +2044 -144
- data/lib/assets/javascripts/twitter_cldr/gl.js +2042 -142
- data/lib/assets/javascripts/twitter_cldr/he.js +2043 -143
- data/lib/assets/javascripts/twitter_cldr/hi.js +2042 -142
- data/lib/assets/javascripts/twitter_cldr/hr.js +2043 -143
- data/lib/assets/javascripts/twitter_cldr/hu.js +2042 -142
- data/lib/assets/javascripts/twitter_cldr/id.js +2042 -142
- data/lib/assets/javascripts/twitter_cldr/is.js +2042 -142
- data/lib/assets/javascripts/twitter_cldr/it-CH.js +2043 -143
- data/lib/assets/javascripts/twitter_cldr/it.js +2043 -143
- data/lib/assets/javascripts/twitter_cldr/ja.js +2042 -142
- data/lib/assets/javascripts/twitter_cldr/ko.js +2042 -142
- data/lib/assets/javascripts/twitter_cldr/lv.js +2043 -143
- data/lib/assets/javascripts/twitter_cldr/msa.js +2043 -143
- data/lib/assets/javascripts/twitter_cldr/nl.js +2042 -142
- data/lib/assets/javascripts/twitter_cldr/no.js +2042 -142
- data/lib/assets/javascripts/twitter_cldr/pl.js +2043 -143
- data/lib/assets/javascripts/twitter_cldr/pt.js +2042 -142
- data/lib/assets/javascripts/twitter_cldr/ro.js +2043 -143
- data/lib/assets/javascripts/twitter_cldr/ru.js +2043 -143
- data/lib/assets/javascripts/twitter_cldr/sk.js +2043 -143
- data/lib/assets/javascripts/twitter_cldr/sq.js +2042 -142
- data/lib/assets/javascripts/twitter_cldr/sr.js +2043 -143
- data/lib/assets/javascripts/twitter_cldr/sv.js +2042 -142
- data/lib/assets/javascripts/twitter_cldr/ta.js +2042 -142
- data/lib/assets/javascripts/twitter_cldr/th.js +2042 -142
- data/lib/assets/javascripts/twitter_cldr/tr.js +2042 -142
- data/lib/assets/javascripts/twitter_cldr/uk.js +2044 -144
- data/lib/assets/javascripts/twitter_cldr/ur.js +2042 -142
- data/lib/assets/javascripts/twitter_cldr/vi.js +2042 -142
- data/lib/assets/javascripts/twitter_cldr/zh-cn.js +2042 -142
- data/lib/assets/javascripts/twitter_cldr/zh-tw.js +2042 -142
- data/lib/twitter_cldr/js/compiler.rb +26 -5
- data/lib/twitter_cldr/js/mustache/calendars/datetime.coffee +1 -4
- data/lib/twitter_cldr/js/mustache/numbers/numbers.coffee +10 -4
- data/lib/twitter_cldr/js/mustache/parsers/parser.coffee +32 -0
- data/lib/twitter_cldr/js/mustache/parsers/segmentation_parser.coffee +89 -0
- data/lib/twitter_cldr/js/mustache/parsers/symbol_table.coffee +14 -0
- data/lib/twitter_cldr/js/mustache/parsers/unicode_regex/character_class.coffee +51 -0
- data/lib/twitter_cldr/js/mustache/parsers/unicode_regex/character_range.coffee +19 -0
- data/lib/twitter_cldr/js/mustache/parsers/unicode_regex/character_set.coffee +36 -0
- data/lib/twitter_cldr/js/mustache/parsers/unicode_regex/component.coffee +48 -0
- data/lib/twitter_cldr/js/mustache/parsers/unicode_regex/literal.coffee +44 -0
- data/lib/twitter_cldr/js/mustache/parsers/unicode_regex/unicode_string.coffee +23 -0
- data/lib/twitter_cldr/js/mustache/parsers/unicode_regex_parser.coffee +189 -0
- data/lib/twitter_cldr/js/mustache/plurals/rules.coffee +7 -5
- data/lib/twitter_cldr/js/mustache/shared/break_iterator.coffee +148 -0
- data/lib/twitter_cldr/js/mustache/shared/code_point.coffee +121 -0
- data/lib/twitter_cldr/js/mustache/shared/unicode_regex.coffee +41 -0
- data/lib/twitter_cldr/js/mustache/tokenizers/composite_token.coffee +11 -0
- data/lib/twitter_cldr/js/mustache/tokenizers/segmentation_tokenizer.coffee +24 -0
- data/lib/twitter_cldr/js/mustache/tokenizers/token.coffee +14 -0
- data/lib/twitter_cldr/js/mustache/tokenizers/tokenizer.coffee +83 -0
- data/lib/twitter_cldr/js/mustache/tokenizers/unicode_regex/unicode_regex_tokenizer.coffee +39 -0
- data/lib/twitter_cldr/js/mustache/utilities.coffee +45 -0
- data/lib/twitter_cldr/js/mustache/utils/code_points.coffee +23 -0
- data/lib/twitter_cldr/js/mustache/utils/range.coffee +16 -0
- data/lib/twitter_cldr/js/mustache/utils/range_set.coffee +195 -0
- data/lib/twitter_cldr/js/renderers.rb +39 -10
- data/lib/twitter_cldr/js/renderers/calendars/timespan_renderer.rb +1 -1
- data/lib/twitter_cldr/js/renderers/numbers/numbers_renderer.rb +16 -9
- data/lib/twitter_cldr/js/renderers/parsers/parser.rb +18 -0
- data/lib/twitter_cldr/js/renderers/parsers/segmentation_parser.rb +18 -0
- data/lib/twitter_cldr/js/renderers/parsers/symbol_table.rb +18 -0
- data/lib/twitter_cldr/js/renderers/parsers/unicode_regex/character_class.rb +18 -0
- data/lib/twitter_cldr/js/renderers/parsers/unicode_regex/character_range.rb +18 -0
- data/lib/twitter_cldr/js/renderers/parsers/unicode_regex/character_set.rb +18 -0
- data/lib/twitter_cldr/js/renderers/parsers/unicode_regex/component.rb +18 -0
- data/lib/twitter_cldr/js/renderers/parsers/unicode_regex/literal.rb +18 -0
- data/lib/twitter_cldr/js/renderers/parsers/unicode_regex/unicode_string.rb +18 -0
- data/lib/twitter_cldr/js/renderers/parsers/unicode_regex_parser.rb +18 -0
- data/lib/twitter_cldr/js/renderers/plurals/rules/plural_rules_renderer.rb +27 -28
- data/lib/twitter_cldr/js/renderers/shared/break_iterator_renderer.rb +50 -0
- data/lib/twitter_cldr/js/renderers/shared/code_point_renderer.rb +103 -0
- data/lib/twitter_cldr/js/renderers/shared/unicode_regex_renderer.rb +18 -0
- data/lib/twitter_cldr/js/renderers/tokenizers/composite_token.rb +18 -0
- data/lib/twitter_cldr/js/renderers/tokenizers/segmentation_tokenizer.rb +18 -0
- data/lib/twitter_cldr/js/renderers/tokenizers/token.rb +18 -0
- data/lib/twitter_cldr/js/renderers/tokenizers/tokenizer.rb +18 -0
- data/lib/twitter_cldr/js/renderers/tokenizers/unicode_regex/unicode_regex_tokenizer.rb +18 -0
- data/lib/twitter_cldr/js/renderers/utils/code_points.rb +18 -0
- data/lib/twitter_cldr/js/renderers/utils/range.rb +18 -0
- data/lib/twitter_cldr/js/renderers/utils/range_set.rb +18 -0
- data/lib/twitter_cldr/js/tasks/tasks.rb +1 -1
- data/lib/twitter_cldr/js/version.rb +1 -1
- data/spec/js/calendars/datetime.ru.spec.js +17 -0
- data/spec/js/calendars/timespan.ru.spec.js +20 -0
- data/spec/js/numbers/abbreviated/abbreviated_number.spec.js +5 -5
- data/spec/js/numbers/abbreviated/long_decimal.ru.spec.js +24 -0
- data/spec/js/numbers/currency.spec.js +1 -1
- data/spec/js/parsers/parser.spec.js +74 -0
- data/spec/js/parsers/segmentation_parser.spec.js +67 -0
- data/spec/js/parsers/symbol_table.spec.js +20 -0
- data/spec/js/parsers/unicode_regex/character_class.spec.js +121 -0
- data/spec/js/parsers/unicode_regex/character_range.spec.js +17 -0
- data/spec/js/parsers/unicode_regex/character_set.spec.js +17 -0
- data/spec/js/parsers/unicode_regex/literal.spec.js +30 -0
- data/spec/js/parsers/unicode_regex/unicode_string.spec.js +17 -0
- data/spec/js/parsers/unicode_regex_parser.spec.js +76 -0
- data/spec/js/plurals/plural_rules.spec.js +21 -0
- data/spec/js/shared/break_iterator.spec.js +68 -0
- data/spec/js/shared/code_point.spec.js +89 -0
- data/spec/js/shared/unicode_regex.spec.js +201 -0
- data/spec/js/tokenizers/composite_token.spec.js +28 -0
- data/spec/js/tokenizers/segmentation_tokenizer.spec.js +22 -0
- data/spec/js/tokenizers/token.spec.js +25 -0
- data/spec/js/tokenizers/unicode_regex/unicode_regex_tokenizer.spec.js +163 -0
- data/spec/js/utilities.spec.js +47 -0
- data/spec/js/utils/code_points.spec.js +49 -0
- data/spec/js/utils/range_set.spec.js +248 -0
- data/twitter_cldr_js.gemspec +8 -6
- metadata +128 -34
- data/lib/twitter_cldr/js/renderers/plurals/rules/plural_rules_compiler.rb +0 -93
- data/spec/ruby/renderers/plurals/plural_rules_compiler_spec.rb +0 -56
- data/spec/ruby/spec_helper.rb +0 -11
@@ -0,0 +1,103 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
# Copyright 2012 Twitter, Inc
|
4
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
5
|
+
|
6
|
+
module TwitterCldr
|
7
|
+
module Js
|
8
|
+
module Renderers
|
9
|
+
module Shared
|
10
|
+
class CodePointRenderer < TwitterCldr::Js::Renderers::Base
|
11
|
+
set_template "mustache/shared/code_point.coffee"
|
12
|
+
|
13
|
+
def blocks
|
14
|
+
block_data = TwitterCldr.get_resource(:unicode_data, :blocks)
|
15
|
+
block_data.inject({}) do |ret, (k, range)|
|
16
|
+
ret[k] = [range.first, range.last] #{ :first => v.first, :last => v.last }
|
17
|
+
ret
|
18
|
+
end.to_json
|
19
|
+
end
|
20
|
+
|
21
|
+
def composition_exclusions
|
22
|
+
composition_exclusions_data = TwitterCldr.get_resource(:unicode_data, :composition_exclusions)
|
23
|
+
composition_exclusions_data.inject([]) do |ret, range|
|
24
|
+
ret << [range.first, range.last] #{ :first => range.first, :last => range.last }
|
25
|
+
ret
|
26
|
+
end.to_json
|
27
|
+
end
|
28
|
+
|
29
|
+
def hangul_blocks
|
30
|
+
hangul_types_data = TwitterCldr.get_resource(:unicode_data, :hangul_blocks)
|
31
|
+
hangul_types_data.inject({}) do |ret, (k, v)|
|
32
|
+
ret[k] = []
|
33
|
+
v.each { |range|
|
34
|
+
ret[k] << [range.first, range.last] # { :first => range.first, :last => range.last }
|
35
|
+
}
|
36
|
+
ret
|
37
|
+
end.to_json
|
38
|
+
end
|
39
|
+
|
40
|
+
def canonical_compositions
|
41
|
+
canonical_compositions_data = TwitterCldr.get_resource(:unicode_data, :canonical_compositions)
|
42
|
+
canonical_compositions_data.inject({}) do |ret, (k, v)|
|
43
|
+
ret [k.join("|")] = v
|
44
|
+
ret
|
45
|
+
end.to_json
|
46
|
+
end
|
47
|
+
|
48
|
+
def index_keys
|
49
|
+
keys_data = TwitterCldr.get_resource(:unicode_data, :indices, :keys)
|
50
|
+
keys_data.inject({}) do |ret, (k, v)|
|
51
|
+
ret[k] = v
|
52
|
+
ret
|
53
|
+
end.to_json
|
54
|
+
end
|
55
|
+
|
56
|
+
def index_data
|
57
|
+
index_data = {}
|
58
|
+
[:category, :bidi_class, :bidi_mirrored].each do |key|
|
59
|
+
data = TwitterCldr.get_resource(:unicode_data, :indices, key)
|
60
|
+
index_data[key] = data.inject({}) do |ret, (k, v)|
|
61
|
+
ret[k] = []
|
62
|
+
v.each { |range|
|
63
|
+
ret[k] << [range.first, range.last] # { :first => range.first, :last => range.last }
|
64
|
+
}
|
65
|
+
ret
|
66
|
+
end
|
67
|
+
end
|
68
|
+
index_data.to_json
|
69
|
+
end
|
70
|
+
|
71
|
+
def property_data
|
72
|
+
property_data = {}
|
73
|
+
[:line_break, :sentence_break, :word_break].each do |key|
|
74
|
+
data = TwitterCldr.get_resource(:unicode_data, :properties, key)
|
75
|
+
property_data[key] = data.inject({}) do |ret, (k, v)|
|
76
|
+
ret[k] = []
|
77
|
+
v.each { |range|
|
78
|
+
ret[k] << [range.first, range.last] # { :first => range.first, :last => range.last }
|
79
|
+
}
|
80
|
+
ret
|
81
|
+
end
|
82
|
+
end
|
83
|
+
property_data.to_json
|
84
|
+
end
|
85
|
+
|
86
|
+
def block_data
|
87
|
+
block_data = {}
|
88
|
+
blocks = TwitterCldr.get_resource(:unicode_data, :blocks)
|
89
|
+
blocks.each do |key, _|
|
90
|
+
data = TwitterCldr.get_resource(:unicode_data, :blocks, key)
|
91
|
+
block_data[key] = data.inject({}) do |ret, (k, v)|
|
92
|
+
ret[k] = v
|
93
|
+
ret
|
94
|
+
end
|
95
|
+
end
|
96
|
+
block_data.to_json
|
97
|
+
end
|
98
|
+
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
# Copyright 2012 Twitter, Inc
|
4
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
5
|
+
|
6
|
+
module TwitterCldr
|
7
|
+
module Js
|
8
|
+
module Renderers
|
9
|
+
module Shared
|
10
|
+
|
11
|
+
class UnicodeRegexRenderer < TwitterCldr::Js::Renderers::Base
|
12
|
+
set_template "mustache/shared/unicode_regex.coffee"
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
# Copyright 2012 Twitter, Inc
|
4
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
5
|
+
|
6
|
+
module TwitterCldr
|
7
|
+
module Js
|
8
|
+
module Renderers
|
9
|
+
module Tokenizers
|
10
|
+
|
11
|
+
class CompositeTokenRenderer < TwitterCldr::Js::Renderers::Base
|
12
|
+
set_template "mustache/tokenizers/composite_token.coffee"
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
# Copyright 2012 Twitter, Inc
|
4
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
5
|
+
|
6
|
+
module TwitterCldr
|
7
|
+
module Js
|
8
|
+
module Renderers
|
9
|
+
module Tokenizers
|
10
|
+
|
11
|
+
class SegmentationTokenizerRenderer < TwitterCldr::Js::Renderers::Base
|
12
|
+
set_template "mustache/tokenizers/segmentation_tokenizer.coffee"
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
# Copyright 2012 Twitter, Inc
|
4
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
5
|
+
|
6
|
+
module TwitterCldr
|
7
|
+
module Js
|
8
|
+
module Renderers
|
9
|
+
module Tokenizers
|
10
|
+
|
11
|
+
class TokenRenderer < TwitterCldr::Js::Renderers::Base
|
12
|
+
set_template "mustache/tokenizers/token.coffee"
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
# Copyright 2012 Twitter, Inc
|
4
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
5
|
+
|
6
|
+
module TwitterCldr
|
7
|
+
module Js
|
8
|
+
module Renderers
|
9
|
+
module Tokenizers
|
10
|
+
|
11
|
+
class TokenizerRenderer < TwitterCldr::Js::Renderers::Base
|
12
|
+
set_template "mustache/tokenizers/tokenizer.coffee"
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
# Copyright 2012 Twitter, Inc
|
4
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
5
|
+
|
6
|
+
module TwitterCldr
|
7
|
+
module Js
|
8
|
+
module Renderers
|
9
|
+
module Tokenizers
|
10
|
+
|
11
|
+
class UnicodeRegexTokenizerRenderer < TwitterCldr::Js::Renderers::Base
|
12
|
+
set_template "mustache/tokenizers/unicode_regex/unicode_regex_tokenizer.coffee"
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
# Copyright 2012 Twitter, Inc
|
4
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
5
|
+
|
6
|
+
module TwitterCldr
|
7
|
+
module Js
|
8
|
+
module Renderers
|
9
|
+
module Utils
|
10
|
+
|
11
|
+
class CodePointsRenderer < TwitterCldr::Js::Renderers::Base
|
12
|
+
set_template "mustache/utils/code_points.coffee"
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
# Copyright 2012 Twitter, Inc
|
4
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
5
|
+
|
6
|
+
module TwitterCldr
|
7
|
+
module Js
|
8
|
+
module Renderers
|
9
|
+
module Utils
|
10
|
+
|
11
|
+
class RangeRenderer < TwitterCldr::Js::Renderers::Base
|
12
|
+
set_template "mustache/utils/range.coffee"
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
# Copyright 2012 Twitter, Inc
|
4
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
5
|
+
|
6
|
+
module TwitterCldr
|
7
|
+
module Js
|
8
|
+
module Renderers
|
9
|
+
module Utils
|
10
|
+
|
11
|
+
class RangeSetRenderer < TwitterCldr::Js::Renderers::Base
|
12
|
+
set_template "mustache/utils/range_set.coffee"
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
// Copyright 2012 Twitter, Inc
|
2
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
3
|
+
|
4
|
+
var TwitterCldr = require('../../../lib/assets/javascripts/twitter_cldr/ru.js');
|
5
|
+
|
6
|
+
describe("DateTimeFormatter", function() {
|
7
|
+
beforeEach(function() {
|
8
|
+
formatter = new TwitterCldr.DateTimeFormatter();
|
9
|
+
});
|
10
|
+
|
11
|
+
describe("#format", function() {
|
12
|
+
it("correctly formats Russian additional formats", function() {
|
13
|
+
date = new Date(2012, 1, 1);
|
14
|
+
expect(formatter.format(date, {format: "additional", type: "GyMMMd"})).toEqual("1 февр. 2012 г. н. э.");
|
15
|
+
});
|
16
|
+
});
|
17
|
+
});
|
@@ -0,0 +1,20 @@
|
|
1
|
+
// Copyright 2012 Twitter, Inc
|
2
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
3
|
+
|
4
|
+
var TwitterCldr = require('../../../lib/assets/javascripts/twitter_cldr/ru.js');
|
5
|
+
|
6
|
+
describe("TimespanFormatter", function() {
|
7
|
+
beforeEach(function() {
|
8
|
+
formatter = new TwitterCldr.TimespanFormatter();
|
9
|
+
});
|
10
|
+
|
11
|
+
describe("#format", function() {
|
12
|
+
it("works for Russian", function() {
|
13
|
+
var options = {direction: "none", approximate: true};
|
14
|
+
expect(formatter.format(1, options)).toEqual("1 секунда");
|
15
|
+
expect(formatter.format(2, options)).toEqual("2 секунды");
|
16
|
+
expect(formatter.format(5, options)).toEqual("5 секунд");
|
17
|
+
expect(formatter.format(23, options)).toEqual("23 секунды");
|
18
|
+
});
|
19
|
+
});
|
20
|
+
});
|
@@ -11,11 +11,11 @@ describe("AbbreviatedNumberFormatter", function() {
|
|
11
11
|
|
12
12
|
describe("#transform_number", function() {
|
13
13
|
it("truncates the number based on the integer format string", function() {
|
14
|
-
expect(formatter.truncate_number(number,
|
15
|
-
expect(formatter.truncate_number(number,
|
16
|
-
expect(formatter.truncate_number(number,
|
17
|
-
expect(formatter.truncate_number(number,
|
18
|
-
expect(formatter.truncate_number(number,
|
14
|
+
expect(formatter.truncate_number(number, 1)).toEqual(1.234);
|
15
|
+
expect(formatter.truncate_number(number, 2)).toEqual(12.34);
|
16
|
+
expect(formatter.truncate_number(number, 3)).toEqual(123.4);
|
17
|
+
expect(formatter.truncate_number(number, 4)).toEqual(1234);
|
18
|
+
expect(formatter.truncate_number(number, 5)).toEqual(1234);
|
19
19
|
});
|
20
20
|
|
21
21
|
it("returns the original number if greater than 10^15", function() {
|
@@ -0,0 +1,24 @@
|
|
1
|
+
// Copyright 2012 Twitter, Inc
|
2
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
3
|
+
|
4
|
+
var TwitterCldr = require('../../../../lib/assets/javascripts/twitter_cldr/ru.js');
|
5
|
+
|
6
|
+
describe("LongDecimalFormatter", function() {
|
7
|
+
beforeEach(function() {
|
8
|
+
formatter = new TwitterCldr.LongDecimalFormatter();
|
9
|
+
});
|
10
|
+
|
11
|
+
describe("#format", function() {
|
12
|
+
it("uses correct pluralization for abbreviated numbers", function() {
|
13
|
+
expect(formatter.format(1000)).toEqual("1 тысяча");
|
14
|
+
expect(formatter.format(2222)).toEqual("2 тысячи");
|
15
|
+
expect(formatter.format(5000)).toEqual("5 тысяч");
|
16
|
+
|
17
|
+
expect(formatter.format(1200000, { precision: 0 })).toEqual("1 миллион");
|
18
|
+
expect(formatter.format(1200000, { precision: 1 })).toEqual("1,2 миллиона");
|
19
|
+
|
20
|
+
expect(formatter.format(3000000)).toEqual("3 миллиона");
|
21
|
+
expect(formatter.format(3456000, { precision: 2 })).toEqual("3,46 миллиона");
|
22
|
+
});
|
23
|
+
});
|
24
|
+
});
|
@@ -15,7 +15,7 @@ describe("CurrencyFormatter", function() {
|
|
15
15
|
|
16
16
|
it("handles negative numbers", function() {
|
17
17
|
// yes, negative numbers (at least for accounting) are represented using parentheses without a minus sign
|
18
|
-
expect(formatter.format(-12)).toEqual("
|
18
|
+
expect(formatter.format(-12)).toEqual("-$12.00");
|
19
19
|
});
|
20
20
|
|
21
21
|
it("should use the specified currency symbol when specified", function() {
|
@@ -0,0 +1,74 @@
|
|
1
|
+
// Copyright 2012 Twitter, Inc
|
2
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
3
|
+
|
4
|
+
var TwitterCldr = require('../../../lib/assets/javascripts/twitter_cldr/en.js');
|
5
|
+
|
6
|
+
describe("Parser", function() {
|
7
|
+
var FakeParser,
|
8
|
+
__hasProp = {}.hasOwnProperty,
|
9
|
+
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
|
10
|
+
|
11
|
+
FakeParser = (function(_super) {
|
12
|
+
__extends(FakeParser, _super);
|
13
|
+
|
14
|
+
function FakeParser() {
|
15
|
+
return FakeParser.__super__.constructor.apply(this, arguments);
|
16
|
+
}
|
17
|
+
|
18
|
+
FakeParser.prototype.do_parse = function(options) {
|
19
|
+
if (options == null) {
|
20
|
+
options = {};
|
21
|
+
}
|
22
|
+
return null;
|
23
|
+
};
|
24
|
+
|
25
|
+
return FakeParser;
|
26
|
+
})(TwitterCldr.Parser);
|
27
|
+
|
28
|
+
var tokens = [
|
29
|
+
new TwitterCldr.Token({'type' : "a", 'value' : "a"}),
|
30
|
+
new TwitterCldr.Token({'type' : "b", 'value' : "b"}),
|
31
|
+
new TwitterCldr.Token({'type' : "c", 'value' : "c"})
|
32
|
+
];
|
33
|
+
|
34
|
+
var parser = new FakeParser();
|
35
|
+
|
36
|
+
describe("#parse", function() {
|
37
|
+
it("should call do_parse", function() {
|
38
|
+
spyOn(parser, "do_parse");
|
39
|
+
parser.parse(tokens);
|
40
|
+
expect(parser.do_parse).toHaveBeenCalled();
|
41
|
+
});
|
42
|
+
});
|
43
|
+
|
44
|
+
describe("#reset", function() {
|
45
|
+
it("should reset the token index", function() {
|
46
|
+
parser.parse(tokens);
|
47
|
+
parser.next_token("a");
|
48
|
+
expect(parser.current_token().type).toEqual("b");
|
49
|
+
parser.reset();
|
50
|
+
expect(parser.current_token().type).toEqual("a");
|
51
|
+
});
|
52
|
+
});
|
53
|
+
|
54
|
+
describe("next_token", function() {
|
55
|
+
it("should advance to the next token", function() {
|
56
|
+
parser.parse(tokens);
|
57
|
+
parser.next_token("a");
|
58
|
+
expect(parser.current_token().type).toEqual("b");
|
59
|
+
});
|
60
|
+
it("should raise an error after encountering an unexpected token", function() {
|
61
|
+
parser.parse(tokens);
|
62
|
+
expect(function() {
|
63
|
+
parser.next_token("z");
|
64
|
+
}).toThrow(new Error("Unexpected token"));
|
65
|
+
});
|
66
|
+
});
|
67
|
+
|
68
|
+
describe("#current_token", function() {
|
69
|
+
it("returns the current token", function() {
|
70
|
+
parser.parse(tokens);
|
71
|
+
expect(parser.current_token().type).toEqual("a");
|
72
|
+
});
|
73
|
+
});
|
74
|
+
});
|