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
@@ -4,6 +4,53 @@
4
4
  var TwitterCldr = require('../../lib/assets/javascripts/twitter_cldr/en.js');
5
5
 
6
6
  describe("Utilities", function() {
7
+ describe("#remove_duplicates", function() {
8
+ it("should remove duplicates elements from the array", function() {
9
+ expect(TwitterCldr.Utilities.remove_duplicates([1,2,3,4,1,5])).toEqual([1,2,3,4,5]);
10
+ });
11
+ });
12
+
13
+ describe("#regex_escape", function() {
14
+ it("escapes special characters strings properly so that they can be used in regexes.", function() {
15
+ expect(TwitterCldr.Utilities.regex_escape("([.*+?^=!:${}()|\[\]\/\\])")).toEqual("\\(\\[\\.\\*\\+\\?\\^\\=\\!\\:\\$\\{\\}\\(\\)\\|\\[\\]\\/\\\\\\]\\)")
16
+ });
17
+ });
18
+
19
+ describe("#trim_string", function() {
20
+ it("removes all the leading whitespace from a string", function() {
21
+ expect(TwitterCldr.Utilities.trim_string(" Hello")).toEqual("Hello");
22
+ });
23
+ it("removes all the trailing whitespace from a string", function() {
24
+ expect(TwitterCldr.Utilities.trim_string("Hello ")).toEqual("Hello");
25
+ });
26
+ it("removes all the leading and trailing backspace from a string.", function() {
27
+ expect(TwitterCldr.Utilities.trim_string(" Hello ")).toEqual("Hello");
28
+ });
29
+ });
30
+
31
+ describe("#clone", function() {
32
+ it("clones objects", function() {
33
+ var obj = {a : "b", c : "d"};
34
+ var clone = TwitterCldr.Utilities.clone(obj);
35
+ expect(clone).toEqual(obj);
36
+ expect(clone).not.toBe(obj);
37
+ expect(clone["a"]).toEqual(obj["a"]);
38
+ expect(clone["c"]).toEqual(obj["c"]);
39
+ });
40
+ });
41
+
42
+ describe("#compute_cache_key", function() {
43
+ it("creates a cache key for an array of pieces", function() {
44
+ expect(TwitterCldr.Utilities.compute_cache_key(["a", "b"])).toEqual("a|b");
45
+ });
46
+ it("returns null for empty arrays", function() {
47
+ expect(TwitterCldr.Utilities.compute_cache_key([])).toBe(null);
48
+ });
49
+ it("returns null if no parameters are passed", function() {
50
+ expect(TwitterCldr.Utilities.compute_cache_key()).toBe(null);
51
+ });
52
+ });
53
+
7
54
  describe("#is_even", function() {
8
55
  it("should return true if the given number is even", function() {
9
56
  for(var i = 0; i <= 1000; i += 2) {
@@ -0,0 +1,49 @@
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("CodePoints", function() {
7
+ describe("#to_char", function() {
8
+ it("converts unicode code points to the actual character", function() {
9
+ expect(TwitterCldr.CodePoints.to_char(0x221E)).toEqual('∞');
10
+ });
11
+ });
12
+ describe("#from_char", function() {
13
+ it("converts a character to a unicode code point", function() {
14
+ expect(TwitterCldr.CodePoints.from_char('∞')).toEqual(0x221E);
15
+ });
16
+ });
17
+ describe("#to_chars", function() {
18
+ it("should handle an empty array", function() {
19
+ expect(TwitterCldr.CodePoints.to_chars([])).toEqual([]);
20
+ });
21
+ it("converts an array of unicode code points to an array of chars", function() {
22
+ expect(TwitterCldr.CodePoints.to_chars([0x65, 0x73, 0x70])).toEqual(['e', 's', 'p']);
23
+ });
24
+ });
25
+ describe("#from_chars", function() {
26
+ it("should handle an empty array", function() {
27
+ expect(TwitterCldr.CodePoints.from_chars([])).toEqual([]);
28
+ });
29
+ it("converts an array of chars to an array of unicode code points", function() {
30
+ expect(TwitterCldr.CodePoints.from_chars(['e', 's', 'p'])).toEqual([0x65, 0x73, 0x70]);
31
+ });
32
+ });
33
+ describe("#to_string", function() {
34
+ it("should handle an empty array", function() {
35
+ expect(TwitterCldr.CodePoints.to_string([])).toEqual('');
36
+ });
37
+ it("converts an array of unicode code points to a string", function() {
38
+ expect(TwitterCldr.CodePoints.to_string([0x65, 0x73, 0x70, 0x61, 0xF1, 0x6F, 0x6C])).toEqual('español');
39
+ });
40
+ });
41
+ describe("#from_string", function() {
42
+ it("should handle an empty string", function() {
43
+ expect(TwitterCldr.CodePoints.from_string('')).toEqual([]);
44
+ });
45
+ it("converts a string into an array of unicode code points", function() {
46
+ expect(TwitterCldr.CodePoints.from_string('español')).toEqual([0x65, 0x73, 0x70, 0x61, 0xF1, 0x6F, 0x6C]);
47
+ });
48
+ });
49
+ });
@@ -0,0 +1,248 @@
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
+ beforeEach(function() {
6
+ var arrayEqual = function(a, b) {
7
+ if (a.length !== b.length)
8
+ return false;
9
+ for (var i = 0; i < a.length; i++) {
10
+ if (a[i] !== b[i])
11
+ return false;
12
+ };
13
+ return true;
14
+ };
15
+ var equals = function (a,b) {
16
+ if (a instanceof Array && b instanceof Array)
17
+ return arrayEqual(a,b);
18
+ if (a instanceof Array && !(b instanceof Array))
19
+ return false;
20
+ if (!(a instanceof Array) && b instanceof Array)
21
+ return false;
22
+ else
23
+ return (a === b);
24
+ };
25
+ var areRangesEqual = function (range1, range2) {
26
+ if (range1 instanceof TwitterCldr.Range && range2 instanceof TwitterCldr.Range)
27
+ return (equals(range1.first, range2.first) && equals(range1.last, range2.last));
28
+ else if (!(range1 instanceof TwitterCldr.Range) && !(range2 instanceof TwitterCldr.Range))
29
+ return equals(range1, range2);
30
+ else
31
+ return false;
32
+ };
33
+ var toEqualRange = function (expected) {
34
+ return areRangesEqual (this.actual, expected);
35
+ };
36
+ var areRangeArraysEqual = function (arr1, arr2) {
37
+ if (arr1.length !== arr2.length)
38
+ return false;
39
+ for (var i = 0; i < arr1.length; i++) {
40
+ if (!areRangesEqual(arr1[i], arr2[i]))
41
+ return false;
42
+ };
43
+ return true;
44
+ };
45
+ var toEqualRangeArray = function (expected) {
46
+ if (!(this.actual instanceof Array) || !(expected instanceof Array))
47
+ return false;
48
+ return areRangeArraysEqual(this.actual, expected);
49
+ };
50
+ var toEqualRangeSet = function(expected) {
51
+ if (!(this.actual instanceof TwitterCldr.RangeSet) || !(expected instanceof TwitterCldr.RangeSet))
52
+ return false;
53
+ return areRangeArraysEqual (this.actual.ranges, expected.ranges);
54
+
55
+ };
56
+ this.addMatchers({
57
+ toEqualRange : toEqualRange,
58
+ toEqualRangeSet : toEqualRangeSet,
59
+ toEqualRangeArray : toEqualRangeArray
60
+ });
61
+ });
62
+
63
+ describe("RangeSet", function() {
64
+ describe("#rangify", function() {
65
+ it("should identify runs in an array of integers and return an array of ranges", function() {
66
+ expect(TwitterCldr.RangeSet.rangify([1, 2, 3, 6, 7, 8, 11, 14, 17, 18, 19])).toEqualRangeArray(
67
+ [ new TwitterCldr.Range(1, 3),
68
+ new TwitterCldr.Range(6, 8),
69
+ new TwitterCldr.Range(11, 11),
70
+ new TwitterCldr.Range(14, 14),
71
+ new TwitterCldr.Range(17, 19)
72
+ ]);
73
+ });
74
+ it("should not rangify zero-length values when told to compress", function() {
75
+ expect(TwitterCldr.RangeSet.rangify([1, 2, 3, 5, 8, 11, 12], true)).toEqualRangeArray(
76
+ [ new TwitterCldr.Range(1, 3),
77
+ 5,
78
+ 8,
79
+ new TwitterCldr.Range(11, 12),
80
+ ]);
81
+ });
82
+ });
83
+
84
+ describe("#to_array", function() {
85
+ it("should return a copy of the ranges in the set", function() {
86
+ set = new TwitterCldr.RangeSet([new TwitterCldr.Range (1, 10)]);
87
+ expect(set.to_array()).not.toBe(set.ranges);
88
+ r = new TwitterCldr.Range([1,2,3], [1,2,3]);
89
+ expect(r).toEqualRange(r); //new TwitterCldr.Range([1,2,3], [1,2,3]));
90
+ expect([1,2,3]).toEqual([1,2,3]);
91
+ });
92
+ it("should return compressed ranges when asked", function() {
93
+ set = new TwitterCldr.RangeSet([new TwitterCldr.Range(1,10), new TwitterCldr.Range(12, 12)])
94
+ expect(set.to_array(true)).toEqualRangeArray([new TwitterCldr.Range(1, 10), 12]);
95
+ });
96
+ });
97
+
98
+ describe("#to_full_array", function() {
99
+ it("expands all ranges", function() {
100
+ set = new TwitterCldr.RangeSet([new TwitterCldr.Range (1, 5)])
101
+ expect(set.to_full_array()).toEqual[1,2,3,4,5];
102
+ });
103
+ });
104
+
105
+ describe("#new", function() {
106
+ it("should flatten leading overlapping ranges", function() {
107
+ expect((new TwitterCldr.RangeSet([new TwitterCldr.Range(3, 10), new TwitterCldr.Range(1, 8)])).to_array()).toEqualRangeArray([new TwitterCldr.Range (1, 10)]);
108
+ });
109
+ it("should flatten trailing overlapping ranges", function() {
110
+ expect((new TwitterCldr.RangeSet ([new TwitterCldr.Range(1, 10), new TwitterCldr.Range(8, 12)])).to_array()).toEqualRangeArray([new TwitterCldr.Range (1, 12)]);
111
+ });
112
+ it("should flatten completely overlapping ranges", function() {
113
+ expect((new TwitterCldr.RangeSet([new TwitterCldr.Range(2, 4), new TwitterCldr.Range(1, 10)])).to_array()).toEqualRangeArray([new TwitterCldr.Range (1, 10)]);
114
+ });
115
+ it("should join ranges that are within 1 of each other", function() {
116
+ expect((new TwitterCldr.RangeSet([new TwitterCldr.Range(11, 15), new TwitterCldr.Range(1, 10)])).to_array()).toEqualRangeArray([new TwitterCldr.Range (1, 15)]);
117
+ });
118
+ });
119
+ describe("#union", function() {
120
+ it("should aggregate the ranges and flatten when necessary", function() {
121
+ set = (new TwitterCldr.RangeSet([new TwitterCldr.Range (3,10)])).union (
122
+ new TwitterCldr.RangeSet ([new TwitterCldr.Range(9,11), new TwitterCldr.Range(1,2), new TwitterCldr.Range(2,3), new TwitterCldr.Range(14,18)])
123
+ );
124
+ expect(set).toEqualRangeSet(new TwitterCldr.RangeSet([new TwitterCldr.Range(1,11), new TwitterCldr.Range(14,18)]));
125
+ });
126
+ it("should aggregate the ranges correctly even if they're given in reverse order", function() {
127
+ set1 = (new TwitterCldr.RangeSet([new TwitterCldr.Range(3,10)])).union (
128
+ new TwitterCldr.RangeSet([new TwitterCldr.Range(1,4)])
129
+ );
130
+ expect(set1).toEqualRangeSet(new TwitterCldr.RangeSet([new TwitterCldr.Range(1,10)]));
131
+ set2 = (new TwitterCldr.RangeSet([new TwitterCldr.Range(1,4)])).union (
132
+ new TwitterCldr.RangeSet([new TwitterCldr.Range(3,10)])
133
+ );
134
+ expect(set2).toEqualRangeSet(new TwitterCldr.RangeSet([new TwitterCldr.Range(1,10)]));
135
+ });
136
+ });
137
+ describe("#intersection", function() {
138
+ it("computes the intersection for leading overlapping ranges", function() {
139
+ set = (new TwitterCldr.RangeSet([new TwitterCldr.Range (3,10)])).intersection (
140
+ new TwitterCldr.RangeSet([new TwitterCldr.Range(1,7)])
141
+ );
142
+ expect(set).toEqualRangeSet(new TwitterCldr.RangeSet([new TwitterCldr.Range(3,7)]));
143
+ });
144
+ it("computes the intersection for trailing overlapping ranges", function() {
145
+ set = (new TwitterCldr.RangeSet([new TwitterCldr.Range (1,10)])).intersection (
146
+ new TwitterCldr.RangeSet([new TwitterCldr.Range(5,15)])
147
+ );
148
+ expect(set).toEqualRangeSet(new TwitterCldr.RangeSet([new TwitterCldr.Range(5,10)]));
149
+ });
150
+ it("computes the intersection for two completely overlapping ranges", function() {
151
+ set = (new TwitterCldr.RangeSet([new TwitterCldr.Range (1,10)])).intersection (
152
+ new TwitterCldr.RangeSet([new TwitterCldr.Range(3,6)])
153
+ );
154
+ expect(set).toEqualRangeSet(new TwitterCldr.RangeSet([new TwitterCldr.Range(3,6)]));
155
+ });
156
+ it("returns an empty intersection if no elements exist in both ranges", function() {
157
+ set = (new TwitterCldr.RangeSet([new TwitterCldr.Range (1,10)])).intersection (
158
+ new TwitterCldr.RangeSet([new TwitterCldr.Range(15,20)])
159
+ );
160
+ expect(set).toEqualRangeSet(new TwitterCldr.RangeSet([]));
161
+ });
162
+ it("returns partial intersections when the range set contains multiple matching ranges", function() {
163
+ set = (new TwitterCldr.RangeSet([new TwitterCldr.Range (1,5), new TwitterCldr.Range(7, 10)])).intersection (
164
+ new TwitterCldr.RangeSet([new TwitterCldr.Range(3,8)])
165
+ );
166
+ expect(set).toEqualRangeSet(new TwitterCldr.RangeSet([new TwitterCldr.Range(3, 5), new TwitterCldr.Range(7, 8)]));
167
+ });
168
+ it("should aggregate the ranges correctly even if they're given in reverse order", function() {
169
+ set1 = (new TwitterCldr.RangeSet([new TwitterCldr.Range(2,3)])).intersection (
170
+ new TwitterCldr.RangeSet([new TwitterCldr.Range(1,4)])
171
+ );
172
+ expect(set1).toEqualRangeSet(new TwitterCldr.RangeSet([new TwitterCldr.Range(2,3)]));
173
+ set2 = (new TwitterCldr.RangeSet([new TwitterCldr.Range(1,4)])).intersection (
174
+ new TwitterCldr.RangeSet([new TwitterCldr.Range(2,3)])
175
+ );
176
+ expect(set2).toEqualRangeSet(new TwitterCldr.RangeSet([new TwitterCldr.Range(2,3)]));
177
+ });
178
+ });
179
+ describe("#subtract", function() {
180
+ it("subtracts the intersection for leading overlapping ranges", function() {
181
+ set = (new TwitterCldr.RangeSet([new TwitterCldr.Range (3,10)])).subtract (
182
+ new TwitterCldr.RangeSet([new TwitterCldr.Range(1,5)])
183
+ );
184
+ expect(set).toEqualRangeSet(new TwitterCldr.RangeSet([new TwitterCldr.Range(6, 10)]));
185
+ });
186
+ it("subtracts the intersection for trailing overlapping ranges", function() {
187
+ set = (new TwitterCldr.RangeSet([new TwitterCldr.Range (1,7)])).subtract (
188
+ new TwitterCldr.RangeSet([new TwitterCldr.Range(3,9)])
189
+ );
190
+ expect(set).toEqualRangeSet(new TwitterCldr.RangeSet([new TwitterCldr.Range(1, 2)]));
191
+ });
192
+ it("subtracts the intersection for completely overlapping ranges (generates two ranges)", function() {
193
+ set = (new TwitterCldr.RangeSet([new TwitterCldr.Range (1,10)])).subtract (
194
+ new TwitterCldr.RangeSet([new TwitterCldr.Range(4,6)])
195
+ );
196
+ expect(set).toEqualRangeSet(new TwitterCldr.RangeSet([new TwitterCldr.Range(1, 3), new TwitterCldr.Range (7, 10)]));
197
+ });
198
+ it("subtracts the intersection when the range set contians multiple matching ranges", function() {
199
+ set = (new TwitterCldr.RangeSet([new TwitterCldr.Range (1,5), new TwitterCldr.Range(7, 10)])).subtract (
200
+ new TwitterCldr.RangeSet([new TwitterCldr.Range(3,8)])
201
+ );
202
+ expect(set).toEqualRangeSet(new TwitterCldr.RangeSet([new TwitterCldr.Range(1, 2), new TwitterCldr.Range (9, 10)]));
203
+ });
204
+ it("does not change object when subtracting an empty set", function() {
205
+ set = (new TwitterCldr.RangeSet([new TwitterCldr.Range (1,5)])).subtract (
206
+ new TwitterCldr.RangeSet([])
207
+ );
208
+ expect(set).toEqualRangeSet(new TwitterCldr.RangeSet([new TwitterCldr.Range(1, 5)]));
209
+ });
210
+ });
211
+ describe("#difference", function() {
212
+ it("returns the symmetric difference (union - intersection) between completely overlapping ranges", function() {
213
+ set = (new TwitterCldr.RangeSet([new TwitterCldr.Range (1,10)])).difference (
214
+ new TwitterCldr.RangeSet([new TwitterCldr.Range(3,8)])
215
+ );
216
+ expect(set).toEqualRangeSet(new TwitterCldr.RangeSet([new TwitterCldr.Range(1, 2), new TwitterCldr.Range (9, 10)]));
217
+ });
218
+ it("returns the symmetric difference between leading overlapping ranges", function() {
219
+ set = (new TwitterCldr.RangeSet([new TwitterCldr.Range (3,10)])).difference (
220
+ new TwitterCldr.RangeSet([new TwitterCldr.Range(1,5)])
221
+ );
222
+ expect(set).toEqualRangeSet(new TwitterCldr.RangeSet([new TwitterCldr.Range(1, 2), new TwitterCldr.Range (6, 10)]));
223
+ });
224
+ it("returns the symmetric difference between trailing overlapping ranges", function() {
225
+ set = (new TwitterCldr.RangeSet([new TwitterCldr.Range (1,5)])).difference (
226
+ new TwitterCldr.RangeSet([new TwitterCldr.Range(3,8)])
227
+ );
228
+ expect(set).toEqualRangeSet(new TwitterCldr.RangeSet([new TwitterCldr.Range(1, 2), new TwitterCldr.Range (6, 8)]));
229
+ });
230
+ });
231
+ describe("#includes", function() {
232
+ var set;
233
+ beforeEach(function() {
234
+ set = new TwitterCldr.RangeSet([new TwitterCldr.Range(1,5), new TwitterCldr.Range(9,16)]);
235
+ });
236
+ it("returns true if the set completely includes the range, false otherwise", function() {
237
+ expect(set.includes(new TwitterCldr.Range(10,15))).toBe(true);
238
+ expect(set.includes(new TwitterCldr.Range(3,8))).not.toBe(true);
239
+ expect(set.includes(new TwitterCldr.Range(8,14))).not.toBe(true);
240
+ });
241
+ it("returns true if the set contains the value, false otherwise", function() {
242
+ expect(set.includes(3)).toBe(true);
243
+ expect(set.includes(10)).toBe(true);
244
+ expect(set.includes(6)).not.toBe(true);
245
+ expect(set.includes(8)).not.toBe(true);
246
+ });
247
+ });
248
+ });
@@ -15,14 +15,16 @@ Gem::Specification.new do |s|
15
15
  s.summary = "Text formatting using data from Unicode's Common Locale Data Repository (CLDR)."
16
16
 
17
17
  s.add_dependency 'json'
18
- s.add_dependency 'railties', '~> 3.1'
18
+ s.add_dependency 'railties', '>= 3.0', '< 5.0'
19
19
 
20
20
  s.add_development_dependency 'rake'
21
- s.add_development_dependency 'mustache', '~> 0.99.4'
22
- s.add_development_dependency 'ruby_parser', '~> 2.3.1'
23
- s.add_development_dependency 'therubyracer', '~> 0.12.0'
24
- s.add_development_dependency 'uglifier', '~> 1.2.4'
25
- s.add_development_dependency 'coffee-script', '~> 2.2.0'
21
+ s.add_development_dependency 'mustache', '~> 0.99.4'
22
+ s.add_development_dependency 'ruby_parser', '~> 2.3.1'
23
+ s.add_development_dependency 'therubyracer', '~> 0.12.0'
24
+ s.add_development_dependency 'uglifier', '~> 1.2.4'
25
+ s.add_development_dependency 'coffee-script', '~> 2.2.0'
26
+ s.add_development_dependency 'cldr-plurals', '~> 1.0.0'
27
+ s.add_development_dependency 'cldr-plurals-runtime-js', '~> 1.0.0'
26
28
 
27
29
  s.require_path = 'lib'
28
30
 
metadata CHANGED
@@ -1,127 +1,161 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: twitter_cldr_js
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.2
4
+ version: 2.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cameron Dutro
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-18 00:00:00.000000000 Z
11
+ date: 2015-02-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: railties
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '3.1'
33
+ version: '3.0'
34
+ - - "<"
35
+ - !ruby/object:Gem::Version
36
+ version: '5.0'
34
37
  type: :runtime
35
38
  prerelease: false
36
39
  version_requirements: !ruby/object:Gem::Requirement
37
40
  requirements:
38
- - - ~>
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: '3.0'
44
+ - - "<"
39
45
  - !ruby/object:Gem::Version
40
- version: '3.1'
46
+ version: '5.0'
41
47
  - !ruby/object:Gem::Dependency
42
48
  name: rake
43
49
  requirement: !ruby/object:Gem::Requirement
44
50
  requirements:
45
- - - '>='
51
+ - - ">="
46
52
  - !ruby/object:Gem::Version
47
53
  version: '0'
48
54
  type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
51
57
  requirements:
52
- - - '>='
58
+ - - ">="
53
59
  - !ruby/object:Gem::Version
54
60
  version: '0'
55
61
  - !ruby/object:Gem::Dependency
56
62
  name: mustache
57
63
  requirement: !ruby/object:Gem::Requirement
58
64
  requirements:
59
- - - ~>
65
+ - - "~>"
60
66
  - !ruby/object:Gem::Version
61
67
  version: 0.99.4
62
68
  type: :development
63
69
  prerelease: false
64
70
  version_requirements: !ruby/object:Gem::Requirement
65
71
  requirements:
66
- - - ~>
72
+ - - "~>"
67
73
  - !ruby/object:Gem::Version
68
74
  version: 0.99.4
69
75
  - !ruby/object:Gem::Dependency
70
76
  name: ruby_parser
71
77
  requirement: !ruby/object:Gem::Requirement
72
78
  requirements:
73
- - - ~>
79
+ - - "~>"
74
80
  - !ruby/object:Gem::Version
75
81
  version: 2.3.1
76
82
  type: :development
77
83
  prerelease: false
78
84
  version_requirements: !ruby/object:Gem::Requirement
79
85
  requirements:
80
- - - ~>
86
+ - - "~>"
81
87
  - !ruby/object:Gem::Version
82
88
  version: 2.3.1
83
89
  - !ruby/object:Gem::Dependency
84
90
  name: therubyracer
85
91
  requirement: !ruby/object:Gem::Requirement
86
92
  requirements:
87
- - - ~>
93
+ - - "~>"
88
94
  - !ruby/object:Gem::Version
89
95
  version: 0.12.0
90
96
  type: :development
91
97
  prerelease: false
92
98
  version_requirements: !ruby/object:Gem::Requirement
93
99
  requirements:
94
- - - ~>
100
+ - - "~>"
95
101
  - !ruby/object:Gem::Version
96
102
  version: 0.12.0
97
103
  - !ruby/object:Gem::Dependency
98
104
  name: uglifier
99
105
  requirement: !ruby/object:Gem::Requirement
100
106
  requirements:
101
- - - ~>
107
+ - - "~>"
102
108
  - !ruby/object:Gem::Version
103
109
  version: 1.2.4
104
110
  type: :development
105
111
  prerelease: false
106
112
  version_requirements: !ruby/object:Gem::Requirement
107
113
  requirements:
108
- - - ~>
114
+ - - "~>"
109
115
  - !ruby/object:Gem::Version
110
116
  version: 1.2.4
111
117
  - !ruby/object:Gem::Dependency
112
118
  name: coffee-script
113
119
  requirement: !ruby/object:Gem::Requirement
114
120
  requirements:
115
- - - ~>
121
+ - - "~>"
116
122
  - !ruby/object:Gem::Version
117
123
  version: 2.2.0
118
124
  type: :development
119
125
  prerelease: false
120
126
  version_requirements: !ruby/object:Gem::Requirement
121
127
  requirements:
122
- - - ~>
128
+ - - "~>"
123
129
  - !ruby/object:Gem::Version
124
130
  version: 2.2.0
131
+ - !ruby/object:Gem::Dependency
132
+ name: cldr-plurals
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: 1.0.0
138
+ type: :development
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: 1.0.0
145
+ - !ruby/object:Gem::Dependency
146
+ name: cldr-plurals-runtime-js
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - "~>"
150
+ - !ruby/object:Gem::Version
151
+ version: 1.0.0
152
+ type: :development
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - "~>"
157
+ - !ruby/object:Gem::Version
158
+ version: 1.0.0
125
159
  description: Provides date, time, number, and list formatting functionality for various
126
160
  Twitter-supported locales in Javascript.
127
161
  email:
@@ -130,6 +164,12 @@ executables: []
130
164
  extensions: []
131
165
  extra_rdoc_files: []
132
166
  files:
167
+ - Gemfile
168
+ - History.txt
169
+ - LICENSE
170
+ - NOTICE
171
+ - README.md
172
+ - Rakefile
133
173
  - lib/assets/javascripts/twitter_cldr/af.js
134
174
  - lib/assets/javascripts/twitter_cldr/ar.js
135
175
  - lib/assets/javascripts/twitter_cldr/be.js
@@ -195,6 +235,7 @@ files:
195
235
  - lib/assets/javascripts/twitter_cldr/vi.js
196
236
  - lib/assets/javascripts/twitter_cldr/zh-cn.js
197
237
  - lib/assets/javascripts/twitter_cldr/zh-tw.js
238
+ - lib/twitter_cldr/js.rb
198
239
  - lib/twitter_cldr/js/compiler.rb
199
240
  - lib/twitter_cldr/js/mustache/bundle.coffee
200
241
  - lib/twitter_cldr/js/mustache/calendars/additional_date_format_selector.coffee
@@ -202,9 +243,21 @@ files:
202
243
  - lib/twitter_cldr/js/mustache/calendars/timespan.coffee
203
244
  - lib/twitter_cldr/js/mustache/numbers/numbers.coffee
204
245
  - lib/twitter_cldr/js/mustache/parsers/number_parser.coffee
246
+ - lib/twitter_cldr/js/mustache/parsers/parser.coffee
247
+ - lib/twitter_cldr/js/mustache/parsers/segmentation_parser.coffee
248
+ - lib/twitter_cldr/js/mustache/parsers/symbol_table.coffee
249
+ - lib/twitter_cldr/js/mustache/parsers/unicode_regex/character_class.coffee
250
+ - lib/twitter_cldr/js/mustache/parsers/unicode_regex/character_range.coffee
251
+ - lib/twitter_cldr/js/mustache/parsers/unicode_regex/character_set.coffee
252
+ - lib/twitter_cldr/js/mustache/parsers/unicode_regex/component.coffee
253
+ - lib/twitter_cldr/js/mustache/parsers/unicode_regex/literal.coffee
254
+ - lib/twitter_cldr/js/mustache/parsers/unicode_regex/unicode_string.coffee
255
+ - lib/twitter_cldr/js/mustache/parsers/unicode_regex_parser.coffee
205
256
  - lib/twitter_cldr/js/mustache/plurals/rules.coffee
206
257
  - lib/twitter_cldr/js/mustache/shared/bidi.coffee
258
+ - lib/twitter_cldr/js/mustache/shared/break_iterator.coffee
207
259
  - lib/twitter_cldr/js/mustache/shared/calendar.coffee
260
+ - lib/twitter_cldr/js/mustache/shared/code_point.coffee
208
261
  - lib/twitter_cldr/js/mustache/shared/currencies.coffee
209
262
  - lib/twitter_cldr/js/mustache/shared/languages.coffee
210
263
  - lib/twitter_cldr/js/mustache/shared/lists.coffee
@@ -212,7 +265,17 @@ files:
212
265
  - lib/twitter_cldr/js/mustache/shared/postal_codes.coffee
213
266
  - lib/twitter_cldr/js/mustache/shared/prerender/bidi_classes.json
214
267
  - lib/twitter_cldr/js/mustache/shared/territories_containment.coffee
268
+ - lib/twitter_cldr/js/mustache/shared/unicode_regex.coffee
269
+ - lib/twitter_cldr/js/mustache/tokenizers/composite_token.coffee
270
+ - lib/twitter_cldr/js/mustache/tokenizers/segmentation_tokenizer.coffee
271
+ - lib/twitter_cldr/js/mustache/tokenizers/token.coffee
272
+ - lib/twitter_cldr/js/mustache/tokenizers/tokenizer.coffee
273
+ - lib/twitter_cldr/js/mustache/tokenizers/unicode_regex/unicode_regex_tokenizer.coffee
215
274
  - lib/twitter_cldr/js/mustache/utilities.coffee
275
+ - lib/twitter_cldr/js/mustache/utils/code_points.coffee
276
+ - lib/twitter_cldr/js/mustache/utils/range.coffee
277
+ - lib/twitter_cldr/js/mustache/utils/range_set.coffee
278
+ - lib/twitter_cldr/js/renderers.rb
216
279
  - lib/twitter_cldr/js/renderers/base.rb
217
280
  - lib/twitter_cldr/js/renderers/bundle.rb
218
281
  - lib/twitter_cldr/js/renderers/calendars/additional_date_format_selector_renderer.rb
@@ -220,26 +283,47 @@ files:
220
283
  - lib/twitter_cldr/js/renderers/calendars/timespan_renderer.rb
221
284
  - lib/twitter_cldr/js/renderers/numbers/numbers_renderer.rb
222
285
  - lib/twitter_cldr/js/renderers/parsers/number_parser.rb
223
- - lib/twitter_cldr/js/renderers/plurals/rules/plural_rules_compiler.rb
286
+ - lib/twitter_cldr/js/renderers/parsers/parser.rb
287
+ - lib/twitter_cldr/js/renderers/parsers/segmentation_parser.rb
288
+ - lib/twitter_cldr/js/renderers/parsers/symbol_table.rb
289
+ - lib/twitter_cldr/js/renderers/parsers/unicode_regex/character_class.rb
290
+ - lib/twitter_cldr/js/renderers/parsers/unicode_regex/character_range.rb
291
+ - lib/twitter_cldr/js/renderers/parsers/unicode_regex/character_set.rb
292
+ - lib/twitter_cldr/js/renderers/parsers/unicode_regex/component.rb
293
+ - lib/twitter_cldr/js/renderers/parsers/unicode_regex/literal.rb
294
+ - lib/twitter_cldr/js/renderers/parsers/unicode_regex/unicode_string.rb
295
+ - lib/twitter_cldr/js/renderers/parsers/unicode_regex_parser.rb
224
296
  - lib/twitter_cldr/js/renderers/plurals/rules/plural_rules_renderer.rb
225
297
  - lib/twitter_cldr/js/renderers/shared/bidi_renderer.rb
298
+ - lib/twitter_cldr/js/renderers/shared/break_iterator_renderer.rb
226
299
  - lib/twitter_cldr/js/renderers/shared/calendar_renderer.rb
300
+ - lib/twitter_cldr/js/renderers/shared/code_point_renderer.rb
227
301
  - lib/twitter_cldr/js/renderers/shared/currencies_renderer.rb
228
302
  - lib/twitter_cldr/js/renderers/shared/languages_renderer.rb
229
303
  - lib/twitter_cldr/js/renderers/shared/list_renderer.rb
230
304
  - lib/twitter_cldr/js/renderers/shared/phone_codes_renderer.rb
231
305
  - lib/twitter_cldr/js/renderers/shared/postal_codes_renderer.rb
232
306
  - lib/twitter_cldr/js/renderers/shared/territories_containment_renderer.rb
233
- - lib/twitter_cldr/js/renderers.rb
307
+ - lib/twitter_cldr/js/renderers/shared/unicode_regex_renderer.rb
308
+ - lib/twitter_cldr/js/renderers/tokenizers/composite_token.rb
309
+ - lib/twitter_cldr/js/renderers/tokenizers/segmentation_tokenizer.rb
310
+ - lib/twitter_cldr/js/renderers/tokenizers/token.rb
311
+ - lib/twitter_cldr/js/renderers/tokenizers/tokenizer.rb
312
+ - lib/twitter_cldr/js/renderers/tokenizers/unicode_regex/unicode_regex_tokenizer.rb
313
+ - lib/twitter_cldr/js/renderers/utils/code_points.rb
314
+ - lib/twitter_cldr/js/renderers/utils/range.rb
315
+ - lib/twitter_cldr/js/renderers/utils/range_set.rb
234
316
  - lib/twitter_cldr/js/tasks/tasks.rake
235
317
  - lib/twitter_cldr/js/tasks/tasks.rb
236
318
  - lib/twitter_cldr/js/version.rb
237
- - lib/twitter_cldr/js.rb
238
319
  - spec/js/calendars/additional_date_format_selector.spec.js
320
+ - spec/js/calendars/datetime.ru.spec.js
239
321
  - spec/js/calendars/datetime.spec.js
322
+ - spec/js/calendars/timespan.ru.spec.js
240
323
  - spec/js/calendars/timespan.spec.js
241
324
  - spec/js/numbers/abbreviated/abbreviated_number.spec.js
242
325
  - spec/js/numbers/abbreviated/long_decimal.ko.spec.js
326
+ - spec/js/numbers/abbreviated/long_decimal.ru.spec.js
243
327
  - spec/js/numbers/abbreviated/long_decimal.spec.js
244
328
  - spec/js/numbers/abbreviated/short_decimal.ko.spec.js
245
329
  - spec/js/numbers/abbreviated/short_decimal.ru.spec.js
@@ -251,24 +335,34 @@ files:
251
335
  - spec/js/numbers/number.spec.js
252
336
  - spec/js/numbers/percent.spec.js
253
337
  - spec/js/parsers/number_parser.spec.js
338
+ - spec/js/parsers/parser.spec.js
339
+ - spec/js/parsers/segmentation_parser.spec.js
340
+ - spec/js/parsers/symbol_table.spec.js
341
+ - spec/js/parsers/unicode_regex/character_class.spec.js
342
+ - spec/js/parsers/unicode_regex/character_range.spec.js
343
+ - spec/js/parsers/unicode_regex/character_set.spec.js
344
+ - spec/js/parsers/unicode_regex/literal.spec.js
345
+ - spec/js/parsers/unicode_regex/unicode_string.spec.js
346
+ - spec/js/parsers/unicode_regex_parser.spec.js
254
347
  - spec/js/plurals/plural_rules.spec.js
255
348
  - spec/js/shared/bidi.spec.js
349
+ - spec/js/shared/break_iterator.spec.js
256
350
  - spec/js/shared/calendar.spec.js
257
351
  - spec/js/shared/classpath_bidi_test.txt
352
+ - spec/js/shared/code_point.spec.js
258
353
  - spec/js/shared/languages.spec.js
259
354
  - spec/js/shared/lists.spec.js
260
355
  - spec/js/shared/phone_codes.spec.js
261
356
  - spec/js/shared/postal_codes.spec.js
262
357
  - spec/js/shared/territories_containment.spec.js
358
+ - spec/js/shared/unicode_regex.spec.js
359
+ - spec/js/tokenizers/composite_token.spec.js
360
+ - spec/js/tokenizers/segmentation_tokenizer.spec.js
361
+ - spec/js/tokenizers/token.spec.js
362
+ - spec/js/tokenizers/unicode_regex/unicode_regex_tokenizer.spec.js
263
363
  - spec/js/utilities.spec.js
264
- - spec/ruby/renderers/plurals/plural_rules_compiler_spec.rb
265
- - spec/ruby/spec_helper.rb
266
- - Gemfile
267
- - History.txt
268
- - LICENSE
269
- - NOTICE
270
- - README.md
271
- - Rakefile
364
+ - spec/js/utils/code_points.spec.js
365
+ - spec/js/utils/range_set.spec.js
272
366
  - twitter_cldr_js.gemspec
273
367
  homepage: http://twitter.com
274
368
  licenses: []
@@ -279,17 +373,17 @@ require_paths:
279
373
  - lib
280
374
  required_ruby_version: !ruby/object:Gem::Requirement
281
375
  requirements:
282
- - - '>='
376
+ - - ">="
283
377
  - !ruby/object:Gem::Version
284
378
  version: '0'
285
379
  required_rubygems_version: !ruby/object:Gem::Requirement
286
380
  requirements:
287
- - - '>='
381
+ - - ">="
288
382
  - !ruby/object:Gem::Version
289
383
  version: '0'
290
384
  requirements: []
291
385
  rubyforge_project:
292
- rubygems_version: 2.0.14
386
+ rubygems_version: 2.2.2
293
387
  signing_key:
294
388
  specification_version: 4
295
389
  summary: Text formatting using data from Unicode's Common Locale Data Repository (CLDR).