kebab 1.0.2
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 +7 -0
- data/.gemtest +0 -0
- data/Changelog.md +99 -0
- data/MIT-LICENSE +19 -0
- data/README.md +26 -0
- data/Rakefile +34 -0
- data/lib/kebab.rb +18 -0
- data/lib/kebab/identifier.rb +294 -0
- data/lib/kebab/transliterator/base.rb +110 -0
- data/lib/kebab/transliterator/bulgarian.rb +27 -0
- data/lib/kebab/transliterator/cyrillic.rb +108 -0
- data/lib/kebab/transliterator/danish.rb +15 -0
- data/lib/kebab/transliterator/german.rb +15 -0
- data/lib/kebab/transliterator/greek.rb +77 -0
- data/lib/kebab/transliterator/hindi.rb +137 -0
- data/lib/kebab/transliterator/latin.rb +199 -0
- data/lib/kebab/transliterator/macedonian.rb +29 -0
- data/lib/kebab/transliterator/norwegian.rb +14 -0
- data/lib/kebab/transliterator/romanian.rb +13 -0
- data/lib/kebab/transliterator/russian.rb +22 -0
- data/lib/kebab/transliterator/serbian.rb +34 -0
- data/lib/kebab/transliterator/spanish.rb +9 -0
- data/lib/kebab/transliterator/swedish.rb +16 -0
- data/lib/kebab/transliterator/turkish.rb +8 -0
- data/lib/kebab/transliterator/ukrainian.rb +30 -0
- data/lib/kebab/transliterator/vietnamese.rb +143 -0
- data/lib/kebab/utf8/active_support_proxy.rb +26 -0
- data/lib/kebab/utf8/dumb_proxy.rb +49 -0
- data/lib/kebab/utf8/java_proxy.rb +22 -0
- data/lib/kebab/utf8/mappings.rb +193 -0
- data/lib/kebab/utf8/proxy.rb +125 -0
- data/lib/kebab/utf8/unicode_proxy.rb +23 -0
- data/lib/kebab/version.rb +5 -0
- data/spec/kebab_spec.rb +155 -0
- data/spec/spec_helper.rb +45 -0
- data/spec/transliterators/base_spec.rb +16 -0
- data/spec/transliterators/bulgarian_spec.rb +20 -0
- data/spec/transliterators/danish_spec.rb +17 -0
- data/spec/transliterators/german_spec.rb +17 -0
- data/spec/transliterators/greek_spec.rb +17 -0
- data/spec/transliterators/hindi_spec.rb +17 -0
- data/spec/transliterators/latin_spec.rb +9 -0
- data/spec/transliterators/macedonian_spec.rb +9 -0
- data/spec/transliterators/norwegian_spec.rb +18 -0
- data/spec/transliterators/polish_spec.rb +14 -0
- data/spec/transliterators/romanian_spec.rb +19 -0
- data/spec/transliterators/russian_spec.rb +9 -0
- data/spec/transliterators/serbian_spec.rb +25 -0
- data/spec/transliterators/spanish_spec.rb +13 -0
- data/spec/transliterators/swedish_spec.rb +18 -0
- data/spec/transliterators/turkish_spec.rb +24 -0
- data/spec/transliterators/ukrainian_spec.rb +88 -0
- data/spec/transliterators/vietnamese_spec.rb +18 -0
- data/spec/utf8_proxy_spec.rb +53 -0
- metadata +167 -0
@@ -0,0 +1,24 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require File.expand_path("../../spec_helper", __FILE__)
|
3
|
+
|
4
|
+
describe Kebab::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
|
@@ -0,0 +1,88 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require File.expand_path("../../spec_helper", __FILE__)
|
3
|
+
|
4
|
+
describe Kebab::Transliterator::Ukrainian do
|
5
|
+
|
6
|
+
let(:t) { described_class.instance }
|
7
|
+
it_behaves_like "a cyrillic transliterator"
|
8
|
+
|
9
|
+
it "should transliterate Cyrillic characters" do
|
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",
|
56
|
+
"Решетилівка" => "Reshetylivka",
|
57
|
+
"Рибчинський" => "Rybchynskyi",
|
58
|
+
"Суми" => "Sumy",
|
59
|
+
"Соломія" => "Solomiia",
|
60
|
+
"Тернопіль" => "Ternopil",
|
61
|
+
"Троць" => "Trots",
|
62
|
+
"Ужгород" => "Uzhhorod",
|
63
|
+
"Уляна" => "Uliana",
|
64
|
+
"Фастів" => "Fastiv",
|
65
|
+
"Філіпчук" => "Filipchuk",
|
66
|
+
"Харків" => "Kharkiv",
|
67
|
+
"Христина" => "Khrystyna",
|
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"
|
84
|
+
}
|
85
|
+
examples.each { |k, v| expect(t.transliterate(k)).to eql(v) }
|
86
|
+
end
|
87
|
+
|
88
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require File.expand_path("../../spec_helper", __FILE__)
|
3
|
+
|
4
|
+
describe Kebab::Transliterator::Vietnamese 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
|
+
"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
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require File.expand_path("../spec_helper", __FILE__)
|
3
|
+
|
4
|
+
PROXIES = [Kebab::UTF8::DumbProxy, Kebab::UTF8::ActiveSupportProxy, Kebab::UTF8::UnicodeProxy]
|
5
|
+
PROXIES << Kebab::UTF8::JavaProxy if Kebab.jruby15?
|
6
|
+
|
7
|
+
PROXIES.each do |proxy|
|
8
|
+
|
9
|
+
describe proxy do
|
10
|
+
using Kebab
|
11
|
+
|
12
|
+
around do |example|
|
13
|
+
begin
|
14
|
+
old_proxy = Kebab::Identifier.utf8_proxy
|
15
|
+
Kebab::Identifier.utf8_proxy = proxy
|
16
|
+
example.run
|
17
|
+
ensure
|
18
|
+
Kebab::Identifier.utf8_proxy = old_proxy
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "#normalize_utf8" do
|
23
|
+
it "should normalize to canonical composed" do
|
24
|
+
# ÅÉÎØÜ
|
25
|
+
uncomposed_bytes = [65, 204, 138, 69, 204, 129, 73, 204, 130, 195, 152, 85, 204, 136]
|
26
|
+
composed_bytes = [195, 133, 195, 137, 195, 142, 195, 152, 195, 156]
|
27
|
+
uncomposed_string = uncomposed_bytes.pack("C*").unpack("U*").pack("U*")
|
28
|
+
expect(proxy.normalize_utf8(uncomposed_string).unpack("C*")).to eql(composed_bytes)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe "#upcase" do
|
33
|
+
it "should upcase the string" do
|
34
|
+
expect(proxy.upcase("åéîøü")).to eql("ÅÉÎØÜ")
|
35
|
+
expect("åéîøü".to_identifier.upcase).to eql("ÅÉÎØÜ")
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
describe "#downcase" do
|
40
|
+
it "should downcase the string" do
|
41
|
+
expect(proxy.downcase("ÅÉÎØÜ")).to eql("åéîøü")
|
42
|
+
expect("ÅÉÎØÜ".to_identifier.downcase).to eql("åéîøü")
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe 'tidy_bytes' do
|
47
|
+
it 'should fix invalid UTF-8 strings' do
|
48
|
+
expect(proxy.tidy_bytes("\x93abc")).to eq('“abc')
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
end
|
metadata
ADDED
@@ -0,0 +1,167 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: kebab
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Tom Chipchase
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-11-21 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: activesupport
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 3.2.0
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 3.2.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 3.7.0
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 3.7.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: simplecov
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !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
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
description: |2
|
84
|
+
A library for creating kebab case strings. Forked from kebab, but using
|
85
|
+
refinements instead of monkey patching.
|
86
|
+
email: tom.chipchase@farmdop.com
|
87
|
+
executables: []
|
88
|
+
extensions: []
|
89
|
+
extra_rdoc_files: []
|
90
|
+
files:
|
91
|
+
- ".gemtest"
|
92
|
+
- Changelog.md
|
93
|
+
- MIT-LICENSE
|
94
|
+
- README.md
|
95
|
+
- Rakefile
|
96
|
+
- lib/kebab.rb
|
97
|
+
- lib/kebab/identifier.rb
|
98
|
+
- lib/kebab/transliterator/base.rb
|
99
|
+
- lib/kebab/transliterator/bulgarian.rb
|
100
|
+
- lib/kebab/transliterator/cyrillic.rb
|
101
|
+
- lib/kebab/transliterator/danish.rb
|
102
|
+
- lib/kebab/transliterator/german.rb
|
103
|
+
- lib/kebab/transliterator/greek.rb
|
104
|
+
- lib/kebab/transliterator/hindi.rb
|
105
|
+
- lib/kebab/transliterator/latin.rb
|
106
|
+
- lib/kebab/transliterator/macedonian.rb
|
107
|
+
- lib/kebab/transliterator/norwegian.rb
|
108
|
+
- lib/kebab/transliterator/romanian.rb
|
109
|
+
- lib/kebab/transliterator/russian.rb
|
110
|
+
- lib/kebab/transliterator/serbian.rb
|
111
|
+
- lib/kebab/transliterator/spanish.rb
|
112
|
+
- lib/kebab/transliterator/swedish.rb
|
113
|
+
- lib/kebab/transliterator/turkish.rb
|
114
|
+
- lib/kebab/transliterator/ukrainian.rb
|
115
|
+
- lib/kebab/transliterator/vietnamese.rb
|
116
|
+
- lib/kebab/utf8/active_support_proxy.rb
|
117
|
+
- lib/kebab/utf8/dumb_proxy.rb
|
118
|
+
- lib/kebab/utf8/java_proxy.rb
|
119
|
+
- lib/kebab/utf8/mappings.rb
|
120
|
+
- lib/kebab/utf8/proxy.rb
|
121
|
+
- lib/kebab/utf8/unicode_proxy.rb
|
122
|
+
- lib/kebab/version.rb
|
123
|
+
- spec/kebab_spec.rb
|
124
|
+
- spec/spec_helper.rb
|
125
|
+
- spec/transliterators/base_spec.rb
|
126
|
+
- spec/transliterators/bulgarian_spec.rb
|
127
|
+
- spec/transliterators/danish_spec.rb
|
128
|
+
- spec/transliterators/german_spec.rb
|
129
|
+
- spec/transliterators/greek_spec.rb
|
130
|
+
- spec/transliterators/hindi_spec.rb
|
131
|
+
- spec/transliterators/latin_spec.rb
|
132
|
+
- spec/transliterators/macedonian_spec.rb
|
133
|
+
- spec/transliterators/norwegian_spec.rb
|
134
|
+
- spec/transliterators/polish_spec.rb
|
135
|
+
- spec/transliterators/romanian_spec.rb
|
136
|
+
- spec/transliterators/russian_spec.rb
|
137
|
+
- spec/transliterators/serbian_spec.rb
|
138
|
+
- spec/transliterators/spanish_spec.rb
|
139
|
+
- spec/transliterators/swedish_spec.rb
|
140
|
+
- spec/transliterators/turkish_spec.rb
|
141
|
+
- spec/transliterators/ukrainian_spec.rb
|
142
|
+
- spec/transliterators/vietnamese_spec.rb
|
143
|
+
- spec/utf8_proxy_spec.rb
|
144
|
+
homepage: http://github.com/tomchipchase/kebab
|
145
|
+
licenses: []
|
146
|
+
metadata: {}
|
147
|
+
post_install_message:
|
148
|
+
rdoc_options: []
|
149
|
+
require_paths:
|
150
|
+
- lib
|
151
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
152
|
+
requirements:
|
153
|
+
- - ">="
|
154
|
+
- !ruby/object:Gem::Version
|
155
|
+
version: 2.0.0
|
156
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
157
|
+
requirements:
|
158
|
+
- - ">="
|
159
|
+
- !ruby/object:Gem::Version
|
160
|
+
version: '0'
|
161
|
+
requirements: []
|
162
|
+
rubyforge_project:
|
163
|
+
rubygems_version: 2.7.3
|
164
|
+
signing_key:
|
165
|
+
specification_version: 4
|
166
|
+
summary: A library for creating slugs.
|
167
|
+
test_files: []
|