babosa 1.0.2 → 1.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/Changelog.md +8 -0
- data/README.md +4 -4
- data/lib/babosa/identifier.rb +3 -3
- data/lib/babosa/transliterator/base.rb +2 -0
- data/lib/babosa/transliterator/hindi.rb +137 -0
- data/lib/babosa/transliterator/turkish.rb +8 -0
- data/lib/babosa/utf8/active_support_proxy.rb +12 -0
- data/lib/babosa/version.rb +1 -1
- data/spec/babosa_spec.rb +5 -1
- data/spec/spec_helper.rb +9 -0
- data/spec/transliterators/hindi_spec.rb +17 -0
- data/spec/transliterators/turkish_spec.rb +24 -0
- metadata +11 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 7878565d1bfb436b7110d42e81dff1eb589f86e10e0919ded4b2de695784fae3
|
4
|
+
data.tar.gz: f6f3e7cc2b4876a940ec66fa1895f9cd3390526c62cebc888110494b72d77fe5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6ea0ff964d688d9ca29710da13207c12d49509c13d72f8198a33d38141f7f6ad39b5792f5937a94a44b3976dcd68b24233c11b3418dc9d100a170caa799404ed
|
7
|
+
data.tar.gz: 1b37fd01a1907f244e112171da5dd942105181b860e6dc05ede3e1798bfdf1e50e8543b69757109dc9bd7dfddecb6ba2fbec2b59f38843223052c559f085490e
|
data/Changelog.md
CHANGED
@@ -1,5 +1,13 @@
|
|
1
1
|
# Babosa Changelog
|
2
2
|
|
3
|
+
## 1.0.4
|
4
|
+
|
5
|
+
* Fix nil being cast to frozen string (https://github.com/norman/babosa/pull/52)
|
6
|
+
|
7
|
+
## 1.0.3
|
8
|
+
|
9
|
+
* Fix Active Support 6 deprecations (https://github.com/norman/babosa/pull/50)
|
10
|
+
|
3
11
|
## 1.0.2
|
4
12
|
|
5
13
|
* Fix regression in ActiveSupport UTF8 proxy.
|
data/README.md
CHANGED
@@ -218,8 +218,8 @@ Babosa can be installed via Rubygems:
|
|
218
218
|
|
219
219
|
You can get the source code from its [Github repository](http://github.com/norman/babosa).
|
220
220
|
|
221
|
-
Babosa is tested to be compatible with Ruby
|
222
|
-
Rubinius
|
221
|
+
Babosa is tested to be compatible with Ruby 2.x, JRuby 1.7+, and
|
222
|
+
Rubinius 2.x It's probably compatible with other Rubies as well.
|
223
223
|
|
224
224
|
## Reporting bugs
|
225
225
|
|
@@ -239,6 +239,7 @@ tracker](http://github.com/norman/babosa/issues).
|
|
239
239
|
|
240
240
|
Many thanks to the following people for their help:
|
241
241
|
|
242
|
+
* [Dmitry A. Ilyashevich](https://github.com/dmitry-ilyashevich) - Deprecation fixes
|
242
243
|
* [anhkind](https://github.com/anhkind) - Vietnamese support
|
243
244
|
* [Martins Zakis](https://github.com/martins) - Bug fixes
|
244
245
|
* [Vassilis Rodokanakis](https://github.com/vrodokanakis) - Greek support
|
@@ -255,7 +256,6 @@ Many thanks to the following people for their help:
|
|
255
256
|
* [Molte Emil Strange Andersen](https://github.com/molte) - Danish support
|
256
257
|
* [Milan Dobrota](https://github.com/milandobrota) - Serbian support
|
257
258
|
|
258
|
-
|
259
259
|
## Copyright
|
260
260
|
|
261
261
|
Copyright (c) 2010-2013 Norman Clarke
|
@@ -276,4 +276,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
276
276
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
277
277
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
278
278
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
279
|
-
SOFTWARE.
|
279
|
+
SOFTWARE.
|
data/lib/babosa/identifier.rb
CHANGED
@@ -37,7 +37,7 @@ module Babosa
|
|
37
37
|
|
38
38
|
@@utf8_proxy = if Babosa.jruby15?
|
39
39
|
UTF8::JavaProxy
|
40
|
-
elsif defined? Unicode
|
40
|
+
elsif defined? Unicode::VERSION
|
41
41
|
UTF8::UnicodeProxy
|
42
42
|
elsif defined? ActiveSupport
|
43
43
|
UTF8::ActiveSupportProxy
|
@@ -166,8 +166,8 @@ module Babosa
|
|
166
166
|
# Normalize a string so that it can safely be used as a Ruby method name.
|
167
167
|
def to_ruby_method!(allow_bangs = true)
|
168
168
|
leader, trailer = @wrapped_string.strip.scan(/\A(.+)(.)\z/).flatten
|
169
|
-
leader = leader.to_s
|
170
|
-
trailer = trailer.to_s
|
169
|
+
leader = leader.to_s.dup
|
170
|
+
trailer = trailer.to_s.dup
|
171
171
|
if allow_bangs
|
172
172
|
trailer.downcase!
|
173
173
|
trailer.gsub!(/[^a-z0-9!=\\?]/, '')
|
@@ -10,6 +10,7 @@ module Babosa
|
|
10
10
|
autoload :Cyrillic, "babosa/transliterator/cyrillic"
|
11
11
|
autoload :Danish, "babosa/transliterator/danish"
|
12
12
|
autoload :German, "babosa/transliterator/german"
|
13
|
+
autoload :Hindi, "babosa/transliterator/hindi"
|
13
14
|
autoload :Latin, "babosa/transliterator/latin"
|
14
15
|
autoload :Macedonian, "babosa/transliterator/macedonian"
|
15
16
|
autoload :Norwegian, "babosa/transliterator/norwegian"
|
@@ -21,6 +22,7 @@ module Babosa
|
|
21
22
|
autoload :Ukrainian, "babosa/transliterator/ukrainian"
|
22
23
|
autoload :Greek, "babosa/transliterator/greek"
|
23
24
|
autoload :Vietnamese, "babosa/transliterator/vietnamese"
|
25
|
+
autoload :Turkish, "babosa/transliterator/turkish"
|
24
26
|
|
25
27
|
def self.get(symbol)
|
26
28
|
class_name = symbol.to_s.split("_").map {|a| a.gsub(/\b('?[a-z])/) { $1.upcase }}.join
|
@@ -0,0 +1,137 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module Babosa
|
3
|
+
module Transliterator
|
4
|
+
class Hindi < Base
|
5
|
+
APPROXIMATIONS = {
|
6
|
+
"ऀ" => "n",
|
7
|
+
"ँ" => "n",
|
8
|
+
"ं" => "n",
|
9
|
+
"ः" => "h",
|
10
|
+
"ऄ" => "a",
|
11
|
+
"अ" => "a",
|
12
|
+
"आ" => "aa",
|
13
|
+
"इ" => "i",
|
14
|
+
"ई" => "ii",
|
15
|
+
"उ" => "u",
|
16
|
+
"ऊ" => "uu",
|
17
|
+
"ऋ" => "ri",
|
18
|
+
"ऌ" => "lri",
|
19
|
+
"ऍ" => "e",
|
20
|
+
"ऎ" => "e",
|
21
|
+
"ए" => "e",
|
22
|
+
"ऐ" => "ei",
|
23
|
+
"ऑ" => "o",
|
24
|
+
"ऒ" => "o",
|
25
|
+
"ओ" => "o",
|
26
|
+
"औ" => "ou",
|
27
|
+
"क" => "k",
|
28
|
+
"ख" => "kh",
|
29
|
+
"ग" => "g",
|
30
|
+
"घ" => "gh",
|
31
|
+
"ङ" => "d",
|
32
|
+
"च" => "ch",
|
33
|
+
"छ" => "chh",
|
34
|
+
"ज" => "j",
|
35
|
+
"झ" => "jh",
|
36
|
+
"ञ" => "ny",
|
37
|
+
"ट" => "tt",
|
38
|
+
"ठ" => "tth",
|
39
|
+
"ड" => "dd",
|
40
|
+
"ढ" => "ddh",
|
41
|
+
"ण" => "nn",
|
42
|
+
"त" => "t",
|
43
|
+
"थ" => "th",
|
44
|
+
"द" => "d",
|
45
|
+
"ध" => "dh",
|
46
|
+
"न" => "n",
|
47
|
+
"ऩ" => "nnn",
|
48
|
+
"प" => "p",
|
49
|
+
"फ" => "ph",
|
50
|
+
"ब" => "b",
|
51
|
+
"भ" => "bh",
|
52
|
+
"म" => "m",
|
53
|
+
"य" => "y",
|
54
|
+
"र" => "r",
|
55
|
+
"ऱ" => "rr",
|
56
|
+
"ल" => "l",
|
57
|
+
"ळ" => "ll",
|
58
|
+
"ऴ" => "ll",
|
59
|
+
"व" => "v",
|
60
|
+
"श" => "sh",
|
61
|
+
"ष" => "ss",
|
62
|
+
"स" => "s",
|
63
|
+
"ह" => "h",
|
64
|
+
"ऺ" => "oe",
|
65
|
+
"ऻ" => "ooe",
|
66
|
+
"़" => "",
|
67
|
+
"ऽ" => "-",
|
68
|
+
"ा" => "aa",
|
69
|
+
"ि" => "i",
|
70
|
+
"ी" => "ii",
|
71
|
+
"ु" => "u",
|
72
|
+
"ू" => "uu",
|
73
|
+
"ृ" => "r",
|
74
|
+
"ॄ" => "rr",
|
75
|
+
"ॅ" => "e",
|
76
|
+
"ॆ" => "e",
|
77
|
+
"े" => "e",
|
78
|
+
"ै" => "ai",
|
79
|
+
"ॉ" => "o",
|
80
|
+
"ॊ" => "o",
|
81
|
+
"ो" => "o",
|
82
|
+
"ौ" => "au",
|
83
|
+
"्" => "",
|
84
|
+
"ॎ" => "e",
|
85
|
+
"ॏ" => "aw",
|
86
|
+
"ॐ" => "om",
|
87
|
+
"॑" => "",
|
88
|
+
"॒" => "_",
|
89
|
+
"॓" => "",
|
90
|
+
"॔" => "",
|
91
|
+
"ॕ" => "ee",
|
92
|
+
"ॖ" => "ue",
|
93
|
+
"ॗ" => "uue",
|
94
|
+
"क़" => "q",
|
95
|
+
"ख़" => "khh",
|
96
|
+
"ग़" => "ghh",
|
97
|
+
"ज़" => "za",
|
98
|
+
"ड़" => "dddh",
|
99
|
+
"ढ़" => "rh",
|
100
|
+
"फ़" => "f",
|
101
|
+
"य़" => "yy",
|
102
|
+
"ॠ" => "rri",
|
103
|
+
"ॡ" => "lr",
|
104
|
+
"ॢ" => "l",
|
105
|
+
"ॣ" => "l",
|
106
|
+
"।" => ".",
|
107
|
+
"॥" => "..",
|
108
|
+
"०" => "0",
|
109
|
+
"१" => "1",
|
110
|
+
"२" => "2",
|
111
|
+
"३" => "3",
|
112
|
+
"४" => "4",
|
113
|
+
"५" => "5",
|
114
|
+
"६" => "6",
|
115
|
+
"७" => "7",
|
116
|
+
"८" => "8",
|
117
|
+
"९" => "9",
|
118
|
+
"॰" => ".",
|
119
|
+
"ॱ" => ".",
|
120
|
+
"ॲ" => "a",
|
121
|
+
"ॳ" => "oe",
|
122
|
+
"ॴ" => "ooe",
|
123
|
+
"ॵ" => "aw",
|
124
|
+
"ॶ" => "ue",
|
125
|
+
"ॷ" => "uue",
|
126
|
+
"ॸ" => "dd",
|
127
|
+
"ॹ" => "zh",
|
128
|
+
"ॺ" => "y",
|
129
|
+
"ॻ" => "gg",
|
130
|
+
"ॼ" => "jj",
|
131
|
+
"ॽ" => "?",
|
132
|
+
"ॾ" => "ddd",
|
133
|
+
"ॿ" => "bb"
|
134
|
+
}
|
135
|
+
end
|
136
|
+
end
|
137
|
+
end
|
@@ -20,6 +20,18 @@ module Babosa
|
|
20
20
|
def upcase(string)
|
21
21
|
ActiveSupport::Multibyte::Chars.new(string).upcase.to_s
|
22
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
|
23
35
|
end
|
24
36
|
end
|
25
37
|
end
|
data/lib/babosa/version.rb
CHANGED
data/spec/babosa_spec.rb
CHANGED
@@ -150,5 +150,9 @@ describe Babosa::Identifier do
|
|
150
150
|
# "1".to_identifier.to_ruby_method
|
151
151
|
expect {"1".to_identifier.to_ruby_method}.to raise_error(Babosa::Identifier::Error)
|
152
152
|
end
|
153
|
+
|
154
|
+
it "should raise Babosa::Error error when the string is nil" do
|
155
|
+
expect { "".to_slug.to_ruby_method }.to raise_error(Babosa::Identifier::Error)
|
156
|
+
end
|
153
157
|
end
|
154
|
-
end
|
158
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -33,4 +33,13 @@ shared_examples_for "a greek transliterator" do
|
|
33
33
|
string = "Γερμανία"
|
34
34
|
expect(t.transliterate(string)).to match(/[\x0-\x7f]/)
|
35
35
|
end
|
36
|
+
end
|
37
|
+
|
38
|
+
shared_examples_for "a hindi transliterator" do
|
39
|
+
let(:t) { described_class.instance }
|
40
|
+
|
41
|
+
it "should transliterate hindi characters" do
|
42
|
+
string = "आदित्य तापड़िया"
|
43
|
+
expect(t.transliterate(string)).to match(/[\x0-\x7f]/)
|
44
|
+
end
|
36
45
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require File.expand_path("../../spec_helper", __FILE__)
|
3
|
+
|
4
|
+
describe Babosa::Transliterator::Hindi do
|
5
|
+
|
6
|
+
let(:t) { described_class.instance }
|
7
|
+
it_behaves_like "a hindi transliterator"
|
8
|
+
|
9
|
+
it "should transliterate hindi characters" do
|
10
|
+
examples = {
|
11
|
+
"आदित्य" => "aadity",
|
12
|
+
"सबरीमाला करवाना पायसम" => "sbriimaalaa krvaanaa paaysm",
|
13
|
+
"सक्रांति आँख" => "skraanti aankh"
|
14
|
+
}
|
15
|
+
examples.each {|k, v| expect(t.transliterate(k)).to eql(v)}
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +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
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: babosa
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Norman Clarke
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-10-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -28,16 +28,16 @@ dependencies:
|
|
28
28
|
name: rspec
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 3.
|
33
|
+
version: 3.7.0
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 3.
|
40
|
+
version: 3.7.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: simplecov
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -102,6 +102,7 @@ files:
|
|
102
102
|
- lib/babosa/transliterator/danish.rb
|
103
103
|
- lib/babosa/transliterator/german.rb
|
104
104
|
- lib/babosa/transliterator/greek.rb
|
105
|
+
- lib/babosa/transliterator/hindi.rb
|
105
106
|
- lib/babosa/transliterator/latin.rb
|
106
107
|
- lib/babosa/transliterator/macedonian.rb
|
107
108
|
- lib/babosa/transliterator/norwegian.rb
|
@@ -110,6 +111,7 @@ files:
|
|
110
111
|
- lib/babosa/transliterator/serbian.rb
|
111
112
|
- lib/babosa/transliterator/spanish.rb
|
112
113
|
- lib/babosa/transliterator/swedish.rb
|
114
|
+
- lib/babosa/transliterator/turkish.rb
|
113
115
|
- lib/babosa/transliterator/ukrainian.rb
|
114
116
|
- lib/babosa/transliterator/vietnamese.rb
|
115
117
|
- lib/babosa/utf8/active_support_proxy.rb
|
@@ -126,6 +128,7 @@ files:
|
|
126
128
|
- spec/transliterators/danish_spec.rb
|
127
129
|
- spec/transliterators/german_spec.rb
|
128
130
|
- spec/transliterators/greek_spec.rb
|
131
|
+
- spec/transliterators/hindi_spec.rb
|
129
132
|
- spec/transliterators/latin_spec.rb
|
130
133
|
- spec/transliterators/macedonian_spec.rb
|
131
134
|
- spec/transliterators/norwegian_spec.rb
|
@@ -135,6 +138,7 @@ files:
|
|
135
138
|
- spec/transliterators/serbian_spec.rb
|
136
139
|
- spec/transliterators/spanish_spec.rb
|
137
140
|
- spec/transliterators/swedish_spec.rb
|
141
|
+
- spec/transliterators/turkish_spec.rb
|
138
142
|
- spec/transliterators/ukrainian_spec.rb
|
139
143
|
- spec/transliterators/vietnamese_spec.rb
|
140
144
|
- spec/utf8_proxy_spec.rb
|
@@ -156,8 +160,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
156
160
|
- !ruby/object:Gem::Version
|
157
161
|
version: '0'
|
158
162
|
requirements: []
|
159
|
-
|
160
|
-
rubygems_version: 2.4.4
|
163
|
+
rubygems_version: 3.1.2
|
161
164
|
signing_key:
|
162
165
|
specification_version: 4
|
163
166
|
summary: A library for creating slugs.
|