twitter_cldr_js 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. data/Gemfile +12 -0
  2. data/History.txt +3 -0
  3. data/LICENSE +177 -0
  4. data/NOTICE +120 -0
  5. data/README.md +161 -0
  6. data/Rakefile +66 -0
  7. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_af.js +887 -0
  8. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_ar.js +887 -0
  9. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_ca.js +887 -0
  10. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_cs.js +887 -0
  11. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_da.js +887 -0
  12. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_de.js +887 -0
  13. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_el.js +887 -0
  14. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_en.js +887 -0
  15. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_es.js +887 -0
  16. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_eu.js +887 -0
  17. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_fa.js +887 -0
  18. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_fi.js +887 -0
  19. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_fil.js +887 -0
  20. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_fr.js +887 -0
  21. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_he.js +887 -0
  22. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_hi.js +887 -0
  23. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_hu.js +887 -0
  24. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_id.js +887 -0
  25. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_it.js +887 -0
  26. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_ja.js +887 -0
  27. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_ko.js +887 -0
  28. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_msa.js +887 -0
  29. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_nl.js +887 -0
  30. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_no.js +887 -0
  31. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_pl.js +887 -0
  32. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_pt.js +887 -0
  33. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_ru.js +887 -0
  34. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_sv.js +887 -0
  35. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_th.js +887 -0
  36. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_tr.js +887 -0
  37. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_uk.js +887 -0
  38. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_ur.js +887 -0
  39. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_zh-cn.js +887 -0
  40. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_zh-tw.js +887 -0
  41. data/lib/twitter_cldr/js/compiler.rb +49 -0
  42. data/lib/twitter_cldr/js/mustache/bundle.coffee +15 -0
  43. data/lib/twitter_cldr/js/mustache/calendars/datetime.coffee +240 -0
  44. data/lib/twitter_cldr/js/mustache/calendars/timespan.coffee +52 -0
  45. data/lib/twitter_cldr/js/mustache/numbers/numbers.coffee +179 -0
  46. data/lib/twitter_cldr/js/mustache/plurals/rules.coffee +14 -0
  47. data/lib/twitter_cldr/js/mustache/shared/currencies.coffee +27 -0
  48. data/lib/twitter_cldr/js/renderers/base.rb +18 -0
  49. data/lib/twitter_cldr/js/renderers/bundle.rb +18 -0
  50. data/lib/twitter_cldr/js/renderers/calendars/datetime_renderer.rb +34 -0
  51. data/lib/twitter_cldr/js/renderers/calendars/timespan_renderer.rb +39 -0
  52. data/lib/twitter_cldr/js/renderers/numbers/numbers_renderer.rb +31 -0
  53. data/lib/twitter_cldr/js/renderers/plurals/rules/plural_rules_compiler.rb +93 -0
  54. data/lib/twitter_cldr/js/renderers/plurals/rules/plural_rules_renderer.rb +26 -0
  55. data/lib/twitter_cldr/js/renderers/shared/currencies_renderer.rb +23 -0
  56. data/lib/twitter_cldr/js/renderers.rb +31 -0
  57. data/lib/twitter_cldr/js/tasks/tasks.rake +14 -0
  58. data/lib/twitter_cldr/js/tasks/tasks.rb +88 -0
  59. data/lib/twitter_cldr/js/version.rb +10 -0
  60. data/lib/twitter_cldr/js.rb +31 -0
  61. data/spec/js/calendars/datetime.spec.js +418 -0
  62. data/spec/js/calendars/timespan.spec.js +91 -0
  63. data/spec/js/numbers/currency.spec.js +34 -0
  64. data/spec/js/numbers/decimal.spec.js +24 -0
  65. data/spec/js/numbers/helpers/fraction.spec.js +23 -0
  66. data/spec/js/numbers/helpers/integer.spec.js +100 -0
  67. data/spec/js/numbers/number.spec.js +70 -0
  68. data/spec/js/numbers/percent.spec.js +22 -0
  69. data/spec/js/plurals/plural_rules.spec.js +28 -0
  70. data/spec/ruby/renderers/plurals/plural_rules_compiler_spec.rb +56 -0
  71. data/spec/ruby/spec_helper.rb +11 -0
  72. data/twitter_cldr_js.gemspec +34 -0
  73. metadata +224 -0
@@ -0,0 +1,100 @@
1
+ // Copyright 2012 Twitter, Inc
2
+ // http://www.apache.org/licenses/LICENSE-2.0
3
+
4
+ var TwitterCldr = require('../../../../lib/assets/javascripts/twitter_cldr/twitter_cldr_en.js');
5
+
6
+ describe("IntegerHelper", function() {
7
+ describe("#apply", function() {
8
+ describe("with the ### format", function() {
9
+ beforeEach(function() {
10
+ token = "###";
11
+ });
12
+
13
+ it("test: interpolates a number", function() {
14
+ expect(new TwitterCldr.NumberFormatter.IntegerHelper(token).apply(123)).toEqual('123');
15
+ });
16
+
17
+ it("test: does not include a fraction for a float", function() {
18
+ expect(new TwitterCldr.NumberFormatter.IntegerHelper(token).apply(123.45)).toEqual('123');
19
+ });
20
+
21
+ it("test: does not round when given a float", function() {
22
+ expect(new TwitterCldr.NumberFormatter.IntegerHelper(token).apply(123.55)).toEqual('123');
23
+ });
24
+
25
+ it("test: does not round with :precision => 1", function() {
26
+ expect(new TwitterCldr.NumberFormatter.IntegerHelper(token).apply(123.55, {precision: 1})).toEqual('123');
27
+ });
28
+ });
29
+
30
+ describe("with the #,## format", function() {
31
+ beforeEach(function() {
32
+ token = "#,##";
33
+ });
34
+
35
+ it("test: single group", function() {
36
+ expect(new TwitterCldr.NumberFormatter.IntegerHelper(token).apply(123)).toEqual('1,23');
37
+ });
38
+
39
+ it("test: multiple groups with a primary group size", function() {
40
+ expect(new TwitterCldr.NumberFormatter.IntegerHelper(token).apply(123456789)).toEqual('1,23,45,67,89');
41
+ });
42
+ });
43
+
44
+ describe("with the #,##0.## format", function() {
45
+ beforeEach(function() {
46
+ token = "#,##0.##";
47
+ });
48
+
49
+ it("test: ignores a fraction part given in the format string", function() {
50
+ expect(new TwitterCldr.NumberFormatter.IntegerHelper(token).apply(1234.567)).toEqual('1,234');
51
+ });
52
+
53
+ it("test: cldr example #,##0.## => 1 234", function() {
54
+ expect(new TwitterCldr.NumberFormatter.IntegerHelper(token).apply(1234.567)).toEqual('1,234');
55
+ });
56
+ });
57
+
58
+ describe("miscellaneous formats", function() {
59
+ it("test: interpolates a number on the right side", function () {
60
+ token = "0###";
61
+ expect(new TwitterCldr.NumberFormatter.IntegerHelper(token).apply(123)).toEqual('0123');
62
+ });
63
+
64
+ it("test: strips optional digits", function() {
65
+ token = "######";
66
+ expect(new TwitterCldr.NumberFormatter.IntegerHelper(token).apply(123)).toEqual('123');
67
+ });
68
+
69
+ it("test: multiple groups with a primary and secondary group size", function() {
70
+ token = "#,##,##0";
71
+ expect(new TwitterCldr.NumberFormatter.IntegerHelper(token).apply(123456789)).toEqual('12,34,56,789');
72
+ });
73
+
74
+ it("test: does not group when no digits left of the grouping position", function() {
75
+ token = "#,###";
76
+ expect(new TwitterCldr.NumberFormatter.IntegerHelper(token).apply(123)).toEqual('123');
77
+ });
78
+
79
+ it("test: cldr example #,##0.### => 1 234", function() {
80
+ token = "#,##0.###";
81
+ expect(new TwitterCldr.NumberFormatter.IntegerHelper(token, {group: ' '}).apply(1234.567)).toEqual('1 234');
82
+ });
83
+
84
+ it("test: cldr example ###0.##### => 1234", function() {
85
+ token = "###0.#####";
86
+ expect(new TwitterCldr.NumberFormatter.IntegerHelper(token, {group: ' '}).apply(1234.567)).toEqual('1234');
87
+ });
88
+
89
+ it("test: cldr example ###0.0000# => 1234", function() {
90
+ token = "###0.0000#";
91
+ expect(new TwitterCldr.NumberFormatter.IntegerHelper(token, {group: ' '}).apply(1234.567)).toEqual('1234');
92
+ });
93
+
94
+ it("test: cldr example 00000.0000 => 01234", function() {
95
+ token = "00000.0000";
96
+ expect(new TwitterCldr.NumberFormatter.IntegerHelper(token, {group: ' '}).apply(1234.567)).toEqual('01234');
97
+ });
98
+ });
99
+ });
100
+ });
@@ -0,0 +1,70 @@
1
+ // Copyright 2012 Twitter, Inc
2
+ // http://www.apache.org/licenses/LICENSE-2.0
3
+
4
+ var TwitterCldr = require('../../../lib/assets/javascripts/twitter_cldr/twitter_cldr_en.js');
5
+
6
+ describe("NumberFormatter", function() {
7
+ beforeEach(function() {
8
+ formatter = new TwitterCldr.DecimalFormatter();
9
+ });
10
+
11
+ describe("#precision_from", function() {
12
+ it("should return the correct precision", function() {
13
+ expect(formatter.precision_from(12.123)).toEqual(3);
14
+ });
15
+
16
+ it("should return zero precision if the number isn't a decimal", function() {
17
+ expect(formatter.precision_from(12)).toEqual(0);
18
+ });
19
+ });
20
+
21
+ describe("#round_to", function() {
22
+ it("should round a number to the given precision", function() {
23
+ expect(formatter.round_to(12, 0)).toEqual(12);
24
+ expect(formatter.round_to(12.2, 0)).toEqual(12);
25
+ expect(formatter.round_to(12.5, 0)).toEqual(13);
26
+ expect(formatter.round_to(12.25, 1)).toEqual(12.3);
27
+ expect(formatter.round_to(12.25, 2)).toEqual(12.25);
28
+ expect(formatter.round_to(12.25, 3)).toEqual(12.25);
29
+ });
30
+ });
31
+
32
+ describe("#parse_number", function() {
33
+ it("should round and split the given number by decimal", function() {
34
+ expect(formatter.parse_number(12, {precision: 0})).toEqual(["12"]);
35
+ expect(formatter.parse_number(12.2, {precision: 0})).toEqual(["12"]);
36
+ expect(formatter.parse_number(12.5, {precision: 0})).toEqual(["13"]);
37
+ expect(formatter.parse_number(12.25, {precision: 1})).toEqual(["12", "3"]);
38
+ expect(formatter.parse_number(12.25, {precision: 2})).toEqual(["12", "25"]);
39
+ expect(formatter.parse_number(12.25, {precision: 3})).toEqual(["12", "250"]);
40
+ });
41
+ });
42
+
43
+ describe("#format", function() {
44
+ it("should format a basic integer", function() {
45
+ expect(formatter.format(12)).toEqual("12");
46
+ });
47
+
48
+ describe("should respect the :precision option", function() {
49
+ it("formats with precision of 0", function() {
50
+ expect(formatter.format(12.1, {precision: 0})).toEqual("12");
51
+ });
52
+
53
+ it("rounds and formats with precision of 1", function() {
54
+ expect(formatter.format(12.25, {precision: 1})).toEqual("12.3");
55
+ });
56
+ });
57
+
58
+ it("uses the length of the original decimal as the precision", function() {
59
+ expect(formatter.format(12.8543)).toEqual("12.8543");
60
+ });
61
+
62
+ it("formats an integer larger than 999", function() {
63
+ expect(formatter.format(1337)).toEqual("1,337");
64
+ });
65
+
66
+ it("formats a decimal larger than 999.9", function() {
67
+ expect(formatter.format(1337.37)).toEqual("1,337.37");
68
+ });
69
+ });
70
+ });
@@ -0,0 +1,22 @@
1
+ // Copyright 2012 Twitter, Inc
2
+ // http://www.apache.org/licenses/LICENSE-2.0
3
+
4
+ var TwitterCldr = require('../../../lib/assets/javascripts/twitter_cldr/twitter_cldr_en.js');
5
+
6
+ describe("PercentFormatter", function() {
7
+ beforeEach(function() {
8
+ formatter = new TwitterCldr.PercentFormatter();
9
+ });
10
+
11
+ it("should format the number correctly", function() {
12
+ expect(formatter.format(12)).toEqual("12%");
13
+ });
14
+
15
+ it("should format negative numbers correctly", function() {
16
+ expect(formatter.format(-12)).toEqual("-12%");
17
+ });
18
+
19
+ it("should respect the precision option", function() {
20
+ expect(formatter.format(-12, {precision: 3})).toEqual("-12.000%");
21
+ });
22
+ });
@@ -0,0 +1,28 @@
1
+ // Copyright 2012 Twitter, Inc
2
+ // http://www.apache.org/licenses/LICENSE-2.0
3
+
4
+ var TwitterCldr = require('../../../lib/assets/javascripts/twitter_cldr/twitter_cldr_en.js');
5
+
6
+ describe("PluralRules", function() {
7
+ describe("#all", function() {
8
+ it("returns an array of all English plural rules", function() {
9
+ expect(TwitterCldr.PluralRules.all()).toEqual(["one", "other"]);
10
+ });
11
+ });
12
+
13
+ describe("#rule_for", function() {
14
+ it("returns 'one' for the number 1", function() {
15
+ expect(TwitterCldr.PluralRules.rule_for(1)).toEqual("one");
16
+ });
17
+
18
+ it("returns 'other' for any number greater than 1", function() {
19
+ for (var i = 2; i < 10; i ++) {
20
+ expect(TwitterCldr.PluralRules.rule_for(i)).toEqual("other");
21
+ }
22
+ });
23
+
24
+ it("returns 'other' for the number 0", function() {
25
+ expect(TwitterCldr.PluralRules.rule_for(0)).toEqual("other");
26
+ });
27
+ });
28
+ });
@@ -0,0 +1,56 @@
1
+ # encoding: UTF-8
2
+
3
+ # Copyright 2012 Twitter, Inc
4
+ # http://www.apache.org/licenses/LICENSE-2.0
5
+
6
+ require File.join(File.dirname(File.dirname(File.dirname(__FILE__))), "spec_helper")
7
+
8
+ include TwitterCldr::Js::Renderers::PluralRules
9
+
10
+ describe PluralRulesCompiler do
11
+ describe "#rule_to_js" do
12
+ it "handles a single plural rule" do
13
+ PluralRulesCompiler.rule_to_js(":other").should == 'function(n) { return "other" }'
14
+ end
15
+
16
+ it "handles a conditional plural rule (eg. English)" do
17
+ PluralRulesCompiler.rule_to_js("n == 1 ? :one : :other").should == 'function(n) { return (function() { if (n == 1) { return "one" } else { return "other" } })(); }'
18
+ end
19
+
20
+ it "handles an include? call" do
21
+ PluralRulesCompiler.rule_to_js("[2, 3, 4].include?(n)").should == "function(n) { return [2, 3, 4].indexOf(n) >= 0 }"
22
+ end
23
+
24
+ it "handles a between? call" do
25
+ PluralRulesCompiler.rule_to_js("n.between?(0, 2)").should == "function(n) { return ((n >= 0) && (n <= 2)) }"
26
+ end
27
+
28
+ it "handles the modulus operator" do
29
+ PluralRulesCompiler.rule_to_js("n % 10").should == "function(n) { return n % 10 }"
30
+ end
31
+
32
+ it "handles < and > operators" do
33
+ PluralRulesCompiler.rule_to_js("n > 10").should == "function(n) { return n > 10 }"
34
+ PluralRulesCompiler.rule_to_js("n < 10").should == "function(n) { return n < 10 }"
35
+ end
36
+
37
+ it "handles 'and', 'or', and 'not' operators" do
38
+ PluralRulesCompiler.rule_to_js("n and n").should == "function(n) { return n && n }"
39
+ PluralRulesCompiler.rule_to_js("n or n").should == "function(n) { return n || n }"
40
+ PluralRulesCompiler.rule_to_js("not n").should == "function(n) { return !(n) }"
41
+ end
42
+
43
+ it "compounds include? and the modulus operator" do
44
+ PluralRulesCompiler.rule_to_js("[2, 3, 4].include?(n % 10)").should == "function(n) { return [2, 3, 4].indexOf(n % 10) >= 0 }"
45
+ end
46
+
47
+ it "compounds include?, modulus, and an if statement" do
48
+ PluralRulesCompiler.rule_to_js("[2, 3, 4].include?(n % 10) ? :one : :other").should == 'function(n) { return (function() { if ([2, 3, 4].indexOf(n % 10) >= 0) { return "one" } else { return "other" } })(); }'
49
+ end
50
+
51
+ it "chains two if statements (eg. Polish)" do
52
+ ruby_string = "n == 1 ? :one : [2, 3, 4].include?(n % 10) && ![12, 13, 14].include?(n % 100) && ![22, 23, 24].include?(n % 100) ? :few : :other"
53
+ PluralRulesCompiler.rule_to_js(ruby_string).should == 'function(n) { return (function() { if (n == 1) { return "one" } else { return (function() { if ([2, 3, 4].indexOf(n % 10) >= 0 && !([12, 13, 14].indexOf(n % 100) >= 0) && !([22, 23, 24].indexOf(n % 100) >= 0)) { return "few" } else { return "other" } })(); } })(); }'
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,11 @@
1
+ # encoding: UTF-8
2
+
3
+ # Copyright 2012 Twitter, Inc
4
+ # http://www.apache.org/licenses/LICENSE-2.0
5
+
6
+ require 'rspec'
7
+ require 'twitter_cldr/js'
8
+
9
+ RSpec.configure do |config|
10
+ config.mock_with :rr
11
+ end
@@ -0,0 +1,34 @@
1
+ $:.unshift File.join(File.dirname(__FILE__), 'lib')
2
+ require 'twitter_cldr/js/version'
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "twitter_cldr_js"
6
+ s.version = ::TwitterCldr::Js::VERSION
7
+ s.authors = ["Cameron Dutro"]
8
+ s.email = ["cdutro@twitter.com"]
9
+ s.homepage = "http://twitter.com"
10
+
11
+ s.description = s.summary = "Provides date, time, number, and list formatting functionality for various Twitter-supported locales in Javascript."
12
+
13
+ s.platform = Gem::Platform::RUBY
14
+ s.has_rdoc = true
15
+ s.summary = "Text formatting using data from Unicode's Common Locale Data Repository (CLDR)."
16
+
17
+ s.add_dependency 'json', '>= 1.1.9'
18
+ s.add_dependency 'twitter_cldr', '~> 1.8.0'
19
+ s.add_dependency 'railties', '~> 3.1'
20
+ s.add_dependency 'rake', '~> 0.9.2.2'
21
+ s.add_dependency 'mustache', '~> 0.99.4'
22
+ s.add_dependency 'ruby_parser', '~> 2.3.1'
23
+ s.add_dependency 'therubyracer', '~> 0.9.10'
24
+ s.add_dependency 'uglifier', '~> 1.2.4'
25
+ s.add_dependency 'coffee-script', '~> 2.2.0'
26
+
27
+ s.require_path = 'lib'
28
+
29
+ gem_files = Dir["{lib,spec}/**/*", "Gemfile", "History.txt", "LICENSE", "NOTICE", "README.md", "Rakefile", "twitter_cldr_js.gemspec"]
30
+ excluded_files = %w[]
31
+ versioned_files = `git ls-files`.split("\n")
32
+
33
+ s.files = (gem_files - excluded_files) & versioned_files
34
+ end
metadata ADDED
@@ -0,0 +1,224 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: twitter_cldr_js
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 1.0.0
6
+ platform: ruby
7
+ authors:
8
+ - Cameron Dutro
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2012-08-23 00:00:00 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: json
17
+ prerelease: false
18
+ requirement: &id001 !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 1.1.9
24
+ type: :runtime
25
+ version_requirements: *id001
26
+ - !ruby/object:Gem::Dependency
27
+ name: twitter_cldr
28
+ prerelease: false
29
+ requirement: &id002 !ruby/object:Gem::Requirement
30
+ none: false
31
+ requirements:
32
+ - - ~>
33
+ - !ruby/object:Gem::Version
34
+ version: 1.8.0
35
+ type: :runtime
36
+ version_requirements: *id002
37
+ - !ruby/object:Gem::Dependency
38
+ name: railties
39
+ prerelease: false
40
+ requirement: &id003 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: "3.1"
46
+ type: :runtime
47
+ version_requirements: *id003
48
+ - !ruby/object:Gem::Dependency
49
+ name: rake
50
+ prerelease: false
51
+ requirement: &id004 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ~>
55
+ - !ruby/object:Gem::Version
56
+ version: 0.9.2.2
57
+ type: :runtime
58
+ version_requirements: *id004
59
+ - !ruby/object:Gem::Dependency
60
+ name: mustache
61
+ prerelease: false
62
+ requirement: &id005 !ruby/object:Gem::Requirement
63
+ none: false
64
+ requirements:
65
+ - - ~>
66
+ - !ruby/object:Gem::Version
67
+ version: 0.99.4
68
+ type: :runtime
69
+ version_requirements: *id005
70
+ - !ruby/object:Gem::Dependency
71
+ name: ruby_parser
72
+ prerelease: false
73
+ requirement: &id006 !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ~>
77
+ - !ruby/object:Gem::Version
78
+ version: 2.3.1
79
+ type: :runtime
80
+ version_requirements: *id006
81
+ - !ruby/object:Gem::Dependency
82
+ name: therubyracer
83
+ prerelease: false
84
+ requirement: &id007 !ruby/object:Gem::Requirement
85
+ none: false
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: 0.9.10
90
+ type: :runtime
91
+ version_requirements: *id007
92
+ - !ruby/object:Gem::Dependency
93
+ name: uglifier
94
+ prerelease: false
95
+ requirement: &id008 !ruby/object:Gem::Requirement
96
+ none: false
97
+ requirements:
98
+ - - ~>
99
+ - !ruby/object:Gem::Version
100
+ version: 1.2.4
101
+ type: :runtime
102
+ version_requirements: *id008
103
+ - !ruby/object:Gem::Dependency
104
+ name: coffee-script
105
+ prerelease: false
106
+ requirement: &id009 !ruby/object:Gem::Requirement
107
+ none: false
108
+ requirements:
109
+ - - ~>
110
+ - !ruby/object:Gem::Version
111
+ version: 2.2.0
112
+ type: :runtime
113
+ version_requirements: *id009
114
+ description: Provides date, time, number, and list formatting functionality for various Twitter-supported locales in Javascript.
115
+ email:
116
+ - cdutro@twitter.com
117
+ executables: []
118
+
119
+ extensions: []
120
+
121
+ extra_rdoc_files: []
122
+
123
+ files:
124
+ - lib/assets/javascripts/twitter_cldr/twitter_cldr_af.js
125
+ - lib/assets/javascripts/twitter_cldr/twitter_cldr_ar.js
126
+ - lib/assets/javascripts/twitter_cldr/twitter_cldr_ca.js
127
+ - lib/assets/javascripts/twitter_cldr/twitter_cldr_cs.js
128
+ - lib/assets/javascripts/twitter_cldr/twitter_cldr_da.js
129
+ - lib/assets/javascripts/twitter_cldr/twitter_cldr_de.js
130
+ - lib/assets/javascripts/twitter_cldr/twitter_cldr_el.js
131
+ - lib/assets/javascripts/twitter_cldr/twitter_cldr_en.js
132
+ - lib/assets/javascripts/twitter_cldr/twitter_cldr_es.js
133
+ - lib/assets/javascripts/twitter_cldr/twitter_cldr_eu.js
134
+ - lib/assets/javascripts/twitter_cldr/twitter_cldr_fa.js
135
+ - lib/assets/javascripts/twitter_cldr/twitter_cldr_fi.js
136
+ - lib/assets/javascripts/twitter_cldr/twitter_cldr_fil.js
137
+ - lib/assets/javascripts/twitter_cldr/twitter_cldr_fr.js
138
+ - lib/assets/javascripts/twitter_cldr/twitter_cldr_he.js
139
+ - lib/assets/javascripts/twitter_cldr/twitter_cldr_hi.js
140
+ - lib/assets/javascripts/twitter_cldr/twitter_cldr_hu.js
141
+ - lib/assets/javascripts/twitter_cldr/twitter_cldr_id.js
142
+ - lib/assets/javascripts/twitter_cldr/twitter_cldr_it.js
143
+ - lib/assets/javascripts/twitter_cldr/twitter_cldr_ja.js
144
+ - lib/assets/javascripts/twitter_cldr/twitter_cldr_ko.js
145
+ - lib/assets/javascripts/twitter_cldr/twitter_cldr_msa.js
146
+ - lib/assets/javascripts/twitter_cldr/twitter_cldr_nl.js
147
+ - lib/assets/javascripts/twitter_cldr/twitter_cldr_no.js
148
+ - lib/assets/javascripts/twitter_cldr/twitter_cldr_pl.js
149
+ - lib/assets/javascripts/twitter_cldr/twitter_cldr_pt.js
150
+ - lib/assets/javascripts/twitter_cldr/twitter_cldr_ru.js
151
+ - lib/assets/javascripts/twitter_cldr/twitter_cldr_sv.js
152
+ - lib/assets/javascripts/twitter_cldr/twitter_cldr_th.js
153
+ - lib/assets/javascripts/twitter_cldr/twitter_cldr_tr.js
154
+ - lib/assets/javascripts/twitter_cldr/twitter_cldr_uk.js
155
+ - lib/assets/javascripts/twitter_cldr/twitter_cldr_ur.js
156
+ - lib/assets/javascripts/twitter_cldr/twitter_cldr_zh-cn.js
157
+ - lib/assets/javascripts/twitter_cldr/twitter_cldr_zh-tw.js
158
+ - lib/twitter_cldr/js/compiler.rb
159
+ - lib/twitter_cldr/js/mustache/bundle.coffee
160
+ - lib/twitter_cldr/js/mustache/calendars/datetime.coffee
161
+ - lib/twitter_cldr/js/mustache/calendars/timespan.coffee
162
+ - lib/twitter_cldr/js/mustache/numbers/numbers.coffee
163
+ - lib/twitter_cldr/js/mustache/plurals/rules.coffee
164
+ - lib/twitter_cldr/js/mustache/shared/currencies.coffee
165
+ - lib/twitter_cldr/js/renderers/base.rb
166
+ - lib/twitter_cldr/js/renderers/bundle.rb
167
+ - lib/twitter_cldr/js/renderers/calendars/datetime_renderer.rb
168
+ - lib/twitter_cldr/js/renderers/calendars/timespan_renderer.rb
169
+ - lib/twitter_cldr/js/renderers/numbers/numbers_renderer.rb
170
+ - lib/twitter_cldr/js/renderers/plurals/rules/plural_rules_compiler.rb
171
+ - lib/twitter_cldr/js/renderers/plurals/rules/plural_rules_renderer.rb
172
+ - lib/twitter_cldr/js/renderers/shared/currencies_renderer.rb
173
+ - lib/twitter_cldr/js/renderers.rb
174
+ - lib/twitter_cldr/js/tasks/tasks.rake
175
+ - lib/twitter_cldr/js/tasks/tasks.rb
176
+ - lib/twitter_cldr/js/version.rb
177
+ - lib/twitter_cldr/js.rb
178
+ - spec/js/calendars/datetime.spec.js
179
+ - spec/js/calendars/timespan.spec.js
180
+ - spec/js/numbers/currency.spec.js
181
+ - spec/js/numbers/decimal.spec.js
182
+ - spec/js/numbers/helpers/fraction.spec.js
183
+ - spec/js/numbers/helpers/integer.spec.js
184
+ - spec/js/numbers/number.spec.js
185
+ - spec/js/numbers/percent.spec.js
186
+ - spec/js/plurals/plural_rules.spec.js
187
+ - spec/ruby/renderers/plurals/plural_rules_compiler_spec.rb
188
+ - spec/ruby/spec_helper.rb
189
+ - Gemfile
190
+ - History.txt
191
+ - LICENSE
192
+ - NOTICE
193
+ - README.md
194
+ - Rakefile
195
+ - twitter_cldr_js.gemspec
196
+ homepage: http://twitter.com
197
+ licenses: []
198
+
199
+ post_install_message:
200
+ rdoc_options: []
201
+
202
+ require_paths:
203
+ - lib
204
+ required_ruby_version: !ruby/object:Gem::Requirement
205
+ none: false
206
+ requirements:
207
+ - - ">="
208
+ - !ruby/object:Gem::Version
209
+ version: "0"
210
+ required_rubygems_version: !ruby/object:Gem::Requirement
211
+ none: false
212
+ requirements:
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ version: "0"
216
+ requirements: []
217
+
218
+ rubyforge_project:
219
+ rubygems_version: 1.8.17
220
+ signing_key:
221
+ specification_version: 3
222
+ summary: Text formatting using data from Unicode's Common Locale Data Repository (CLDR).
223
+ test_files: []
224
+