diacritics 0.0.8 → 0.0.10
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 +4 -4
- data/.rspec +0 -1
- data/.rubocop.yml +5 -0
- data/.ruby-version +1 -1
- data/.travis.yml +4 -0
- data/Gemfile +1 -6
- data/README.md +3 -1
- data/TODO.md +0 -3
- data/lib/diacritics/alphabet.rb +34 -27
- data/lib/diacritics/cases.rb +3 -2
- data/lib/diacritics/version.rb +1 -1
- data/spec/diacritics/string_spec.rb +27 -1
- data/spec/spec_helper.rb +2 -4
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cadcaa152badc5ffa3119d7ea996e0219bb416bd
|
4
|
+
data.tar.gz: c0795350eac1c5716818ee3e8c708229d3825800
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a74f4a9b7ad8c0eef3d318fca50350f379f5769bc655a9e95499d619c24dc05d1ad2deb644061258607eaa7f9ee45f9dcb972649f519b1442ae3aad541b3a36d
|
7
|
+
data.tar.gz: caca7dd56f5837ac415db9df5f5bcb7eccec00040a002f70971e772b87fdd978c2a6e3657465a2ab521628a3f1f0168c838db041b3f8e512c8404b87aeb0b2cd
|
data/.rspec
CHANGED
data/.rubocop.yml
CHANGED
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.3
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
@@ -3,11 +3,6 @@ source 'https://rubygems.org'
|
|
3
3
|
gemspec
|
4
4
|
|
5
5
|
group :development, :test do
|
6
|
-
gem 'coveralls', require: false
|
6
|
+
# gem 'coveralls', require: false
|
7
7
|
gem 'rspec', '~> 3.4.0'
|
8
|
-
gem 'guard'
|
9
|
-
gem 'guard-bundler'
|
10
|
-
gem 'guard-rspec'
|
11
|
-
gem 'rb-readline', '~> 0.5.0', require: false
|
12
|
-
gem 'simplecov', require: false
|
13
8
|
end
|
data/README.md
CHANGED
@@ -4,7 +4,6 @@
|
|
4
4
|
[](https://gemnasium.com/fractalsoft/diacritics)
|
5
5
|
[](https://coveralls.io/r/fractalsoft/diacritics)
|
6
6
|
[](http://waffle.io/fractalsoft/diacritics)
|
7
|
-
[](https://coderwall.com/torrocus)
|
8
7
|
|
9
8
|
Diacritics is a gem which support downcase, upcase and permanent link with diacritical characters.
|
10
9
|
|
@@ -49,3 +48,6 @@ and use
|
|
49
48
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
50
49
|
4. Push to the branch (`git push origin my-new-feature`)
|
51
50
|
5. Create new Pull Request
|
51
|
+
|
52
|
+
Please remember about tests. Before you add new characters add test first and check that this test doesn't pass.
|
53
|
+
Many of characters are the same in different languages.
|
data/TODO.md
CHANGED
@@ -1,12 +1,9 @@
|
|
1
1
|
## Examples containing:
|
2
2
|
|
3
|
-
* Czech [Ď, Ě, Ň, Ť, Ů, Ú, Û, "aábcčdďeéěfghiíjklmnňoópqrřsštťuúůvwxyýzž", "AÁBCČDĎEÉĚFGHIÍJKLMNŇOÓPQRŘSŠTŤUÚŮVWXYÝZŽ"]
|
4
|
-
* French [Œ, Ÿ, Î, Ï, "abcdefghijklmnopqrstuvwxyzàâæçéèêëîïôœùûüÿ", "ABCDEFGHIJKLMNOPQRSTUVWXYZÀÂÆÇÉÈÊËÎÏÔŒÙÛÜŸ"]
|
5
3
|
* Portuguese [Â, "abcdefghijklmnopqrstuvwxyzáâãàçéêíóôõú", "ABCDEFGHIJKLMNOPQRSTUVWXYZÁÂÃÀÇÉÊÍÓÔÕÚ"]
|
6
4
|
* Russian [Щ, Ъ, Э, "абвгдеёжзийклмнопрстуфхцчшщъыьэюя", "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"]
|
7
5
|
* Greek [Β, Μ, Χ, Ω, Ή, Ύ, Ώ, ΐ, ΰ, Ϊ, Ϋ]
|
8
6
|
* Slovak ["aáäeéiíoóôuúyýbcčdďfghjklĺľmnňpqrŕsštťvwxzž", "AÁÄEÉIÍOÓÔUÚYÝBCČDĎFGHJKLĹĽMNŇPQRŔSŠTŤVWXZŽ"]
|
9
|
-
* Spanish [ñ Ñ]
|
10
7
|
* Italian ["aàbcdeèéfghiìíîlmnoòópqrstuùúvz", "AÀBCDEÈÉFGHIÌÍÎLMNOÒÓPQRSTUÙÚVZ"]
|
11
8
|
* Romanian ["aăâbcdefghiîjklmnopqrsștțuvwxyz", "AĂÂBCDEFGHIÎJKLMNOPQRSȘTȚUVWXYZ"]
|
12
9
|
* Danish [å, â, ô, Å, Â, Ô]
|
data/lib/diacritics/alphabet.rb
CHANGED
@@ -5,6 +5,7 @@ module Diacritics
|
|
5
5
|
private
|
6
6
|
|
7
7
|
# Characters from many alphabets
|
8
|
+
# Get from https://en.wikipedia.org/wiki/Diacritic
|
8
9
|
class Alphabet
|
9
10
|
attr_reader :regexp, :hash
|
10
11
|
|
@@ -25,10 +26,10 @@ module Diacritics
|
|
25
26
|
end
|
26
27
|
|
27
28
|
def prepare_hash
|
28
|
-
|
29
|
-
hash =
|
30
|
-
one =
|
31
|
-
two =
|
29
|
+
class_name = Diacritics::Alphabet
|
30
|
+
hash = class_name.hashed(@downcase, @upcase)
|
31
|
+
one = class_name.hashed(@downcase, @permanent)
|
32
|
+
two = class_name.hashed(@upcase, @permanent)
|
32
33
|
{
|
33
34
|
downcase: hash.invert,
|
34
35
|
upcase: hash,
|
@@ -37,7 +38,8 @@ module Diacritics
|
|
37
38
|
end
|
38
39
|
|
39
40
|
def prepare_regexp
|
40
|
-
downcase
|
41
|
+
downcase = @upcase.join
|
42
|
+
upcase = @downcase.join
|
41
43
|
permanent = (@downcase + @upcase).uniq.join
|
42
44
|
{
|
43
45
|
downcase: /[#{downcase}]/,
|
@@ -50,23 +52,24 @@ module Diacritics
|
|
50
52
|
#
|
51
53
|
# ["a", "b"], ["A", "B"] #=> {"a" => "A", "b" => "B"}
|
52
54
|
def self.hashed(one, two)
|
53
|
-
|
54
|
-
[one, two].transpose.each { |key, value| hash[key] = value }
|
55
|
-
hash
|
55
|
+
Hash[one.zip two]
|
56
56
|
end
|
57
57
|
|
58
58
|
def data
|
59
|
-
{
|
60
|
-
|
61
|
-
|
62
|
-
|
59
|
+
languages.each_with_object({}) do |language, hash|
|
60
|
+
hash[language] = send(language)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def languages
|
65
|
+
[:en, :de, :pl, :cs, :fr, :it, :eo, :is, :pt, :sp, :hu, :nn, :ru, :gr]
|
63
66
|
end
|
64
67
|
|
65
68
|
def en
|
66
69
|
{ # English
|
67
|
-
downcase: [' ', '
|
68
|
-
upcase: [' ', '
|
69
|
-
permanent: ['-', '', '', '']
|
70
|
+
downcase: [' ', '!', ',', '.', ':', '?', '«', '»'],
|
71
|
+
upcase: [' ', '!', ',', '.', ':', '?', '«', '»'],
|
72
|
+
permanent: ['-', '', '', '', '', '', '', '']
|
70
73
|
}
|
71
74
|
end
|
72
75
|
|
@@ -87,15 +90,19 @@ module Diacritics
|
|
87
90
|
end
|
88
91
|
|
89
92
|
def cs
|
90
|
-
{ # Czech
|
91
|
-
|
92
|
-
|
93
|
-
|
93
|
+
{ # Czech uses acute (á é í ó ú ý), caron (č ď ě ň ř š ť ž), ring (ů)
|
94
|
+
# aábcčdďeéěfghiíjklmnňoópqrřsštťuúůvwxyýzž
|
95
|
+
# AÁBCČDĎEÉĚFGHIÍJKLMNŇOÓPQRŘSŠTŤUÚŮVWXYÝZŽ
|
96
|
+
downcase: %w(á é í ó ú ý č ď ě ň ř š ť ů ž),
|
97
|
+
upcase: %w(Á É Í Ó Ú Ý Č Ď Ě Ň Ř Š Ť Ů Ž),
|
98
|
+
permanent: %w(a e i o u y c d e n r s t u z)
|
94
99
|
}
|
95
100
|
end
|
96
101
|
|
97
102
|
def fr
|
98
103
|
{ # French
|
104
|
+
# abcdefghijklmnopqrstuvwxyzàâæçéèêëîïôœùûüÿ
|
105
|
+
# ABCDEFGHIJKLMNOPQRSTUVWXYZÀÂÆÇÉÈÊËÎÏÔŒÙÛÜŸ
|
99
106
|
downcase: %w(à â é è ë ê ï î ô ù û ü ÿ ç œ æ),
|
100
107
|
upcase: %w(À Â É È Ë Ê Ï Î Ô Ù Û Ü Ÿ Ç Œ Æ),
|
101
108
|
permanent: %w(a a e e e e i i o u u ue y c oe ae)
|
@@ -104,14 +111,14 @@ module Diacritics
|
|
104
111
|
|
105
112
|
def it
|
106
113
|
{ # Italian
|
107
|
-
downcase: %w(ì
|
108
|
-
upcase: %w(Ì
|
109
|
-
permanent: %w(i
|
114
|
+
downcase: %w(à è é ì î ò ó ù),
|
115
|
+
upcase: %w(À È É Ì Î Ò Ó Ù),
|
116
|
+
permanent: %w(a e e i i o o u)
|
110
117
|
}
|
111
118
|
end
|
112
119
|
|
113
120
|
def eo
|
114
|
-
{ #
|
121
|
+
{ # Esperantohas the symbols ŭ, ĉ, ĝ, ĥ, ĵ and ŝ
|
115
122
|
downcase: %w(ĉ ĝ ĥ ĵ ŝ ŭ),
|
116
123
|
upcase: %w(Ĉ Ĝ Ĥ Ĵ Ŝ Ŭ),
|
117
124
|
permanent: %w(c g h j s u)
|
@@ -127,7 +134,7 @@ module Diacritics
|
|
127
134
|
end
|
128
135
|
|
129
136
|
def pt
|
130
|
-
{ # Portugal
|
137
|
+
{ # Portugal uses á, â, ã, à, ç, é, ê, í, ó, ô, õ and ú
|
131
138
|
downcase: %w(ã ç),
|
132
139
|
upcase: %w(Ã Ç),
|
133
140
|
permanent: %w(a c)
|
@@ -136,9 +143,9 @@ module Diacritics
|
|
136
143
|
|
137
144
|
def sp
|
138
145
|
{ # Spanish
|
139
|
-
downcase: ['¿'],
|
140
|
-
upcase: ['¿'],
|
141
|
-
permanent: ['']
|
146
|
+
downcase: ['ñ', 'õ', '¿', '¡'],
|
147
|
+
upcase: ['Ñ', 'Õ', '¿', '¡'],
|
148
|
+
permanent: ['n', 'o', '', '']
|
142
149
|
}
|
143
150
|
end
|
144
151
|
|
data/lib/diacritics/cases.rb
CHANGED
@@ -15,8 +15,9 @@ module Diacritics
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def initialize
|
18
|
-
|
19
|
-
@hash
|
18
|
+
alphabet = Diacritics::Alphabet.new
|
19
|
+
@hash = alphabet.hash
|
20
|
+
@regexp = alphabet.regexp
|
20
21
|
end
|
21
22
|
|
22
23
|
def downcase(text)
|
data/lib/diacritics/version.rb
CHANGED
@@ -167,6 +167,32 @@ describe Diacritics::String do
|
|
167
167
|
end
|
168
168
|
end
|
169
169
|
|
170
|
+
context 'Spanish' do
|
171
|
+
it_behaves_like 'word processing' do
|
172
|
+
subject { 'Whisky bueno: ¡excitad mi frágil pequeña vejez!' }
|
173
|
+
let(:result) do
|
174
|
+
[
|
175
|
+
'whisky bueno: ¡excitad mi frágil pequeña vejez!',
|
176
|
+
'WHISKY BUENO: ¡EXCITAD MI FRÁGIL PEQUEÑA VEJEZ!',
|
177
|
+
'whisky-bueno-excitad-mi-fragil-pequena-vejez'
|
178
|
+
]
|
179
|
+
end
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
183
|
+
context 'Portugués' do
|
184
|
+
it_behaves_like 'word processing' do
|
185
|
+
subject { 'Luís argüia à Júlia que «brações, fé, chá, óxido, pôr, zângão» eram palavras do português.' }
|
186
|
+
let(:result) do
|
187
|
+
[
|
188
|
+
'luís argüia à júlia que «brações, fé, chá, óxido, pôr, zângão» eram palavras do português.',
|
189
|
+
'LUÍS ARGÜIA À JÚLIA QUE «BRAÇÕES, FÉ, CHÁ, ÓXIDO, PÔR, ZÂNGÃO» ERAM PALAVRAS DO PORTUGUÊS.',
|
190
|
+
'luis-argueia-a-julia-que-bracoes-fe-cha-oxido-por-zangao-eram-palavras-do-portugues'
|
191
|
+
]
|
192
|
+
end
|
193
|
+
end
|
194
|
+
end
|
195
|
+
|
170
196
|
context do
|
171
197
|
it_behaves_like 'word processing' do
|
172
198
|
subject { 'À l’époque de la conquête de la Gaule par les armées' }
|
@@ -510,7 +536,7 @@ describe Diacritics::String do
|
|
510
536
|
[
|
511
537
|
'dès noël où un zéphyr haï me vêt de glaçons würmiens je dîne d’exquis rôtis de bœuf au kir à l’aÿ d’âge mûr & cætera !',
|
512
538
|
'DÈS NOËL OÙ UN ZÉPHYR HAÏ ME VÊT DE GLAÇONS WÜRMIENS JE DÎNE D’EXQUIS RÔTIS DE BŒUF AU KIR À L’AŸ D’ÂGE MÛR & CÆTERA !',
|
513
|
-
'des-noel-ou-un-zephyr-hai-me-vet-de-glacons-wuermiens-je-dine-d’exquis-rotis-de-boeuf-au-kir-a-l’ay-d’age-mur-&-caetera
|
539
|
+
'des-noel-ou-un-zephyr-hai-me-vet-de-glacons-wuermiens-je-dine-d’exquis-rotis-de-boeuf-au-kir-a-l’ay-d’age-mur-&-caetera-'
|
514
540
|
]
|
515
541
|
end
|
516
542
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: diacritics
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aleksander Malaszkiewicz
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2017-05-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -91,7 +91,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
91
91
|
version: '0'
|
92
92
|
requirements: []
|
93
93
|
rubyforge_project:
|
94
|
-
rubygems_version: 2.
|
94
|
+
rubygems_version: 2.5.2
|
95
95
|
signing_key:
|
96
96
|
specification_version: 4
|
97
97
|
summary: Support diacritics
|