icu 0.9.1 → 0.10.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +14 -0
- data/.travis.yml +11 -0
- data/Gemfile +3 -0
- data/LICENSE +20 -0
- data/README.md +69 -0
- data/Rakefile +38 -0
- data/benchmark/normalization.rb +106 -0
- data/benchmark/normalization_phrases.txt +1031 -0
- data/benchmark/normalization_result.txt +45 -0
- data/benchmark/normalization_wikip.txt +2838 -0
- data/ext/icu/extconf.rb +242 -0
- data/ext/icu/icu.c +18 -0
- data/ext/icu/icu.h +78 -0
- data/ext/icu/icu_charset_detector.c +192 -0
- data/ext/icu/icu_collator.c +138 -0
- data/ext/icu/icu_locale.c +852 -0
- data/ext/icu/icu_normalizer.c +122 -0
- data/ext/icu/icu_number_format.c +0 -0
- data/ext/icu/icu_spoof_checker.c +194 -0
- data/ext/icu/icu_transliterator.c +159 -0
- data/ext/icu/internal_encoding.c +38 -0
- data/ext/icu/internal_ustring.c +304 -0
- data/ext/icu/internal_utils.c +50 -0
- data/ext/icu/rb_errors.c +14 -0
- data/icu.gemspec +22 -0
- data/lib/icu.rb +6 -18
- data/lib/icu/charset_detector.rb +5 -0
- data/lib/icu/collator.rb +24 -0
- data/lib/icu/locale.rb +19 -0
- data/lib/icu/transliterator.rb +8 -0
- data/lib/icu/version.rb +3 -0
- data/spec/charset_detector_spec.rb +47 -0
- data/spec/collator_spec.rb +73 -0
- data/spec/locale_spec.rb +312 -0
- data/spec/normalizer_spec.rb +35 -0
- data/spec/spec_helper.rb +8 -0
- data/spec/spoof_checker_spec.rb +56 -0
- data/spec/transliterator_spec.rb +41 -0
- metadata +132 -55
- data/COPYING +0 -674
- data/COPYING.LESSER +0 -165
- data/README +0 -81
- data/ext/extconf.rb +0 -31
- data/ext/icu.c +0 -128
- data/ext/icu.h +0 -34
- data/ext/icu_locale.c +0 -330
- data/ext/icu_locale_country.c +0 -99
- data/ext/icu_locale_language.c +0 -99
- data/ext/icu_numeric.c +0 -161
- data/ext/icu_time.c +0 -391
- data/test/test_locale.rb +0 -73
- data/test/test_numeric.rb +0 -78
- data/test/test_time.rb +0 -75
data/test/test_locale.rb
DELETED
@@ -1,73 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib', 'icu'))
|
3
|
-
|
4
|
-
class TestLocale < Test::Unit::TestCase
|
5
|
-
def setup
|
6
|
-
ICU::Locale.default = 'en_US'
|
7
|
-
end
|
8
|
-
|
9
|
-
def test_default
|
10
|
-
ICU::Locale.default = 'es_ES'
|
11
|
-
assert_equal('es_ES', ICU::Locale.default.locale_id)
|
12
|
-
ICU::Locale.default = ICU::Locale.get('en_US')
|
13
|
-
assert_equal('en_US', ICU::Locale.default.locale_id)
|
14
|
-
assert_raise(ArgumentError) { ICU::Locale.default = 'worg locale' }
|
15
|
-
end
|
16
|
-
|
17
|
-
def test_get
|
18
|
-
assert_equal(ICU::Locale.get('es_ES').object_id, ICU::Locale.get('es_ES').object_id)
|
19
|
-
assert_equal(ICU::Locale.get('en_US').object_id, ICU::Locale.get('en_US').object_id)
|
20
|
-
assert_raise(ArgumentError) { ICU::Locale.get('worg locale') }
|
21
|
-
end
|
22
|
-
|
23
|
-
def test_parent
|
24
|
-
locale = ICU::Locale.get('es_ES').parent
|
25
|
-
assert_equal('es', locale.locale_id)
|
26
|
-
locale = locale.parent
|
27
|
-
assert_equal(nil, locale)
|
28
|
-
|
29
|
-
assert_equal(nil, ICU::Locale.get('es_ES').parent.parent)
|
30
|
-
end
|
31
|
-
|
32
|
-
def test_country
|
33
|
-
country = ICU::Locale.get('es_ES').country
|
34
|
-
assert_equal(ICU::Locale::Country.get('ES').object_id, country.object_id)
|
35
|
-
assert_equal('ES', country.code)
|
36
|
-
assert_equal('Spain', country.name)
|
37
|
-
assert_equal('España', country.name('es_ES'))
|
38
|
-
assert_equal('España', country.name(ICU::Locale.get('es_ES')))
|
39
|
-
assert_nil(ICU::Locale.get('es').country)
|
40
|
-
assert_raise(ArgumentError) { ICU::Locale::Country.get('worg country') }
|
41
|
-
end
|
42
|
-
|
43
|
-
def test_language
|
44
|
-
language = ICU::Locale.get('es_ES').language
|
45
|
-
assert_equal(ICU::Locale::Language.get('es').object_id, language.object_id)
|
46
|
-
assert_equal('es', language.code)
|
47
|
-
assert_equal('Spanish', language.name)
|
48
|
-
assert_equal('español', language.name('es_ES'))
|
49
|
-
assert_equal('español', language.name(ICU::Locale.get('es_ES')))
|
50
|
-
assert_nil(ICU::Locale.get('_ES').language)
|
51
|
-
assert_raise(ArgumentError) { ICU::Locale::Language.get('worg language') }
|
52
|
-
end
|
53
|
-
|
54
|
-
def test_available
|
55
|
-
assert_equal(["Afrikaans", "af"], ICU::Locale.available[0])
|
56
|
-
assert_equal(["afrikaans (Afrique du Sud)", "af_ZA"], ICU::Locale.available(:locale => 'fr_FR')[1])
|
57
|
-
assert_equal(["albanski (Albanija)", "sq_AL"], ICU::Locale.available(:locale => ICU::Locale.get('hr_HR'))[3])
|
58
|
-
|
59
|
-
assert_equal([["English (United States)", "en_US"], ["Spanish (Spain)", "es_ES"]], ICU::Locale.available(:allowed => ['es_ES', 'en_US']))
|
60
|
-
assert_equal(["English", "en"], ICU::Locale.available(:languages => ['es', 'en'])[0])
|
61
|
-
assert_equal(["Basque (Spain)", "eu_ES"], ICU::Locale.available(:countries => ['ES', 'US'])[0])
|
62
|
-
assert_equal(
|
63
|
-
[["Spanish (Spain)", "es_ES"], ["Spanish (United States)", "es_US"]],
|
64
|
-
ICU::Locale.available(:allowed => ['es_ES', 'ca_ES', 'en_US', 'en_GB', 'es_US'], :languages => ['es'], :countries => ['ES', 'US'])
|
65
|
-
)
|
66
|
-
|
67
|
-
assert_equal(["Albanian", [["Albanian", "sq"], ["Albanian (Albania)", "sq_AL"]]], ICU::Locale.available(:group => true)[1])
|
68
|
-
end
|
69
|
-
|
70
|
-
def test_determine
|
71
|
-
assert_equal('es_ES', ICU::Locale.determine_from_http('es_ES,us_US'))
|
72
|
-
end
|
73
|
-
end
|
data/test/test_numeric.rb
DELETED
@@ -1,78 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib', 'icu'))
|
3
|
-
|
4
|
-
class TestNumeric < Test::Unit::TestCase
|
5
|
-
def setup
|
6
|
-
ICU::Locale.default = 'en_US'
|
7
|
-
end
|
8
|
-
|
9
|
-
def test_types
|
10
|
-
assert_raise(TypeError) { 13243412.233.localize(false) }
|
11
|
-
assert_raise(TypeError) { 13243412.233.localize(:currency, false) }
|
12
|
-
assert_raise(TypeError) { 13243412.233.localize(:currency, :locale => false) }
|
13
|
-
assert_raise(TypeError) { 13243412.233.localize(:currency, :round_increment => false) }
|
14
|
-
assert_raise(TypeError) { 13243412.233.localize(:currency, :round_mode => false) }
|
15
|
-
assert_raise(TypeError) { 13243412.233.localize(:currency, :precision => false) }
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_limits
|
19
|
-
# Fixnum
|
20
|
-
assert_equal('1,073,741,823', 1073741823.localize)
|
21
|
-
assert_equal('-1,073,741,823', -1073741823.localize)
|
22
|
-
# Bignum
|
23
|
-
assert_equal('9,223,372,036,854,775,807', 9223372036854775807.localize)
|
24
|
-
assert_equal('-9,223,372,036,854,775,807', -9223372036854775807.localize)
|
25
|
-
assert_raise(RangeError) { 9223372036854775808.localize }
|
26
|
-
# Float
|
27
|
-
assert_equal('13,243,412.233', 13243412.233.localize)
|
28
|
-
assert_equal('-13,243,412.233', -13243412.233.localize)
|
29
|
-
end
|
30
|
-
|
31
|
-
def test_decimal
|
32
|
-
assert_equal('3,490,835,234.656', 3490835234.6556.localize)
|
33
|
-
assert_equal('3.490.835.234,656', 3490835234.6556.localize(:decimal, :locale => 'es_ES'))
|
34
|
-
assert_equal('٣٤٩٠٨٣٥٢٣٤٫٦٥٦', 3490835234.6556.localize(:decimal, :locale => ICU::Locale.get('ar_SY')))
|
35
|
-
end
|
36
|
-
|
37
|
-
def test_currency
|
38
|
-
assert_equal('$1,073,741,823.32', 1073741823.323.localize(:currency))
|
39
|
-
assert_equal('($1,073,741,823.32)', -1073741823.323.localize(:currency))
|
40
|
-
assert_equal('€1,073,741,823.32', 1073741823.323.localize(:currency, :currency => 'EUR'))
|
41
|
-
|
42
|
-
assert_equal('1.073.741.823,32 €', 1073741823.323.localize(:currency, :locale => 'es_ES'))
|
43
|
-
assert_equal('-1.073.741.823,32 €', -1073741823.323.localize(:currency, :locale => 'es_ES'))
|
44
|
-
assert_equal('1.073.741.823,32 US$', 1073741823.323.localize(:currency, :locale => 'es_ES', :currency => 'USD'))
|
45
|
-
|
46
|
-
assert_equal('1,073,741,823.32 ₪', 1073741823.323.localize(:currency, :locale => 'he_IL'))
|
47
|
-
assert_equal('-1,073,741,823.32 ₪', -1073741823.323.localize(:currency, :locale => 'he_IL'))
|
48
|
-
assert_equal('1,073,741,823.32 $', 1073741823.323.localize(:currency, :locale => 'he_IL', :currency => 'USD'))
|
49
|
-
end
|
50
|
-
|
51
|
-
def test_rounding
|
52
|
-
assert_equal('$2,314.30', 2314.3289.localize(:currency, :round_increment => 0.1))
|
53
|
-
assert_equal('$2,314.40', 2314.3289.localize(:currency, :round_increment => 0.1, :round_mode => :ceil))
|
54
|
-
end
|
55
|
-
|
56
|
-
def test_precision
|
57
|
-
assert_equal('$2,314.3290', 2314.32896.localize(:currency, :precision => 4))
|
58
|
-
assert_equal('$1,234.674', 1234.67433.localize(:currency, :precision => 3))
|
59
|
-
end
|
60
|
-
|
61
|
-
def test_percent
|
62
|
-
assert_equal('12%', 0.12.localize(:percent))
|
63
|
-
assert_equal('1,200%', 12.localize(:percent))
|
64
|
-
end
|
65
|
-
|
66
|
-
def test_scientific
|
67
|
-
assert_equal('4.3289E4', 43289.localize(:scientific))
|
68
|
-
assert_equal('1.1239087212E0', 1.1239087212.localize(:scientific))
|
69
|
-
end
|
70
|
-
|
71
|
-
def test_spellout
|
72
|
-
assert_equal('forty-three thousand two hundred and eighty-nine', 43289.localize(:spellout))
|
73
|
-
assert_equal('one point one two three nine', 1.1239.localize(:spellout))
|
74
|
-
|
75
|
-
assert_equal('cuarenta y tres mil doscientos ochenta y nueve', 43289.localize(:spellout, :locale => 'es_ES'))
|
76
|
-
assert_equal('uno punto uno dos tres nueve', 1.1239.localize(:spellout, :locale => 'es_ES'))
|
77
|
-
end
|
78
|
-
end
|
data/test/test_time.rb
DELETED
@@ -1,75 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib', 'icu'))
|
3
|
-
|
4
|
-
class TestTime < Test::Unit::TestCase
|
5
|
-
def setup
|
6
|
-
ICU::Locale.default = 'en_US'
|
7
|
-
end
|
8
|
-
|
9
|
-
def test_localize_zone
|
10
|
-
Time.default_zone = 'Europe/Paris'
|
11
|
-
assert_equal('10:31:34 AM CEDT', Time.utc(2006, 5, 8, 8, 31, 34).localize(:date => false, :time => :full))
|
12
|
-
assert_equal('8:31:34 AM GMT+00:00', Time.utc(2006, 5, 8, 8, 31, 34).localize(:date => false, :time => :full, :zone => 'GMT'))
|
13
|
-
assert_equal('3:31:34 AM GMT-05:00', Time.utc(2006, 5, 8, 8, 31, 34).localize(:date => false, :time => :full, :zone => 'GMT-05:00'))
|
14
|
-
end
|
15
|
-
|
16
|
-
def test_localize_style
|
17
|
-
assert_equal('Monday, May 8, 2006 8:31:34 AM', Time.utc(2006, 5, 8, 8, 31, 34).localize(:date => :full))
|
18
|
-
assert_equal('May 8, 2006 8:31:34 AM', Time.utc(2006, 5, 8, 8, 31, 34).localize(:date => :long))
|
19
|
-
assert_equal('May 8, 2006 8:31:34 AM', Time.utc(2006, 5, 8, 8, 31, 34).localize(:date => :medium))
|
20
|
-
assert_equal('5/8/06 8:31:34 AM', Time.utc(2006, 5, 8, 8, 31, 34).localize(:date => :short))
|
21
|
-
assert_equal('8:31:34 AM', Time.utc(2006, 5, 8, 8, 31, 34).localize(:date => false))
|
22
|
-
assert_equal('May 8, 2006 8:31:34 AM GMT+00:00', Time.utc(2006, 5, 8, 8, 31, 34).localize(:time => :full))
|
23
|
-
assert_equal('May 8, 2006 8:31:34 AM GMT+00:00', Time.utc(2006, 5, 8, 8, 31, 34).localize(:time => :long))
|
24
|
-
assert_equal('May 8, 2006 8:31:34 AM', Time.utc(2006, 5, 8, 8, 31, 34).localize(:time => :medium))
|
25
|
-
assert_equal('May 8, 2006 8:31 AM', Time.utc(2006, 5, 8, 8, 31, 34).localize(:time => :short))
|
26
|
-
assert_equal('May 8, 2006', Time.utc(2006, 5, 8, 8, 31, 34).localize(:time => false))
|
27
|
-
end
|
28
|
-
|
29
|
-
def test_localize_locale
|
30
|
-
assert_equal('lunes 8 de mayo de 2006 8:31:34', Time.utc(2006, 5, 8, 8, 31, 34).localize(:date => :full, :locale => 'es_ES'))
|
31
|
-
assert_equal('08:31:34 8 מאי 2006', Time.utc(2006, 5, 8, 8, 31, 34).localize(:date => :long, :locale => ICU::Locale.get('he_IL')))
|
32
|
-
assert_equal('2006. svibnja 08 08:31:34', Time.utc(2006, 5, 8, 8, 31, 34).localize(:date => :long, :locale => 'hr_HR'))
|
33
|
-
end
|
34
|
-
|
35
|
-
def test_zones
|
36
|
-
assert_instance_of(Array, Time.zones)
|
37
|
-
assert_equal(["Africa/Ceuta", "Atlantic/Canary", "Europe/Madrid"], Time.zones(:countries => ['ES']))
|
38
|
-
assert_equal(
|
39
|
-
[["Central European Standard Time", "ECT"], ["Central European Standard Time", "Europe/Paris"], ["Greenwich Mean Time", "Europe/London"], ["Greenwich Mean Time", "Europe/Belfast"], ["Greenwich Mean Time", "GB"], ["Greenwich Mean Time", "GB-Eire"]],
|
40
|
-
Time.zones(:countries => ['FR', 'GB'], :type => :standard)
|
41
|
-
)
|
42
|
-
assert_equal([["Spain", ["Africa/Ceuta", "Atlantic/Canary", "Europe/Madrid"]]], Time.zones(:countries => ['ES'], :group => true))
|
43
|
-
end
|
44
|
-
|
45
|
-
def test_default_zone
|
46
|
-
Time.default_zone = 'Europe/Paris'
|
47
|
-
assert_equal('Europe/Paris', Time.default_zone)
|
48
|
-
assert_equal('10:31:34 AM CEDT', Time.utc(2006, 5, 8, 8, 31, 34).localize(:date => false, :time => :full))
|
49
|
-
Time.default_zone = 'UTC'
|
50
|
-
assert_equal('UTC', Time.default_zone)
|
51
|
-
assert_equal('8:31:34 AM GMT+00:00', Time.utc(2006, 5, 8, 8, 31, 34).localize(:date => false, :time => :full))
|
52
|
-
Time.default_zone = 'worg time zone'
|
53
|
-
assert_equal('GMT', Time.default_zone)
|
54
|
-
assert_equal('8:31:34 AM GMT+00:00', Time.utc(2006, 5, 8, 8, 31, 34).localize(:date => false, :time => :full))
|
55
|
-
end
|
56
|
-
|
57
|
-
def test_pattern
|
58
|
-
assert_equal("EEEE d' de 'MMMM' de 'yyyy H:mm:ss", Time.pattern(:date => :full, :locale => 'es_ES'))
|
59
|
-
assert_equal('yyyy. MMMM dd HH:mm:ss', Time.pattern(:date => :long, :locale => ICU::Locale.get('hr_HR')))
|
60
|
-
assert_equal('HH:mm:ss dd/MM/yyyy', Time.pattern(:date => :medium, :locale => 'he_IL'))
|
61
|
-
assert_equal('M/d/yy h:mm:ss a', Time.pattern(:date => :short))
|
62
|
-
assert_equal('h:mm:ss a', Time.pattern(:date => false))
|
63
|
-
assert_equal("dd/MM/yyyy HH'H'mm''ss\" z", Time.pattern(:time => :full, :locale => 'es_ES'))
|
64
|
-
assert_equal('yyyy.MM.dd HH:mm:ss z', Time.pattern(:time => :long, :locale => 'hr_HR'))
|
65
|
-
assert_equal('HH:mm:ss dd/MM/yyyy', Time.pattern(:time => :medium, :locale => 'he_IL'))
|
66
|
-
assert_equal('MMM d, yyyy h:mm a', Time.pattern(:time => :short))
|
67
|
-
assert_equal('MMM d, yyyy', Time.pattern(:time => false))
|
68
|
-
end
|
69
|
-
|
70
|
-
def test_week_start
|
71
|
-
assert_equal(1, Time.week_start)
|
72
|
-
assert_equal(2, Time.week_start(:locale => 'hr_HR'))
|
73
|
-
assert_equal(2, Time.week_start(:locale => ICU::Locale.get('hr_HR')))
|
74
|
-
end
|
75
|
-
end
|