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.
Files changed (153) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -5
  3. data/History.txt +8 -0
  4. data/README.md +69 -1
  5. data/Rakefile +0 -9
  6. data/lib/assets/javascripts/twitter_cldr/af.js +2042 -142
  7. data/lib/assets/javascripts/twitter_cldr/ar.js +2043 -143
  8. data/lib/assets/javascripts/twitter_cldr/be.js +2044 -144
  9. data/lib/assets/javascripts/twitter_cldr/bg.js +2042 -142
  10. data/lib/assets/javascripts/twitter_cldr/bn.js +2042 -142
  11. data/lib/assets/javascripts/twitter_cldr/ca.js +2042 -142
  12. data/lib/assets/javascripts/twitter_cldr/cs.js +2043 -143
  13. data/lib/assets/javascripts/twitter_cldr/cy.js +2043 -143
  14. data/lib/assets/javascripts/twitter_cldr/da.js +2042 -142
  15. data/lib/assets/javascripts/twitter_cldr/de-CH.js +2042 -142
  16. data/lib/assets/javascripts/twitter_cldr/de.js +2042 -142
  17. data/lib/assets/javascripts/twitter_cldr/el.js +2042 -142
  18. data/lib/assets/javascripts/twitter_cldr/en-150.js +2042 -142
  19. data/lib/assets/javascripts/twitter_cldr/en-AU.js +2042 -142
  20. data/lib/assets/javascripts/twitter_cldr/en-CA.js +2042 -142
  21. data/lib/assets/javascripts/twitter_cldr/en-GB.js +2042 -142
  22. data/lib/assets/javascripts/twitter_cldr/en-IE.js +2042 -142
  23. data/lib/assets/javascripts/twitter_cldr/en-SG.js +2042 -142
  24. data/lib/assets/javascripts/twitter_cldr/en-ZA.js +2042 -142
  25. data/lib/assets/javascripts/twitter_cldr/en.js +2042 -142
  26. data/lib/assets/javascripts/twitter_cldr/es-419.js +2042 -142
  27. data/lib/assets/javascripts/twitter_cldr/es-CO.js +2042 -142
  28. data/lib/assets/javascripts/twitter_cldr/es-MX.js +2044 -144
  29. data/lib/assets/javascripts/twitter_cldr/es-US.js +2043 -143
  30. data/lib/assets/javascripts/twitter_cldr/es.js +2043 -143
  31. data/lib/assets/javascripts/twitter_cldr/eu.js +2042 -142
  32. data/lib/assets/javascripts/twitter_cldr/fa.js +2042 -142
  33. data/lib/assets/javascripts/twitter_cldr/fi.js +2042 -142
  34. data/lib/assets/javascripts/twitter_cldr/fil.js +2043 -143
  35. data/lib/assets/javascripts/twitter_cldr/fr-BE.js +2042 -142
  36. data/lib/assets/javascripts/twitter_cldr/fr-CA.js +2042 -142
  37. data/lib/assets/javascripts/twitter_cldr/fr-CH.js +2043 -143
  38. data/lib/assets/javascripts/twitter_cldr/fr.js +2042 -142
  39. data/lib/assets/javascripts/twitter_cldr/ga.js +2044 -144
  40. data/lib/assets/javascripts/twitter_cldr/gl.js +2042 -142
  41. data/lib/assets/javascripts/twitter_cldr/he.js +2043 -143
  42. data/lib/assets/javascripts/twitter_cldr/hi.js +2042 -142
  43. data/lib/assets/javascripts/twitter_cldr/hr.js +2043 -143
  44. data/lib/assets/javascripts/twitter_cldr/hu.js +2042 -142
  45. data/lib/assets/javascripts/twitter_cldr/id.js +2042 -142
  46. data/lib/assets/javascripts/twitter_cldr/is.js +2042 -142
  47. data/lib/assets/javascripts/twitter_cldr/it-CH.js +2043 -143
  48. data/lib/assets/javascripts/twitter_cldr/it.js +2043 -143
  49. data/lib/assets/javascripts/twitter_cldr/ja.js +2042 -142
  50. data/lib/assets/javascripts/twitter_cldr/ko.js +2042 -142
  51. data/lib/assets/javascripts/twitter_cldr/lv.js +2043 -143
  52. data/lib/assets/javascripts/twitter_cldr/msa.js +2043 -143
  53. data/lib/assets/javascripts/twitter_cldr/nl.js +2042 -142
  54. data/lib/assets/javascripts/twitter_cldr/no.js +2042 -142
  55. data/lib/assets/javascripts/twitter_cldr/pl.js +2043 -143
  56. data/lib/assets/javascripts/twitter_cldr/pt.js +2042 -142
  57. data/lib/assets/javascripts/twitter_cldr/ro.js +2043 -143
  58. data/lib/assets/javascripts/twitter_cldr/ru.js +2043 -143
  59. data/lib/assets/javascripts/twitter_cldr/sk.js +2043 -143
  60. data/lib/assets/javascripts/twitter_cldr/sq.js +2042 -142
  61. data/lib/assets/javascripts/twitter_cldr/sr.js +2043 -143
  62. data/lib/assets/javascripts/twitter_cldr/sv.js +2042 -142
  63. data/lib/assets/javascripts/twitter_cldr/ta.js +2042 -142
  64. data/lib/assets/javascripts/twitter_cldr/th.js +2042 -142
  65. data/lib/assets/javascripts/twitter_cldr/tr.js +2042 -142
  66. data/lib/assets/javascripts/twitter_cldr/uk.js +2044 -144
  67. data/lib/assets/javascripts/twitter_cldr/ur.js +2042 -142
  68. data/lib/assets/javascripts/twitter_cldr/vi.js +2042 -142
  69. data/lib/assets/javascripts/twitter_cldr/zh-cn.js +2042 -142
  70. data/lib/assets/javascripts/twitter_cldr/zh-tw.js +2042 -142
  71. data/lib/twitter_cldr/js/compiler.rb +26 -5
  72. data/lib/twitter_cldr/js/mustache/calendars/datetime.coffee +1 -4
  73. data/lib/twitter_cldr/js/mustache/numbers/numbers.coffee +10 -4
  74. data/lib/twitter_cldr/js/mustache/parsers/parser.coffee +32 -0
  75. data/lib/twitter_cldr/js/mustache/parsers/segmentation_parser.coffee +89 -0
  76. data/lib/twitter_cldr/js/mustache/parsers/symbol_table.coffee +14 -0
  77. data/lib/twitter_cldr/js/mustache/parsers/unicode_regex/character_class.coffee +51 -0
  78. data/lib/twitter_cldr/js/mustache/parsers/unicode_regex/character_range.coffee +19 -0
  79. data/lib/twitter_cldr/js/mustache/parsers/unicode_regex/character_set.coffee +36 -0
  80. data/lib/twitter_cldr/js/mustache/parsers/unicode_regex/component.coffee +48 -0
  81. data/lib/twitter_cldr/js/mustache/parsers/unicode_regex/literal.coffee +44 -0
  82. data/lib/twitter_cldr/js/mustache/parsers/unicode_regex/unicode_string.coffee +23 -0
  83. data/lib/twitter_cldr/js/mustache/parsers/unicode_regex_parser.coffee +189 -0
  84. data/lib/twitter_cldr/js/mustache/plurals/rules.coffee +7 -5
  85. data/lib/twitter_cldr/js/mustache/shared/break_iterator.coffee +148 -0
  86. data/lib/twitter_cldr/js/mustache/shared/code_point.coffee +121 -0
  87. data/lib/twitter_cldr/js/mustache/shared/unicode_regex.coffee +41 -0
  88. data/lib/twitter_cldr/js/mustache/tokenizers/composite_token.coffee +11 -0
  89. data/lib/twitter_cldr/js/mustache/tokenizers/segmentation_tokenizer.coffee +24 -0
  90. data/lib/twitter_cldr/js/mustache/tokenizers/token.coffee +14 -0
  91. data/lib/twitter_cldr/js/mustache/tokenizers/tokenizer.coffee +83 -0
  92. data/lib/twitter_cldr/js/mustache/tokenizers/unicode_regex/unicode_regex_tokenizer.coffee +39 -0
  93. data/lib/twitter_cldr/js/mustache/utilities.coffee +45 -0
  94. data/lib/twitter_cldr/js/mustache/utils/code_points.coffee +23 -0
  95. data/lib/twitter_cldr/js/mustache/utils/range.coffee +16 -0
  96. data/lib/twitter_cldr/js/mustache/utils/range_set.coffee +195 -0
  97. data/lib/twitter_cldr/js/renderers.rb +39 -10
  98. data/lib/twitter_cldr/js/renderers/calendars/timespan_renderer.rb +1 -1
  99. data/lib/twitter_cldr/js/renderers/numbers/numbers_renderer.rb +16 -9
  100. data/lib/twitter_cldr/js/renderers/parsers/parser.rb +18 -0
  101. data/lib/twitter_cldr/js/renderers/parsers/segmentation_parser.rb +18 -0
  102. data/lib/twitter_cldr/js/renderers/parsers/symbol_table.rb +18 -0
  103. data/lib/twitter_cldr/js/renderers/parsers/unicode_regex/character_class.rb +18 -0
  104. data/lib/twitter_cldr/js/renderers/parsers/unicode_regex/character_range.rb +18 -0
  105. data/lib/twitter_cldr/js/renderers/parsers/unicode_regex/character_set.rb +18 -0
  106. data/lib/twitter_cldr/js/renderers/parsers/unicode_regex/component.rb +18 -0
  107. data/lib/twitter_cldr/js/renderers/parsers/unicode_regex/literal.rb +18 -0
  108. data/lib/twitter_cldr/js/renderers/parsers/unicode_regex/unicode_string.rb +18 -0
  109. data/lib/twitter_cldr/js/renderers/parsers/unicode_regex_parser.rb +18 -0
  110. data/lib/twitter_cldr/js/renderers/plurals/rules/plural_rules_renderer.rb +27 -28
  111. data/lib/twitter_cldr/js/renderers/shared/break_iterator_renderer.rb +50 -0
  112. data/lib/twitter_cldr/js/renderers/shared/code_point_renderer.rb +103 -0
  113. data/lib/twitter_cldr/js/renderers/shared/unicode_regex_renderer.rb +18 -0
  114. data/lib/twitter_cldr/js/renderers/tokenizers/composite_token.rb +18 -0
  115. data/lib/twitter_cldr/js/renderers/tokenizers/segmentation_tokenizer.rb +18 -0
  116. data/lib/twitter_cldr/js/renderers/tokenizers/token.rb +18 -0
  117. data/lib/twitter_cldr/js/renderers/tokenizers/tokenizer.rb +18 -0
  118. data/lib/twitter_cldr/js/renderers/tokenizers/unicode_regex/unicode_regex_tokenizer.rb +18 -0
  119. data/lib/twitter_cldr/js/renderers/utils/code_points.rb +18 -0
  120. data/lib/twitter_cldr/js/renderers/utils/range.rb +18 -0
  121. data/lib/twitter_cldr/js/renderers/utils/range_set.rb +18 -0
  122. data/lib/twitter_cldr/js/tasks/tasks.rb +1 -1
  123. data/lib/twitter_cldr/js/version.rb +1 -1
  124. data/spec/js/calendars/datetime.ru.spec.js +17 -0
  125. data/spec/js/calendars/timespan.ru.spec.js +20 -0
  126. data/spec/js/numbers/abbreviated/abbreviated_number.spec.js +5 -5
  127. data/spec/js/numbers/abbreviated/long_decimal.ru.spec.js +24 -0
  128. data/spec/js/numbers/currency.spec.js +1 -1
  129. data/spec/js/parsers/parser.spec.js +74 -0
  130. data/spec/js/parsers/segmentation_parser.spec.js +67 -0
  131. data/spec/js/parsers/symbol_table.spec.js +20 -0
  132. data/spec/js/parsers/unicode_regex/character_class.spec.js +121 -0
  133. data/spec/js/parsers/unicode_regex/character_range.spec.js +17 -0
  134. data/spec/js/parsers/unicode_regex/character_set.spec.js +17 -0
  135. data/spec/js/parsers/unicode_regex/literal.spec.js +30 -0
  136. data/spec/js/parsers/unicode_regex/unicode_string.spec.js +17 -0
  137. data/spec/js/parsers/unicode_regex_parser.spec.js +76 -0
  138. data/spec/js/plurals/plural_rules.spec.js +21 -0
  139. data/spec/js/shared/break_iterator.spec.js +68 -0
  140. data/spec/js/shared/code_point.spec.js +89 -0
  141. data/spec/js/shared/unicode_regex.spec.js +201 -0
  142. data/spec/js/tokenizers/composite_token.spec.js +28 -0
  143. data/spec/js/tokenizers/segmentation_tokenizer.spec.js +22 -0
  144. data/spec/js/tokenizers/token.spec.js +25 -0
  145. data/spec/js/tokenizers/unicode_regex/unicode_regex_tokenizer.spec.js +163 -0
  146. data/spec/js/utilities.spec.js +47 -0
  147. data/spec/js/utils/code_points.spec.js +49 -0
  148. data/spec/js/utils/range_set.spec.js +248 -0
  149. data/twitter_cldr_js.gemspec +8 -6
  150. metadata +128 -34
  151. data/lib/twitter_cldr/js/renderers/plurals/rules/plural_rules_compiler.rb +0 -93
  152. data/spec/ruby/renderers/plurals/plural_rules_compiler_spec.rb +0 -56
  153. 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
@@ -8,7 +8,7 @@ module TwitterCldr
8
8
  module Tasks
9
9
 
10
10
  class << self
11
- def update
11
+ def update()
12
12
  build(
13
13
  :begin_msg => "Updating build... ",
14
14
  :output_dir => File.expand_path(File.join(File.dirname(__FILE__), "../../../assets/javascripts/twitter_cldr")),
@@ -5,6 +5,6 @@
5
5
 
6
6
  module TwitterCldr
7
7
  module Js
8
- VERSION = "2.3.2"
8
+ VERSION = "2.4.0"
9
9
  end
10
10
  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, { format: "0" })).toEqual(1.234);
15
- expect(formatter.truncate_number(number, { format: "00" })).toEqual(12.34);
16
- expect(formatter.truncate_number(number, { format: "000" })).toEqual(123.4);
17
- expect(formatter.truncate_number(number, { format: "0000" })).toEqual(1234);
18
- expect(formatter.truncate_number(number, { format: "00000" })).toEqual(1234);
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("($12.00)");
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
+ });