babosa 1.0.4 → 2.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 (56) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/Changelog.md +12 -0
  5. data/README.md +81 -119
  6. data/Rakefile +9 -8
  7. data/lib/babosa.rb +2 -4
  8. data/lib/babosa/identifier.rb +104 -129
  9. data/lib/babosa/transliterator/base.rb +57 -56
  10. data/lib/babosa/transliterator/bulgarian.rb +3 -2
  11. data/lib/babosa/transliterator/cyrillic.rb +5 -5
  12. data/lib/babosa/transliterator/danish.rb +3 -3
  13. data/lib/babosa/transliterator/german.rb +3 -2
  14. data/lib/babosa/transliterator/greek.rb +4 -3
  15. data/lib/babosa/transliterator/hindi.rb +3 -2
  16. data/lib/babosa/transliterator/latin.rb +5 -5
  17. data/lib/babosa/transliterator/macedonian.rb +3 -2
  18. data/lib/babosa/transliterator/norwegian.rb +3 -3
  19. data/lib/babosa/transliterator/romanian.rb +3 -2
  20. data/lib/babosa/transliterator/russian.rb +3 -2
  21. data/lib/babosa/transliterator/serbian.rb +29 -27
  22. data/lib/babosa/transliterator/spanish.rb +2 -2
  23. data/lib/babosa/transliterator/swedish.rb +3 -3
  24. data/lib/babosa/transliterator/turkish.rb +8 -8
  25. data/lib/babosa/transliterator/ukrainian.rb +5 -4
  26. data/lib/babosa/transliterator/vietnamese.rb +4 -3
  27. data/lib/babosa/version.rb +3 -1
  28. data/spec/{babosa_spec.rb → identifier_spec.rb} +13 -14
  29. data/spec/spec_helper.rb +6 -6
  30. data/spec/transliterators/base_spec.rb +5 -6
  31. data/spec/transliterators/bulgarian_spec.rb +4 -5
  32. data/spec/transliterators/danish_spec.rb +5 -6
  33. data/spec/transliterators/german_spec.rb +4 -5
  34. data/spec/transliterators/greek_spec.rb +7 -7
  35. data/spec/transliterators/hindi_spec.rb +7 -7
  36. data/spec/transliterators/latin_spec.rb +3 -4
  37. data/spec/transliterators/macedonian_spec.rb +3 -4
  38. data/spec/transliterators/norwegian_spec.rb +4 -4
  39. data/spec/transliterators/polish_spec.rb +3 -5
  40. data/spec/transliterators/romanian_spec.rb +5 -6
  41. data/spec/transliterators/russian_spec.rb +3 -4
  42. data/spec/transliterators/serbian_spec.rb +6 -7
  43. data/spec/transliterators/spanish_spec.rb +4 -5
  44. data/spec/transliterators/swedish_spec.rb +7 -7
  45. data/spec/transliterators/turkish_spec.rb +24 -24
  46. data/spec/transliterators/ukrainian_spec.rb +74 -75
  47. data/spec/transliterators/vietnamese_spec.rb +10 -10
  48. metadata +44 -38
  49. metadata.gz.sig +2 -0
  50. data/lib/babosa/utf8/active_support_proxy.rb +0 -38
  51. data/lib/babosa/utf8/dumb_proxy.rb +0 -49
  52. data/lib/babosa/utf8/java_proxy.rb +0 -22
  53. data/lib/babosa/utf8/mappings.rb +0 -193
  54. data/lib/babosa/utf8/proxy.rb +0 -125
  55. data/lib/babosa/utf8/unicode_proxy.rb +0 -23
  56. data/spec/utf8_proxy_spec.rb +0 -52
@@ -1,18 +1,18 @@
1
- # encoding: utf-8
2
- require File.expand_path("../../spec_helper", __FILE__)
1
+ # frozen_string_literal: true
3
2
 
4
- describe Babosa::Transliterator::Swedish do
3
+ require "spec_helper"
5
4
 
5
+ describe Babosa::Transliterator::Swedish do
6
6
  let(:t) { described_class.instance }
7
7
  it_behaves_like "a latin transliterator"
8
8
 
9
9
  it "should transliterate various characters" do
10
10
  examples = {
11
11
  "Räksmörgås" => "Raeksmoergaas",
12
- "Öre" => "Oere",
13
- "Åre" => "Aare",
14
- "Älskar" => "Aelskar"
12
+ "Öre" => "Oere",
13
+ "Åre" => "Aare",
14
+ "Älskar" => "Aelskar"
15
15
  }
16
- examples.each {|k, v| expect(t.transliterate(k)).to eql(v)}
16
+ examples.each { |k, v| expect(t.transliterate(k)).to eql(v) }
17
17
  end
18
18
  end
@@ -1,24 +1,24 @@
1
- # encoding: utf-8
2
- require File.expand_path("../../spec_helper", __FILE__)
3
-
4
- describe Babosa::Transliterator::Turkish do
5
-
6
- let(:t) { described_class.instance }
7
- it_behaves_like "a latin transliterator"
8
-
9
- it "should transliterate various characters" do
10
- examples = {
11
- "Nâzım" => "Nazim",
12
- "sükûnet" => "sukunet",
13
- "millîleştirmek" => "millilestirmek",
14
- "mêmur" => "memur",
15
- "lôkman" => "lokman",
16
- "yoğurt" => "yogurt",
17
- "şair" => "sair",
18
- "İzmir" => "Izmir",
19
- "yığın" => "yigin",
20
- "çarşı" => "carsi"
21
- }
22
- examples.each {|k, v| expect(t.transliterate(k)).to eql(v)}
23
- end
24
- end
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+
5
+ describe Babosa::Transliterator::Turkish do
6
+ let(:t) { described_class.instance }
7
+ it_behaves_like "a latin transliterator"
8
+
9
+ it "should transliterate various characters" do
10
+ examples = {
11
+ "Nâzım" => "Nazim",
12
+ "sükûnet" => "sukunet",
13
+ "millîleştirmek" => "millilestirmek",
14
+ "mêmur" => "memur",
15
+ "lôkman" => "lokman",
16
+ "yoğurt" => "yogurt",
17
+ "şair" => "sair",
18
+ "İzmir" => "Izmir",
19
+ "yığın" => "yigin",
20
+ "çarşı" => "carsi"
21
+ }
22
+ examples.each { |k, v| expect(t.transliterate(k)).to eql(v) }
23
+ end
24
+ end
@@ -1,88 +1,87 @@
1
- # encoding: utf-8
2
- require File.expand_path("../../spec_helper", __FILE__)
1
+ # frozen_string_literal: true
3
2
 
4
- describe Babosa::Transliterator::Ukrainian do
3
+ require "spec_helper"
5
4
 
5
+ describe Babosa::Transliterator::Ukrainian do
6
6
  let(:t) { described_class.instance }
7
7
  it_behaves_like "a cyrillic transliterator"
8
8
 
9
9
  it "should transliterate Cyrillic characters" do
10
10
  examples = {
11
- "Алушта" => "Alushta",
12
- "Андрій" => "Andrii",
13
- "Борщагівка" => "Borshchahivka",
14
- "Борисенко" => "Borysenko",
15
- "Вінниця" => "Vinnytsia",
16
- "Володимир" => "Volodymyr",
17
- "Гадяч" => "Hadiach",
18
- "Богдан" => "Bohdan",
19
- "Ґалаґан" => "Galagan",
20
- "Ґорґани" => "Gorgany",
21
- "Донецьк" => "Donetsk",
22
- "Дмитро" => "Dmytro",
23
- "Рівне" => "Rivne",
24
- "Олег" => "Oleh",
25
- "Есмань" => "Esman",
26
- "Єнакієве" => "Yenakiieve",
27
- "Гаєвич" => "Haievych",
28
- "Короп'є" => "Koropie",
29
- "Житомир" => "Zhytomyr",
30
- "Жанна" => "Zhanna",
31
- "Жежелів" => "Zhezheliv",
32
- "Закарпаття" => "Zakarpattia",
33
- "Казимирчук" => "Kazymyrchuk",
34
- "Медвин" => "Medvyn",
35
- "Михайленко" => "Mykhailenko",
36
- "Іванків" => "Ivankiv",
37
- "Іващенко" => "Ivashchenko",
38
- "Їжакевич" => "Yizhakevych",
39
- "Кадиївка" => "Kadyivka",
40
- "Мар'їне" => "Marine",
41
- "Йосипівка" => "Yosypivka",
42
- "Стрий" => "Stryi",
43
- "Олексій" => "Oleksii",
44
- "Київ" => "Kyiv",
45
- "Коваленко" => "Kovalenko",
46
- "Лебедин" => "Lebedyn",
47
- "Леонід" => "Leonid",
48
- "Миколаїв" => "Mykolaiv",
49
- "Маринич" => "Marynych",
50
- "Ніжин" => "Nizhyn",
51
- "Наталія" => "Nataliia",
52
- "Одеса" => "Odesa",
53
- "Онищенко" => "Onyshchenko",
54
- "Полтава" => "Poltava",
55
- "Петро" => "Petro",
11
+ "Алушта" => "Alushta",
12
+ "Андрій" => "Andrii",
13
+ "Борщагівка" => "Borshchahivka",
14
+ "Борисенко" => "Borysenko",
15
+ "Вінниця" => "Vinnytsia",
16
+ "Володимир" => "Volodymyr",
17
+ "Гадяч" => "Hadiach",
18
+ "Богдан" => "Bohdan",
19
+ "Ґалаґан" => "Galagan",
20
+ "Ґорґани" => "Gorgany",
21
+ "Донецьк" => "Donetsk",
22
+ "Дмитро" => "Dmytro",
23
+ "Рівне" => "Rivne",
24
+ "Олег" => "Oleh",
25
+ "Есмань" => "Esman",
26
+ "Єнакієве" => "Yenakiieve",
27
+ "Гаєвич" => "Haievych",
28
+ "Короп'є" => "Koropie",
29
+ "Житомир" => "Zhytomyr",
30
+ "Жанна" => "Zhanna",
31
+ "Жежелів" => "Zhezheliv",
32
+ "Закарпаття" => "Zakarpattia",
33
+ "Казимирчук" => "Kazymyrchuk",
34
+ "Медвин" => "Medvyn",
35
+ "Михайленко" => "Mykhailenko",
36
+ "Іванків" => "Ivankiv",
37
+ "Іващенко" => "Ivashchenko",
38
+ "Їжакевич" => "Yizhakevych",
39
+ "Кадиївка" => "Kadyivka",
40
+ "Мар'їне" => "Marine",
41
+ "Йосипівка" => "Yosypivka",
42
+ "Стрий" => "Stryi",
43
+ "Олексій" => "Oleksii",
44
+ "Київ" => "Kyiv",
45
+ "Коваленко" => "Kovalenko",
46
+ "Лебедин" => "Lebedyn",
47
+ "Леонід" => "Leonid",
48
+ "Миколаїв" => "Mykolaiv",
49
+ "Маринич" => "Marynych",
50
+ "Ніжин" => "Nizhyn",
51
+ "Наталія" => "Nataliia",
52
+ "Одеса" => "Odesa",
53
+ "Онищенко" => "Onyshchenko",
54
+ "Полтава" => "Poltava",
55
+ "Петро" => "Petro",
56
56
  "Решетилівка" => "Reshetylivka",
57
57
  "Рибчинський" => "Rybchynskyi",
58
- "Суми" => "Sumy",
59
- "Соломія" => "Solomiia",
60
- "Тернопіль" => "Ternopil",
61
- "Троць" => "Trots",
62
- "Ужгород" => "Uzhhorod",
63
- "Уляна" => "Uliana",
64
- "Фастів" => "Fastiv",
65
- "Філіпчук" => "Filipchuk",
66
- "Харків" => "Kharkiv",
67
- "Христина" => "Khrystyna",
58
+ "Суми" => "Sumy",
59
+ "Соломія" => "Solomiia",
60
+ "Тернопіль" => "Ternopil",
61
+ "Троць" => "Trots",
62
+ "Ужгород" => "Uzhhorod",
63
+ "Уляна" => "Uliana",
64
+ "Фастів" => "Fastiv",
65
+ "Філіпчук" => "Filipchuk",
66
+ "Харків" => "Kharkiv",
67
+ "Христина" => "Khrystyna",
68
68
  "Біла Церква" => "Bila Tserkva",
69
- "Стеценко" => "Stetsenko",
70
- "Чернівці" => "Chernivtsi",
71
- "Шевченко" => "Shevchenko",
72
- "Шостка" => "Shostka",
73
- "Кишеньки" => "Kyshenky",
74
- "Щербухи" => "Shcherbukhy",
75
- "Гоща" => "Hoshcha",
76
- "Гаращенко" => "Harashchenko",
77
- "Юрій" => "Yurii",
78
- "Корюківка" => "Koriukivka",
79
- "Яготин" => "Yahotyn",
80
- "Ярошенко" => "Yaroshenko",
81
- "Костянтин" => "Kostiantyn",
82
- "Знам'янка" => "Znamianka",
83
- "Феодосія" => "Feodosiia"
69
+ "Стеценко" => "Stetsenko",
70
+ "Чернівці" => "Chernivtsi",
71
+ "Шевченко" => "Shevchenko",
72
+ "Шостка" => "Shostka",
73
+ "Кишеньки" => "Kyshenky",
74
+ "Щербухи" => "Shcherbukhy",
75
+ "Гоща" => "Hoshcha",
76
+ "Гаращенко" => "Harashchenko",
77
+ "Юрій" => "Yurii",
78
+ "Корюківка" => "Koriukivka",
79
+ "Яготин" => "Yahotyn",
80
+ "Ярошенко" => "Yaroshenko",
81
+ "Костянтин" => "Kostiantyn",
82
+ "Знам'янка" => "Znamianka",
83
+ "Феодосія" => "Feodosiia"
84
84
  }
85
85
  examples.each { |k, v| expect(t.transliterate(k)).to eql(v) }
86
86
  end
87
-
88
- end
87
+ end
@@ -1,18 +1,18 @@
1
- # encoding: utf-8
2
- require File.expand_path("../../spec_helper", __FILE__)
1
+ # frozen_string_literal: true
3
2
 
4
- describe Babosa::Transliterator::Vietnamese do
3
+ require "spec_helper"
5
4
 
5
+ describe Babosa::Transliterator::Vietnamese do
6
6
  let(:t) { described_class.instance }
7
7
  it_behaves_like "a latin transliterator"
8
8
 
9
9
  it "should transliterate various characters" do
10
- examples = {
11
- "làm" => "lam",
12
- "đàn ông" => "dan ong",
13
- "thật" => "that",
14
- "khổ" => "kho"
15
- }
16
- examples.each {|k, v| expect(t.transliterate(k)).to eql(v)}
10
+ examples = {
11
+ "làm" => "lam",
12
+ "đàn ông" => "dan ong",
13
+ "thật" => "that",
14
+ "khổ" => "kho"
15
+ }
16
+ examples.each { |k, v| expect(t.transliterate(k)).to eql(v) }
17
17
  end
18
18
  end
metadata CHANGED
@@ -1,29 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: babosa
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Norman Clarke
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
- cert_chain: []
11
- date: 2020-10-06 00:00:00.000000000 Z
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIEMjCCApqgAwIBAgIBATANBgkqhkiG9w0BAQsFADAjMSEwHwYDVQQDDBhnZW1z
14
+ L0RDPXAvREM9YXJuZHQvREM9aW8wHhcNMjEwNjIzMDkyNzU2WhcNMjIwNjIzMDky
15
+ NzU2WjAjMSEwHwYDVQQDDBhnZW1zL0RDPXAvREM9YXJuZHQvREM9aW8wggGiMA0G
16
+ CSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQD0CYnD37uLlJ3Urla2EnnUQ8S6s16k
17
+ AGMpAzpmARo8YwSqtYMJVGyBzUeI7y93Fk9ncswhIFSH/hnh/Ouat/ki9flHlZ+w
18
+ anv0M+9v3wCLyZSC5BQIWpoduFM/fuvLoDUJDWxL50RjwMS0qo2x2LvfQdHN8gn3
19
+ JdSIV5WLJKIvlmIl9S3pw0JO5KRUGn1PcBO7C0S0SlbhVjRHtlao1ycWUULsX109
20
+ hCh39MPGtnZpdCcxheh0TH/UA/jV0/du9/rQdoidkNHkaC24pPfBJ3nS+rAbWaHP
21
+ WmP+0rjfk/XnGBu/HZpKvlnwQjP3QdK4UMtWl8zewqFMNcIiBRALQugnL/SfrP/4
22
+ CSlha9LwkiE6ByeY4WGnNjNqpi5J3IzjEkZRAxG7u9gCB3FzTaBTyXZYI6jplYNw
23
+ TcCJIBHuoPaa+m9brpjb3Uv94nfM97ZP+OmpGYCCAMq4TT7OOV+t8wJc0w8bb0FO
24
+ ROhmVNTxrBaNcl6MkZn88EMRCsGgoWklOG0CAwEAAaNxMG8wCQYDVR0TBAIwADAL
25
+ BgNVHQ8EBAMCBLAwHQYDVR0OBBYEFGu7pbmeILyHnBmannuaNRfdN8MsMBoGA1Ud
26
+ EQQTMBGBD2dlbXNAcC5hcm5kdC5pbzAaBgNVHRIEEzARgQ9nZW1zQHAuYXJuZHQu
27
+ aW8wDQYJKoZIhvcNAQELBQADggGBANlxc4uAnkPC3zbztG7uZfBfn4HSuvv655Pa
28
+ UaYZ6hNETFrqg78mGs3PkFe2Ru7cVWwckbmH46aq50QoNnx4ClxT03vr03n76Jg1
29
+ 8WWHkf0+rcINFlbtIFcmcFrois5Ow3n7pH+xstDtzoWcbh41WwuZStNhrIYsnjAK
30
+ /ovz8D5JlboxceOpVLB/0NiqNEWltK+EMQHmX25Sqf/r5o5rAL9zwEKPFp1Y5X+z
31
+ t2jBjYt2ymr1eMWxux6e+N2uKZL4MblHawxvKlI8UHsIiV9xrc4BwlwlbitcvNIL
32
+ ZykdSlpTJd0Guy92iYjCJMC09tMRUNxiVBwD3jRGSeW9YAPIZGXIcVlm6srIRDjJ
33
+ o8wB6oOvHAkRXnntOo/4bBDH+ehmgvhh/O/mI+au6C0M430fv+ooH0w08LEXLx1k
34
+ e17ZNASZffbQRP09MH2GZ2AOlkildTX6looWRforZEZi+qamognrozd3MI5QHi1W
35
+ UAZUzHLrrFu7gnkFvLVpxOUf4ItOkA==
36
+ -----END CERTIFICATE-----
37
+ date: 2021-08-01 00:00:00.000000000 Z
12
38
  dependencies:
13
39
  - !ruby/object:Gem::Dependency
14
- name: activesupport
40
+ name: rake
15
41
  requirement: !ruby/object:Gem::Requirement
16
42
  requirements:
17
43
  - - ">="
18
44
  - !ruby/object:Gem::Version
19
- version: 3.2.0
45
+ version: '0'
20
46
  type: :development
21
47
  prerelease: false
22
48
  version_requirements: !ruby/object:Gem::Requirement
23
49
  requirements:
24
50
  - - ">="
25
51
  - !ruby/object:Gem::Version
26
- version: 3.2.0
52
+ version: '0'
27
53
  - !ruby/object:Gem::Dependency
28
54
  name: rspec
29
55
  requirement: !ruby/object:Gem::Requirement
@@ -39,35 +65,21 @@ dependencies:
39
65
  - !ruby/object:Gem::Version
40
66
  version: 3.7.0
41
67
  - !ruby/object:Gem::Dependency
42
- name: simplecov
68
+ name: rubocop
43
69
  requirement: !ruby/object:Gem::Requirement
44
70
  requirements:
45
71
  - - ">="
46
72
  - !ruby/object:Gem::Version
47
- version: '0'
73
+ version: 0.93.0
48
74
  type: :development
49
75
  prerelease: false
50
76
  version_requirements: !ruby/object:Gem::Requirement
51
77
  requirements:
52
78
  - - ">="
53
79
  - !ruby/object:Gem::Version
54
- version: '0'
80
+ version: 0.93.0
55
81
  - !ruby/object:Gem::Dependency
56
- name: rake
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: unicode
82
+ name: simplecov
71
83
  requirement: !ruby/object:Gem::Requirement
72
84
  requirements:
73
85
  - - ">="
@@ -114,14 +126,8 @@ files:
114
126
  - lib/babosa/transliterator/turkish.rb
115
127
  - lib/babosa/transliterator/ukrainian.rb
116
128
  - lib/babosa/transliterator/vietnamese.rb
117
- - lib/babosa/utf8/active_support_proxy.rb
118
- - lib/babosa/utf8/dumb_proxy.rb
119
- - lib/babosa/utf8/java_proxy.rb
120
- - lib/babosa/utf8/mappings.rb
121
- - lib/babosa/utf8/proxy.rb
122
- - lib/babosa/utf8/unicode_proxy.rb
123
129
  - lib/babosa/version.rb
124
- - spec/babosa_spec.rb
130
+ - spec/identifier_spec.rb
125
131
  - spec/spec_helper.rb
126
132
  - spec/transliterators/base_spec.rb
127
133
  - spec/transliterators/bulgarian_spec.rb
@@ -141,11 +147,11 @@ files:
141
147
  - spec/transliterators/turkish_spec.rb
142
148
  - spec/transliterators/ukrainian_spec.rb
143
149
  - spec/transliterators/vietnamese_spec.rb
144
- - spec/utf8_proxy_spec.rb
145
150
  homepage: http://github.com/norman/babosa
146
- licenses: []
151
+ licenses:
152
+ - MIT
147
153
  metadata: {}
148
- post_install_message:
154
+ post_install_message:
149
155
  rdoc_options: []
150
156
  require_paths:
151
157
  - lib
@@ -153,15 +159,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
153
159
  requirements:
154
160
  - - ">="
155
161
  - !ruby/object:Gem::Version
156
- version: 2.0.0
162
+ version: 2.5.0
157
163
  required_rubygems_version: !ruby/object:Gem::Requirement
158
164
  requirements:
159
165
  - - ">="
160
166
  - !ruby/object:Gem::Version
161
167
  version: '0'
162
168
  requirements: []
163
- rubygems_version: 3.1.2
164
- signing_key:
169
+ rubygems_version: 3.1.6
170
+ signing_key:
165
171
  specification_version: 4
166
172
  summary: A library for creating slugs.
167
173
  test_files: []
metadata.gz.sig ADDED
@@ -0,0 +1,2 @@
1
+ Q/�C�����5-S��D�A
2
+ �l@���y]+�/l`� �Rr?
@@ -1,38 +0,0 @@
1
- require 'active_support'
2
- require 'active_support/multibyte/unicode'
3
-
4
- module Babosa
5
- module UTF8
6
- # A UTF-8 proxy using Active Support's multibyte support.
7
- module ActiveSupportProxy
8
- extend ActiveSupport::Multibyte::Unicode
9
- extend self
10
-
11
- def self.normalize_utf8(string)
12
- normalize(string, :c)
13
- end
14
-
15
- if ActiveSupport::VERSION::MAJOR == 3
16
- def downcase(string)
17
- ActiveSupport::Multibyte::Chars.new(string).downcase.to_s
18
- end
19
-
20
- def upcase(string)
21
- ActiveSupport::Multibyte::Chars.new(string).upcase.to_s
22
- end
23
- elsif ActiveSupport::VERSION::MAJOR >= 6
24
- def self.normalize_utf8(string)
25
- string.unicode_normalize(:nfc).to_s
26
- end
27
-
28
- def downcase(string)
29
- string.downcase.to_s
30
- end
31
-
32
- def upcase(string)
33
- string.upcase.to_s
34
- end
35
- end
36
- end
37
- end
38
- end