stringex 2.0.11 → 2.8.6
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.
- checksums.yaml +6 -14
- data/Gemfile +45 -14
- data/MIT-LICENSE +1 -1
- data/README.md +162 -0
- data/Rakefile +5 -31
- data/VERSION +1 -1
- data/lib/stringex/acts_as_url/adapter/active_record.rb +1 -1
- data/lib/stringex/acts_as_url/adapter/base.rb +37 -5
- data/lib/stringex/acts_as_url/adapter/data_mapper.rb +3 -7
- data/lib/stringex/acts_as_url/adapter/mongoid.rb +2 -2
- data/lib/stringex/acts_as_url.rb +11 -4
- data/lib/stringex/configuration/acts_as_url.rb +15 -10
- data/lib/stringex/configuration/string_extensions.rb +7 -6
- data/lib/stringex/core_ext.rb +10 -0
- data/lib/stringex/localization/backend/i18n.rb +16 -3
- data/lib/stringex/localization/conversion_expressions.rb +64 -60
- data/lib/stringex/localization/converter.rb +8 -4
- data/lib/stringex/localization/default_conversions.rb +56 -55
- data/lib/stringex/localization.rb +2 -2
- data/lib/stringex/string_extensions.rb +34 -6
- data/lib/stringex/unidecoder.rb +26 -22
- data/lib/stringex/unidecoder_data/x00.yml +1 -1
- data/lib/stringex/unidecoder_data/x03.yml +2 -2
- data/lib/stringex/unidecoder_data/x05.yml +1 -1
- data/lib/stringex/unidecoder_data/x07.yml +1 -1
- data/lib/stringex/unidecoder_data/x09.yml +2 -2
- data/lib/stringex/unidecoder_data/x0a.yml +2 -2
- data/lib/stringex/unidecoder_data/x0f.yml +1 -1
- data/lib/stringex/unidecoder_data/x12.yml +1 -1
- data/lib/stringex/unidecoder_data/x13.yml +1 -1
- data/lib/stringex/unidecoder_data/x14.yml +2 -2
- data/lib/stringex/unidecoder_data/x15.yml +1 -1
- data/lib/stringex/unidecoder_data/x16.yml +2 -2
- data/lib/stringex/unidecoder_data/x18.yml +2 -2
- data/lib/stringex/unidecoder_data/x20.yml +4 -4
- data/lib/stringex/unidecoder_data/x21.yml +28 -28
- data/lib/stringex/unidecoder_data/x25.yml +16 -16
- data/lib/stringex/unidecoder_data/x28.yml +1 -1
- data/lib/stringex/unidecoder_data/x30.yml +2 -2
- data/lib/stringex/unidecoder_data/x32.yml +1 -1
- data/lib/stringex/unidecoder_data/xa1.yml +1 -1
- data/lib/stringex/unidecoder_data/xb1.yml +1 -1
- data/lib/stringex/unidecoder_data/xc6.yml +2 -2
- data/lib/stringex/unidecoder_data/xfe.yml +3 -3
- data/lib/stringex/unidecoder_data/xff.yml +5 -5
- data/lib/stringex.rb +1 -2
- data/locales/da.yml +2 -1
- data/locales/de.yml +1 -0
- data/locales/en.yml +1 -0
- data/locales/fr.yml +72 -0
- data/locales/nb.yml +76 -0
- data/locales/nl.yml +69 -0
- data/locales/no.yml +76 -0
- data/locales/pl.yml +88 -0
- data/locales/pt-BR.yml +1 -0
- data/locales/ru.yml +1 -0
- data/locales/sv.yml +76 -0
- data/stringex.gemspec +38 -59
- data/test/unit/acts_as_url/adapter/{active_record.rb → activerecord.rb} +4 -5
- data/test/unit/acts_as_url/adapter/{data_mapper.rb → datamapper.rb} +2 -3
- data/test/unit/acts_as_url/adapter/mongoid.rb +18 -11
- data/test/unit/acts_as_url_configuration_test.rb +2 -2
- data/test/unit/acts_as_url_integration_test.rb +169 -73
- data/test/unit/localization/da_test.rb +3 -2
- data/test/unit/localization/de_test.rb +1 -0
- data/test/unit/localization/default_test.rb +2 -0
- data/test/unit/localization/en_test.rb +1 -0
- data/test/unit/localization/fr_test.rb +118 -0
- data/test/unit/localization/nl_test.rb +118 -0
- data/test/unit/localization/pl_test.rb +118 -0
- data/test/unit/localization/pt_br_test.rb +118 -0
- data/test/unit/localization/ru_test.rb +2 -1
- data/test/unit/localization/sv_test.rb +118 -0
- data/test/unit/localization_test.rb +39 -19
- data/test/unit/string_extensions_test.rb +60 -6
- data/test/unit/unicode_point_suite/basic_greek_test.rb +1 -1
- data/test/unit/unicode_point_suite/basic_latin_test.rb +3 -1
- data/test/unit/unidecoder_test.rb +2 -1
- metadata +47 -94
- data/README.rdoc +0 -131
- data/test/unit/redcloth_to_html_test.rb +0 -37
@@ -0,0 +1,118 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require 'test_helper'
|
4
|
+
require 'i18n'
|
5
|
+
require 'stringex'
|
6
|
+
|
7
|
+
class DutchYAMLLocalizationTest < Test::Unit::TestCase
|
8
|
+
def setup
|
9
|
+
Stringex::Localization.reset!
|
10
|
+
Stringex::Localization.backend = :i18n
|
11
|
+
Stringex::Localization.backend.load_translations :nl
|
12
|
+
Stringex::Localization.locale = :nl
|
13
|
+
end
|
14
|
+
|
15
|
+
{
|
16
|
+
"foo & bar" => "foo en bar",
|
17
|
+
"AT&T" => "AT en T",
|
18
|
+
"99° is normaal" => "99 graden is normaal",
|
19
|
+
"4 ÷ 2 is 2" => "4 gedeeld door 2 is 2",
|
20
|
+
"webcrawler.com" => "webcrawler punt com",
|
21
|
+
"Dus..." => "Dus punt punt punt",
|
22
|
+
"x=1" => "x is 1",
|
23
|
+
"Een potlood #2" => "Een potlood nummer 2",
|
24
|
+
"100%" => "100 procent",
|
25
|
+
"prijs+belasting" => "prijs plus belasting",
|
26
|
+
"Batman/Robin fan fiction" => "Batman slash Robin fan fiction",
|
27
|
+
"bel *69" => "bel ster 69",
|
28
|
+
" i leave whitespace on ends unchanged " => " i leave whitespace on ends unchanged "
|
29
|
+
}.each do |original, converted|
|
30
|
+
define_method "test_character_conversion: '#{original}'" do
|
31
|
+
assert_equal converted, original.convert_miscellaneous_characters
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
{
|
36
|
+
"¤20" => "20 euro",
|
37
|
+
"$100" => "100 dollar",
|
38
|
+
"$19.99" => "19 dollar 99 cent",
|
39
|
+
"£100" => "100 pond",
|
40
|
+
"£19.99" => "19 pond 99 pence",
|
41
|
+
"€100" => "100 euro",
|
42
|
+
"€19.99" => "19 euro 99 cent",
|
43
|
+
"¥1000" => "1000 yen"
|
44
|
+
}.each do |original, converted|
|
45
|
+
define_method "test_currency_conversion: '#{original}'" do
|
46
|
+
assert_equal converted, original.convert_miscellaneous_characters
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
{
|
51
|
+
"Appels & peren" => "Appels en peren",
|
52
|
+
"10¢" => "10 cent",
|
53
|
+
"©2000" => "(c)2000",
|
54
|
+
"98° is acceptabel" => "98 graden is acceptabel",
|
55
|
+
"10÷5" => "10 gedeeld door 5",
|
56
|
+
""tussen aanhalingstekens"" => '"tussen aanhalingstekens"',
|
57
|
+
"wordt vervolgd…" => "wordt vervolgd...",
|
58
|
+
"2000–2004" => "2000-2004",
|
59
|
+
"Ik wil—oh, laat maar" => "Ik wil--oh, laat maar",
|
60
|
+
"½ ons goud" => "half ons goud",
|
61
|
+
"1 en ¼ ons zilver" => "1 en eenvierde ons zilver",
|
62
|
+
"9 en ¾ ons platina" => "9 en drievierde ons platina",
|
63
|
+
"3>2" => "3>2",
|
64
|
+
"2<3" => "2<3",
|
65
|
+
"twee woorden" => "twee woorden",
|
66
|
+
"100£" => "100 pond",
|
67
|
+
"Walmart®" => "Walmart(r)",
|
68
|
+
"'enkele aanhalingstekens'" => "'enkele aanhalingstekens'",
|
69
|
+
"2×4" => "2x4",
|
70
|
+
"Programming™" => "Programming(tm)",
|
71
|
+
"20000¥" => "20000 yen",
|
72
|
+
" i leave whitespace on ends unchanged " => " i leave whitespace on ends unchanged "
|
73
|
+
}.each do |original, converted|
|
74
|
+
define_method "test_html_entity_conversion: '#{original}'" do
|
75
|
+
assert_equal converted, original.convert_miscellaneous_html_entities
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
{
|
80
|
+
"½" => "half",
|
81
|
+
"½" => "half",
|
82
|
+
"½" => "half",
|
83
|
+
"⅓" => "eenderde",
|
84
|
+
"⅓" => "eenderde",
|
85
|
+
"⅔" => "tweederde",
|
86
|
+
"⅔" => "tweederde",
|
87
|
+
"¼" => "eenvierde",
|
88
|
+
"¼" => "eenvierde",
|
89
|
+
"¼" => "eenvierde",
|
90
|
+
"¾" => "drievierde",
|
91
|
+
"¾" => "drievierde",
|
92
|
+
"¾" => "drievierde",
|
93
|
+
"⅕" => "eenvijfde",
|
94
|
+
"⅕" => "eenvijfde",
|
95
|
+
"⅖" => "tweevijfde",
|
96
|
+
"⅖" => "tweevijfde",
|
97
|
+
"⅗" => "drievijfde",
|
98
|
+
"⅗" => "drievijfde",
|
99
|
+
"⅘" => "viervijfde",
|
100
|
+
"⅘" => "viervijfde",
|
101
|
+
"⅙" => "eenzesde",
|
102
|
+
"⅙" => "eenzesde",
|
103
|
+
"⅚" => "vijfzesde",
|
104
|
+
"⅚" => "vijfzesde",
|
105
|
+
"⅛" => "eenachtste",
|
106
|
+
"⅛" => "eenachtste",
|
107
|
+
"⅜" => "drieachtste",
|
108
|
+
"⅜" => "drieachtste",
|
109
|
+
"⅝" => "vijfachtste",
|
110
|
+
"⅝" => "vijfachtste",
|
111
|
+
"⅞" => "zevenachtste",
|
112
|
+
"⅞" => "zevenachtste"
|
113
|
+
}.each do |original, converted|
|
114
|
+
define_method "test_vulgar_fractions_conversion: #{original}" do
|
115
|
+
assert_equal converted, original.convert_vulgar_fractions
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
@@ -0,0 +1,118 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require 'test_helper'
|
4
|
+
require 'i18n'
|
5
|
+
require 'stringex'
|
6
|
+
|
7
|
+
class PolishYAMLLocalizationTest < Test::Unit::TestCase
|
8
|
+
def setup
|
9
|
+
Stringex::Localization.reset!
|
10
|
+
Stringex::Localization.backend = :i18n
|
11
|
+
Stringex::Localization.backend.load_translations :pl
|
12
|
+
Stringex::Localization.locale = :pl
|
13
|
+
end
|
14
|
+
|
15
|
+
{
|
16
|
+
"foo & bar" => "foo i bar",
|
17
|
+
"AT&T" => "AT i T",
|
18
|
+
"99° is normal" => "99 stopni is normal",
|
19
|
+
"4 ÷ 2 is 2" => "4 podzielone przez 2 is 2",
|
20
|
+
"webcrawler.com" => "webcrawler kropka com",
|
21
|
+
"Well..." => "Well kropka kropka kropka",
|
22
|
+
"x=1" => "x równy 1",
|
23
|
+
"a #2 pencil" => "a numer 2 pencil",
|
24
|
+
"100%" => "100 procent",
|
25
|
+
"cost+tax" => "cost plus tax",
|
26
|
+
"batman/robin fan fiction" => "batman ukośnik robin fan fiction",
|
27
|
+
"dial *69" => "dial gwiazdka 69",
|
28
|
+
" i leave whitespace on ends unchanged " => " i leave whitespace on ends unchanged "
|
29
|
+
}.each do |original, converted|
|
30
|
+
define_method "test_character_conversion: '#{original}'" do
|
31
|
+
assert_equal converted, original.convert_miscellaneous_characters
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
{
|
36
|
+
"¤20" => "20 złotych",
|
37
|
+
"$100" => "100 dolarów",
|
38
|
+
"$19.99" => "19 dolarów 99 centów",
|
39
|
+
"£100" => "100 funtów",
|
40
|
+
"£19.99" => "19 funtów 99 pensów",
|
41
|
+
"€100" => "100 euro",
|
42
|
+
"€19.99" => "19 euro 99 centów",
|
43
|
+
"¥1000" => "1000 jenów"
|
44
|
+
}.each do |original, converted|
|
45
|
+
define_method "test_currency_conversion: '#{original}'" do
|
46
|
+
assert_equal converted, original.convert_miscellaneous_characters
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
{
|
51
|
+
"Tea & Sympathy" => "Tea i Sympathy",
|
52
|
+
"10¢" => "10 centów",
|
53
|
+
"©2000" => "(c)2000",
|
54
|
+
"98° is fine" => "98 stopni is fine",
|
55
|
+
"10÷5" => "10 podzielone przez 5",
|
56
|
+
""quoted"" => '"quoted"',
|
57
|
+
"to be continued…" => "to be continued...",
|
58
|
+
"2000–2004" => "2000-2004",
|
59
|
+
"I wish—oh, never mind" => "I wish--oh, never mind",
|
60
|
+
"½ ounce of gold" => "pół ounce of gold",
|
61
|
+
"1 and ¼ ounces of silver" => "1 and jedna czwarta ounces of silver",
|
62
|
+
"9 and ¾ ounces of platinum" => "9 and trzy czwarte ounces of platinum",
|
63
|
+
"3>2" => "3>2",
|
64
|
+
"2<3" => "2<3",
|
65
|
+
"two words" => "two words",
|
66
|
+
"£100" => "funtów 100",
|
67
|
+
"Walmart®" => "Walmart(r)",
|
68
|
+
"'single quoted'" => "'single quoted'",
|
69
|
+
"2×4" => "2x4",
|
70
|
+
"Programming™" => "Programming(TM)",
|
71
|
+
"¥20000" => "jen 20000",
|
72
|
+
" i leave whitespace on ends unchanged " => " i leave whitespace on ends unchanged "
|
73
|
+
}.each do |original, converted|
|
74
|
+
define_method "test_html_entity_conversion: '#{original}'" do
|
75
|
+
assert_equal converted, original.convert_miscellaneous_html_entities
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
{
|
80
|
+
"½" => "pół",
|
81
|
+
"½" => "pół",
|
82
|
+
"½" => "pół",
|
83
|
+
"⅓" => "jedna trzecia",
|
84
|
+
"⅓" => "jedna trzecia",
|
85
|
+
"⅔" => "dwie trzecie",
|
86
|
+
"⅔" => "dwie trzecie",
|
87
|
+
"¼" => "jedna czwarta",
|
88
|
+
"¼" => "jedna czwarta",
|
89
|
+
"¼" => "jedna czwarta",
|
90
|
+
"¾" => "trzy czwarte",
|
91
|
+
"¾" => "trzy czwarte",
|
92
|
+
"¾" => "trzy czwarte",
|
93
|
+
"⅕" => "jedna piąta",
|
94
|
+
"⅕" => "jedna piąta",
|
95
|
+
"⅖" => "dwie piąte",
|
96
|
+
"⅖" => "dwie piąte",
|
97
|
+
"⅗" => "trzy piąte",
|
98
|
+
"⅗" => "trzy piąte",
|
99
|
+
"⅘" => "cztery piąte",
|
100
|
+
"⅘" => "cztery piąte",
|
101
|
+
"⅙" => "jedna szósta",
|
102
|
+
"⅙" => "jedna szósta",
|
103
|
+
"⅚" => "pięć szóstych",
|
104
|
+
"⅚" => "pięć szóstych",
|
105
|
+
"⅛" => "jedna ósma",
|
106
|
+
"⅛" => "jedna ósma",
|
107
|
+
"⅜" => "trzy ósme",
|
108
|
+
"⅜" => "trzy ósme",
|
109
|
+
"⅝" => "pięć ósmych",
|
110
|
+
"⅝" => "pięć ósmych",
|
111
|
+
"⅞" => "siedem ósmych",
|
112
|
+
"⅞" => "siedem ósmych"
|
113
|
+
}.each do |original, converted|
|
114
|
+
define_method "test_vulgar_fractions_conversion: #{original}" do
|
115
|
+
assert_equal converted, original.convert_vulgar_fractions
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
@@ -0,0 +1,118 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require 'test_helper'
|
4
|
+
require 'i18n'
|
5
|
+
require 'stringex'
|
6
|
+
|
7
|
+
class BrazilianYAMLLocalizationTest < Test::Unit::TestCase
|
8
|
+
def setup
|
9
|
+
Stringex::Localization.reset!
|
10
|
+
Stringex::Localization.backend = :i18n
|
11
|
+
Stringex::Localization.backend.load_translations :'pt-BR'
|
12
|
+
Stringex::Localization.locale = :'pt-BR'
|
13
|
+
end
|
14
|
+
|
15
|
+
{
|
16
|
+
"foo & bar" => "foo e bar",
|
17
|
+
"AT&T" => "AT e T",
|
18
|
+
"99° is normal" => "99 graus is normal",
|
19
|
+
"4 ÷ 2 is 2" => "4 dividido por 2 is 2",
|
20
|
+
"webcrawler.com" => "webcrawler ponto com",
|
21
|
+
"Well..." => "Well reticências",
|
22
|
+
"x=1" => "x igual à 1",
|
23
|
+
"a #2 pencil" => "a número 2 pencil",
|
24
|
+
"100%" => "100 porcento",
|
25
|
+
"cost+tax" => "cost mais tax",
|
26
|
+
"batman/robin fan fiction" => "batman barra robin fan fiction",
|
27
|
+
"dial *69" => "dial estrela 69",
|
28
|
+
" i leave whitespace on ends unchanged " => " i leave whitespace on ends unchanged "
|
29
|
+
}.each do |original, converted|
|
30
|
+
define_method "test_character_conversion: '#{original}'" do
|
31
|
+
assert_equal converted, original.convert_miscellaneous_characters
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
{
|
36
|
+
"¤20" => "20 reais",
|
37
|
+
"$100" => "100 dólares",
|
38
|
+
"$19.99" => "19 dólares 99 cents",
|
39
|
+
"£100" => "100 libras",
|
40
|
+
"£19.99" => "19 libras 99 centavos",
|
41
|
+
"€100" => "100 euros",
|
42
|
+
"€19.99" => "19 euros 99 cents",
|
43
|
+
"¥1000" => "1000 yen"
|
44
|
+
}.each do |original, converted|
|
45
|
+
define_method "test_currency_conversion: '#{original}'" do
|
46
|
+
assert_equal converted, original.convert_miscellaneous_characters
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
{
|
51
|
+
"Tea & Sympathy" => "Tea e Sympathy",
|
52
|
+
"10¢" => "10 centavos",
|
53
|
+
"©2000" => "(c)2000",
|
54
|
+
"98° is fine" => "98 graus is fine",
|
55
|
+
"10÷5" => "10 dividido por 5",
|
56
|
+
""quoted"" => '"quoted"',
|
57
|
+
"to be continued…" => "to be continued...",
|
58
|
+
"2000–2004" => "2000-2004",
|
59
|
+
"I wish—oh, never mind" => "I wish--oh, never mind",
|
60
|
+
"½ ounce of gold" => "metade ounce of gold",
|
61
|
+
"1 and ¼ ounces of silver" => "1 and um quarto ounces of silver",
|
62
|
+
"9 and ¾ ounces of platinum" => "9 and três quartos ounces of platinum",
|
63
|
+
"3>2" => "3>2",
|
64
|
+
"2<3" => "2<3",
|
65
|
+
"two words" => "two words",
|
66
|
+
"£100" => "libras 100",
|
67
|
+
"Walmart®" => "Walmart(r)",
|
68
|
+
"'single quoted'" => "'single quoted'",
|
69
|
+
"2×4" => "2x4",
|
70
|
+
"Programming™" => "Programming(tm)",
|
71
|
+
"¥20000" => "yen 20000",
|
72
|
+
" i leave whitespace on ends unchanged " => " i leave whitespace on ends unchanged "
|
73
|
+
}.each do |original, converted|
|
74
|
+
define_method "test_html_entity_conversion: '#{original}'" do
|
75
|
+
assert_equal converted, original.convert_miscellaneous_html_entities
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
{
|
80
|
+
"½" => "metade",
|
81
|
+
"½" => "metade",
|
82
|
+
"½" => "metade",
|
83
|
+
"⅓" => "um terço",
|
84
|
+
"⅓" => "um terço",
|
85
|
+
"⅔" => "dois terços",
|
86
|
+
"⅔" => "dois terços",
|
87
|
+
"¼" => "um quarto",
|
88
|
+
"¼" => "um quarto",
|
89
|
+
"¼" => "um quarto",
|
90
|
+
"¾" => "três quartos",
|
91
|
+
"¾" => "três quartos",
|
92
|
+
"¾" => "três quartos",
|
93
|
+
"⅕" => "um quinto",
|
94
|
+
"⅕" => "um quinto",
|
95
|
+
"⅖" => "dois quintos",
|
96
|
+
"⅖" => "dois quintos",
|
97
|
+
"⅗" => "três quintos",
|
98
|
+
"⅗" => "três quintos",
|
99
|
+
"⅘" => "quatro quintos",
|
100
|
+
"⅘" => "quatro quintos",
|
101
|
+
"⅙" => "um sexto",
|
102
|
+
"⅙" => "um sexto",
|
103
|
+
"⅚" => "cinco sextos",
|
104
|
+
"⅚" => "cinco sextos",
|
105
|
+
"⅛" => "um oitavo",
|
106
|
+
"⅛" => "um oitavo",
|
107
|
+
"⅜" => "três oitavos",
|
108
|
+
"⅜" => "três oitavos",
|
109
|
+
"⅝" => "cinco oitavos",
|
110
|
+
"⅝" => "cinco oitavos",
|
111
|
+
"⅞" => "sete oitavos",
|
112
|
+
"⅞" => "sete oitavos"
|
113
|
+
}.each do |original, converted|
|
114
|
+
define_method "test_vulgar_fractions_conversion: #{original}" do
|
115
|
+
assert_equal converted, original.convert_vulgar_fractions
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
@@ -33,6 +33,7 @@ class RussianYAMLLocalizationTest < Test::Unit::TestCase
|
|
33
33
|
end
|
34
34
|
|
35
35
|
{
|
36
|
+
"¤20" => "20 рубль",
|
36
37
|
"$100" => "100 долларов",
|
37
38
|
"$19.99" => "19 долларов 99 центов",
|
38
39
|
"£100" => "100 фунтов",
|
@@ -122,7 +123,7 @@ class RussianYAMLLocalizationTest < Test::Unit::TestCase
|
|
122
123
|
"4 ÷ 2 is 2" => "4-dielit-na-2-is-2",
|
123
124
|
"webcrawler.com" => "webcrawler-tochka-com",
|
124
125
|
}.each do |original, converted|
|
125
|
-
define_method "
|
126
|
+
define_method "test_character_conversion_to_url: '#{original}'" do
|
126
127
|
assert_equal converted, original.to_url
|
127
128
|
end
|
128
129
|
end
|
@@ -0,0 +1,118 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require 'test_helper'
|
4
|
+
require 'i18n'
|
5
|
+
require 'stringex'
|
6
|
+
|
7
|
+
class SwedishYAMLLocalizationTest < Test::Unit::TestCase
|
8
|
+
def setup
|
9
|
+
Stringex::Localization.reset!
|
10
|
+
Stringex::Localization.backend = :i18n
|
11
|
+
Stringex::Localization.backend.load_translations :sv
|
12
|
+
Stringex::Localization.locale = :sv
|
13
|
+
end
|
14
|
+
|
15
|
+
{
|
16
|
+
"foo & bar" => "foo och bar",
|
17
|
+
"AT&T" => "AT och T",
|
18
|
+
"99° is normal" => "99 grader is normal",
|
19
|
+
"4 ÷ 2 is 2" => "4 delat med 2 is 2",
|
20
|
+
"webcrawler.com" => "webcrawler punkt com",
|
21
|
+
"Well..." => "Well punkt punkt punkt",
|
22
|
+
"x=1" => "x lika med 1",
|
23
|
+
"a #2 pencil" => "a nummer 2 pencil",
|
24
|
+
"100%" => "100 procent",
|
25
|
+
"cost+tax" => "cost plus tax",
|
26
|
+
"batman/robin fan fiction" => "batman slash robin fan fiction",
|
27
|
+
"dial *69" => "dial stjärna 69",
|
28
|
+
" i leave whitespace on ends unchanged " => " i leave whitespace on ends unchanged "
|
29
|
+
}.each do |original, converted|
|
30
|
+
define_method "test_character_conversion: '#{original}'" do
|
31
|
+
assert_equal converted, original.convert_miscellaneous_characters
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
{
|
36
|
+
"¤20" => "20 kronor",
|
37
|
+
"$100" => "100 dollar",
|
38
|
+
"$19.99" => "19 dollar 99 cent",
|
39
|
+
"£100" => "100 pund",
|
40
|
+
"£19.99" => "19 pund 99 pence",
|
41
|
+
"€100" => "100 euro",
|
42
|
+
"€19.99" => "19 euro 99 cent",
|
43
|
+
"¥1000" => "1000 yen"
|
44
|
+
}.each do |original, converted|
|
45
|
+
define_method "test_currency_conversion: '#{original}'" do
|
46
|
+
assert_equal converted, original.convert_miscellaneous_characters
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
{
|
51
|
+
"Tea & Sympathy" => "Tea och Sympathy",
|
52
|
+
"10¢" => "10 cents",
|
53
|
+
"©2000" => "(c)2000",
|
54
|
+
"98° is fine" => "98 grader is fine",
|
55
|
+
"10÷5" => "10 delat med 5",
|
56
|
+
""quoted"" => '"quoted"',
|
57
|
+
"to be continued…" => "to be continued...",
|
58
|
+
"2000–2004" => "2000-2004",
|
59
|
+
"I wish—oh, never mind" => "I wish--oh, never mind",
|
60
|
+
"½ ounce of gold" => "halv ounce of gold",
|
61
|
+
"1 and ¼ ounces of silver" => "1 and en fjärdedel ounces of silver",
|
62
|
+
"9 and ¾ ounces of platinum" => "9 and tre fjärdedelar ounces of platinum",
|
63
|
+
"3>2" => "3>2",
|
64
|
+
"2<3" => "2<3",
|
65
|
+
"two words" => "two words",
|
66
|
+
"£100" => "pund 100",
|
67
|
+
"Walmart®" => "Walmart(r)",
|
68
|
+
"'single quoted'" => "'single quoted'",
|
69
|
+
"2×4" => "2x4",
|
70
|
+
"Programming™" => "Programming(tm)",
|
71
|
+
"¥20000" => "yen 20000",
|
72
|
+
" i leave whitespace on ends unchanged " => " i leave whitespace on ends unchanged "
|
73
|
+
}.each do |original, converted|
|
74
|
+
define_method "test_html_entity_conversion: '#{original}'" do
|
75
|
+
assert_equal converted, original.convert_miscellaneous_html_entities
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
{
|
80
|
+
"½" => "halv",
|
81
|
+
"½" => "halv",
|
82
|
+
"½" => "halv",
|
83
|
+
"⅓" => "en tredjedel",
|
84
|
+
"⅓" => "en tredjedel",
|
85
|
+
"⅔" => "två tredjedelar",
|
86
|
+
"⅔" => "två tredjedelar",
|
87
|
+
"¼" => "en fjärdedel",
|
88
|
+
"¼" => "en fjärdedel",
|
89
|
+
"¼" => "en fjärdedel",
|
90
|
+
"¾" => "tre fjärdedelar",
|
91
|
+
"¾" => "tre fjärdedelar",
|
92
|
+
"¾" => "tre fjärdedelar",
|
93
|
+
"⅕" => "en femtedel",
|
94
|
+
"⅕" => "en femtedel",
|
95
|
+
"⅖" => "två femtedelar",
|
96
|
+
"⅖" => "två femtedelar",
|
97
|
+
"⅗" => "tre femtedelar",
|
98
|
+
"⅗" => "tre femtedelar",
|
99
|
+
"⅘" => "fyra femtedelar",
|
100
|
+
"⅘" => "fyra femtedelar",
|
101
|
+
"⅙" => "en sjättedel",
|
102
|
+
"⅙" => "en sjättedel",
|
103
|
+
"⅚" => "fem sjättedelar",
|
104
|
+
"⅚" => "fem sjättedelar",
|
105
|
+
"⅛" => "en åttondel",
|
106
|
+
"⅛" => "en åttondel",
|
107
|
+
"⅜" => "tre åttondelar",
|
108
|
+
"⅜" => "tre åttondelar",
|
109
|
+
"⅝" => "fem åttondelar",
|
110
|
+
"⅝" => "fem åttondelar",
|
111
|
+
"⅞" => "sju åttondelar",
|
112
|
+
"⅞" => "sju åttondelar"
|
113
|
+
}.each do |original, converted|
|
114
|
+
define_method "test_vulgar_fractions_conversion: #{original}" do
|
115
|
+
assert_equal converted, original.convert_vulgar_fractions
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
@@ -11,7 +11,7 @@ class LocalizationTest < Test::Unit::TestCase
|
|
11
11
|
def test_stores_translations
|
12
12
|
Stringex::Localization.backend = :internal
|
13
13
|
|
14
|
-
data = { :
|
14
|
+
data = { one: "number one", two: "number two" }
|
15
15
|
Stringex::Localization.store_translations :en, :test_store, data
|
16
16
|
|
17
17
|
data.each do |key, value|
|
@@ -34,7 +34,7 @@ class LocalizationTest < Test::Unit::TestCase
|
|
34
34
|
def test_can_translate
|
35
35
|
Stringex::Localization.backend = :internal
|
36
36
|
|
37
|
-
data = { :
|
37
|
+
data = { one: "number one", two: "number two" }
|
38
38
|
Stringex::Localization.store_translations :en, :test_translate, data
|
39
39
|
|
40
40
|
data.each do |key, value|
|
@@ -45,7 +45,7 @@ class LocalizationTest < Test::Unit::TestCase
|
|
45
45
|
def test_can_translate_when_given_string_as_key
|
46
46
|
Stringex::Localization.backend = :internal
|
47
47
|
|
48
|
-
data = { :
|
48
|
+
data = { one: "number one", two: "number two" }
|
49
49
|
Stringex::Localization.store_translations :en, :test_translate, data
|
50
50
|
|
51
51
|
data.each do |key, value|
|
@@ -55,7 +55,7 @@ class LocalizationTest < Test::Unit::TestCase
|
|
55
55
|
|
56
56
|
def test_returns_default_if_none_found
|
57
57
|
Stringex::Localization.backend = :internal
|
58
|
-
assert_equal "my default", Stringex::Localization.translate(:test_default, :nonexistent, :
|
58
|
+
assert_equal "my default", Stringex::Localization.translate(:test_default, :nonexistent, default: "my default")
|
59
59
|
end
|
60
60
|
|
61
61
|
def test_returns_nil_if_no_default
|
@@ -91,7 +91,7 @@ class LocalizationTest < Test::Unit::TestCase
|
|
91
91
|
def test_stores_translations_in_i18n
|
92
92
|
Stringex::Localization.backend = :i18n
|
93
93
|
|
94
|
-
data = { :
|
94
|
+
data = { one: "number one", two: "number two" }
|
95
95
|
Stringex::Localization.store_translations :en, :test_i18n_store, data
|
96
96
|
|
97
97
|
data.each do |key, value|
|
@@ -102,9 +102,9 @@ class LocalizationTest < Test::Unit::TestCase
|
|
102
102
|
def test_can_translate_using_i18n
|
103
103
|
Stringex::Localization.backend = :i18n
|
104
104
|
|
105
|
-
data = { :
|
105
|
+
data = { one: "number one", two: "number two" }
|
106
106
|
|
107
|
-
I18n.backend.store_translations :en, { :
|
107
|
+
I18n.backend.store_translations :en, { stringex: { test_i18n_translation: data } }
|
108
108
|
|
109
109
|
data.each do |key, value|
|
110
110
|
assert_equal value, Stringex::Localization.translate(:test_i18n_translation, key)
|
@@ -117,26 +117,46 @@ class LocalizationTest < Test::Unit::TestCase
|
|
117
117
|
|
118
118
|
assert_equal "Test blank", "Test blank".convert_miscellaneous_html_entities
|
119
119
|
|
120
|
-
Stringex::Localization.store_translations :en, :html_entities, { :
|
120
|
+
Stringex::Localization.store_translations :en, :html_entities, { nbsp: "" }
|
121
121
|
assert_equal "Testblank", "Test blank".convert_miscellaneous_html_entities
|
122
122
|
end
|
123
123
|
end
|
124
124
|
|
125
125
|
def test_assigns_locale_in_i18n_backend
|
126
|
-
I18n.locale
|
127
|
-
|
126
|
+
if other_locale = I18n.available_locales.find{|locale| ![:en, :de].include?(locale)}
|
127
|
+
I18n.locale = :en
|
128
|
+
Stringex::Localization.backend = :i18n
|
129
|
+
|
130
|
+
assert_equal :en, Stringex::Localization.locale
|
128
131
|
|
129
|
-
|
132
|
+
I18n.locale = other_locale
|
133
|
+
assert_equal other_locale, Stringex::Localization.locale
|
130
134
|
|
131
|
-
|
132
|
-
|
135
|
+
Stringex::Localization.locale = :de
|
136
|
+
assert_equal :de, Stringex::Localization.locale
|
137
|
+
assert_equal other_locale, I18n.locale
|
133
138
|
|
134
|
-
|
135
|
-
|
136
|
-
|
139
|
+
Stringex::Localization.locale = nil
|
140
|
+
assert_equal other_locale, Stringex::Localization.locale
|
141
|
+
assert_equal other_locale, I18n.locale
|
142
|
+
else
|
143
|
+
flunk "No I18n locales are available except :de and :en so test will not work"
|
144
|
+
end
|
145
|
+
end
|
137
146
|
|
138
|
-
|
139
|
-
|
140
|
-
|
147
|
+
def test_enforce_available_locales_default
|
148
|
+
return unless I18n.respond_to?(:enforce_available_locales)
|
149
|
+
Stringex::Localization.backend = :i18n
|
150
|
+
assert_not_nil I18n.enforce_available_locales
|
151
|
+
'Some String'.to_url
|
152
|
+
assert_not_nil I18n.enforce_available_locales
|
153
|
+
end
|
154
|
+
|
155
|
+
def test_respects_user_enforce_available_locales_setting
|
156
|
+
return unless I18n.respond_to?(:enforce_available_locales)
|
157
|
+
Stringex::Localization.backend = :i18n
|
158
|
+
I18n.enforce_available_locales = false
|
159
|
+
'Some String'.to_url
|
160
|
+
assert_equal false, I18n.enforce_available_locales
|
141
161
|
end
|
142
162
|
end
|