babosa 0.3.5 → 0.3.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.
- data/README.md +1 -0
- data/Rakefile +2 -2
- data/lib/babosa/identifier.rb +7 -3
- data/lib/babosa/transliterator/base.rb +1 -0
- data/lib/babosa/transliterator/greek.rb +73 -0
- data/lib/babosa/version.rb +1 -1
- data/spec/babosa_spec.rb +5 -0
- data/spec/spec_helper.rb +9 -0
- data/spec/transliterators/greek_spec.rb +17 -0
- metadata +46 -52
data/README.md
CHANGED
@@ -175,6 +175,7 @@ Please use Babosa's [Github issue tracker](http://github.com/norman/babosa/issue
|
|
175
175
|
|
176
176
|
## Changelog
|
177
177
|
|
178
|
+
* 0.3.6 - Allow multiple transliterators. Add Greek support.
|
178
179
|
* 0.3.5 - Don't strip underscores from identifiers.
|
179
180
|
* 0.3.4 - Add Romanian support.
|
180
181
|
* 0.3.3 - Add Norwegian support.
|
data/Rakefile
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require "rubygems"
|
2
2
|
require "rake/testtask"
|
3
3
|
require "rake/clean"
|
4
|
-
require "
|
4
|
+
require "rubygems/package_task"
|
5
5
|
|
6
6
|
task :default => :spec
|
7
7
|
task :test => :spec
|
@@ -27,7 +27,7 @@ end
|
|
27
27
|
|
28
28
|
gemspec = File.expand_path("../babosa.gemspec", __FILE__)
|
29
29
|
if File.exist? gemspec
|
30
|
-
|
30
|
+
Gem::PackageTask.new(eval(File.read(gemspec))) { |pkg| }
|
31
31
|
end
|
32
32
|
|
33
33
|
require 'rspec/core/rake_task'
|
data/lib/babosa/identifier.rb
CHANGED
@@ -112,9 +112,13 @@ module Babosa
|
|
112
112
|
# string.transliterate! # => "¡Feliz anio!"
|
113
113
|
# @param *args <Symbol>
|
114
114
|
# @return String
|
115
|
-
def transliterate!(
|
116
|
-
|
117
|
-
|
115
|
+
def transliterate!(*kinds)
|
116
|
+
kinds = [:latin] if kinds.empty?
|
117
|
+
kinds.each do |kind|
|
118
|
+
transliterator = Transliterator.get(kind).instance
|
119
|
+
@wrapped_string = transliterator.transliterate(@wrapped_string)
|
120
|
+
end
|
121
|
+
@wrapped_string
|
118
122
|
end
|
119
123
|
|
120
124
|
# Converts dashes to spaces, removes leading and trailing spaces, and
|
@@ -18,6 +18,7 @@ module Babosa
|
|
18
18
|
autoload :Serbian, "babosa/transliterator/serbian"
|
19
19
|
autoload :Spanish, "babosa/transliterator/spanish"
|
20
20
|
autoload :Ukrainian, "babosa/transliterator/ukrainian"
|
21
|
+
autoload :Greek, "babosa/transliterator/greek"
|
21
22
|
|
22
23
|
def self.get(symbol)
|
23
24
|
const_get(symbol.to_s.classify)
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module Babosa
|
3
|
+
module Transliterator
|
4
|
+
class Greek < Base
|
5
|
+
APPROXIMATIONS = {
|
6
|
+
"Α" => "A",
|
7
|
+
"Ά" => "A",
|
8
|
+
"α" => "a",
|
9
|
+
"ά" => "a",
|
10
|
+
"Β" => "B",
|
11
|
+
"β" => "b",
|
12
|
+
"Γ" => "G",
|
13
|
+
"γ" => "g",
|
14
|
+
"Δ" => "D",
|
15
|
+
"δ" => "d",
|
16
|
+
"Ε" => "E",
|
17
|
+
"Έ" => "E",
|
18
|
+
"ε" => "e",
|
19
|
+
"έ" => "e",
|
20
|
+
"Ζ" => "Z",
|
21
|
+
"ζ" => "z",
|
22
|
+
"Η" => "E",
|
23
|
+
"Ή" => "e",
|
24
|
+
"η" => "e",
|
25
|
+
"ή" => "E",
|
26
|
+
"Θ" => "Th",
|
27
|
+
"θ" => "th",
|
28
|
+
"Ι" => "I",
|
29
|
+
"Ί" => "Ι",
|
30
|
+
"Î" => "I",
|
31
|
+
"ι" => "i",
|
32
|
+
"ί" => "i",
|
33
|
+
"Κ" => "K",
|
34
|
+
"κ" => "k",
|
35
|
+
"Λ" => "L",
|
36
|
+
"λ" => "l",
|
37
|
+
"Μ" => "M",
|
38
|
+
"μ" => "m",
|
39
|
+
"Ν" => "N",
|
40
|
+
"ν" => "n",
|
41
|
+
"Ξ" => "X",
|
42
|
+
"ξ" => "x",
|
43
|
+
"Ο" => "O",
|
44
|
+
"Ό" => "O",
|
45
|
+
"ο" => "o",
|
46
|
+
"ό" => "o",
|
47
|
+
"Π" => "P",
|
48
|
+
"π" => "p",
|
49
|
+
"Ρ" => "R",
|
50
|
+
"ρ" => "r",
|
51
|
+
"Σ" => "S",
|
52
|
+
"σ" => "s",
|
53
|
+
"ς" => "s",
|
54
|
+
"Τ" => "T",
|
55
|
+
"τ" => "t",
|
56
|
+
"Υ" => "I",
|
57
|
+
"Ύ" => "I",
|
58
|
+
"υ" => "i",
|
59
|
+
"ύ" => "i",
|
60
|
+
"Φ" => "F",
|
61
|
+
"φ" => "f",
|
62
|
+
"Χ" => "Ch",
|
63
|
+
"χ" => "ch",
|
64
|
+
"Ψ" => "Ps",
|
65
|
+
"ψ" => "ps",
|
66
|
+
"Ω" => "O",
|
67
|
+
"Ώ" => "O",
|
68
|
+
"ω" => "o",
|
69
|
+
"ώ" => "o"
|
70
|
+
}
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
data/lib/babosa/version.rb
CHANGED
data/spec/babosa_spec.rb
CHANGED
@@ -34,6 +34,11 @@ describe Babosa::Identifier do
|
|
34
34
|
string = [117, 776].pack("U*") # "ü" as ASCII "u" plus COMBINING DIAERESIS
|
35
35
|
string.to_slug.approximate_ascii.should eql("u")
|
36
36
|
end
|
37
|
+
|
38
|
+
it "should transliterate using multiple transliterators" do
|
39
|
+
string = "свободное režģis"
|
40
|
+
string.to_slug.approximate_ascii(:latin, :russian).should eql("svobodnoe rezgis")
|
41
|
+
end
|
37
42
|
end
|
38
43
|
|
39
44
|
describe "#downcase" do
|
data/spec/spec_helper.rb
CHANGED
@@ -30,4 +30,13 @@ shared_examples_for "a cyrillic transliterator" do
|
|
30
30
|
string = "Славься, Отечество наше свободное"
|
31
31
|
t.transliterate(string).should match(/[\x0-\x7f]/)
|
32
32
|
end
|
33
|
+
end
|
34
|
+
|
35
|
+
shared_examples_for "a greek transliterator" do
|
36
|
+
let(:t) { described_class.instance }
|
37
|
+
|
38
|
+
it "should transliterate greek characters" do
|
39
|
+
string = "Γερμανία"
|
40
|
+
t.transliterate(string).should match(/[\x0-\x7f]/)
|
41
|
+
end
|
33
42
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require File.expand_path("../../spec_helper", __FILE__)
|
3
|
+
|
4
|
+
describe Babosa::Transliterator::Greek do
|
5
|
+
|
6
|
+
let(:t) { described_class.instance }
|
7
|
+
it_behaves_like "a greek transliterator"
|
8
|
+
|
9
|
+
it "should transliterate various characters" do
|
10
|
+
examples = {
|
11
|
+
"Γερμανία" => "Germania",
|
12
|
+
"Αυστρία" => "Aistria",
|
13
|
+
"Ιταλία" => "Italia"
|
14
|
+
}
|
15
|
+
examples.each {|k, v| t.transliterate(k).should eql(v)}
|
16
|
+
end
|
17
|
+
end
|
metadata
CHANGED
@@ -1,66 +1,64 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: babosa
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.3.6
|
4
5
|
prerelease:
|
5
|
-
version: 0.3.5
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Norman Clarke
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
dependencies:
|
16
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-01-07 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
17
15
|
name: activesupport
|
18
|
-
|
19
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &70212217120220 !ruby/object:Gem::Requirement
|
20
17
|
none: false
|
21
|
-
requirements:
|
22
|
-
- -
|
23
|
-
- !ruby/object:Gem::Version
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
24
21
|
version: 2.3.0
|
25
22
|
type: :development
|
26
|
-
version_requirements: *id001
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: rspec
|
29
23
|
prerelease: false
|
30
|
-
|
24
|
+
version_requirements: *70212217120220
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rspec
|
27
|
+
requirement: &70212217118700 !ruby/object:Gem::Requirement
|
31
28
|
none: false
|
32
|
-
requirements:
|
29
|
+
requirements:
|
33
30
|
- - ~>
|
34
|
-
- !ruby/object:Gem::Version
|
31
|
+
- !ruby/object:Gem::Version
|
35
32
|
version: 2.5.0
|
36
33
|
type: :development
|
37
|
-
version_requirements: *id002
|
38
|
-
- !ruby/object:Gem::Dependency
|
39
|
-
name: simplecov
|
40
34
|
prerelease: false
|
41
|
-
|
35
|
+
version_requirements: *70212217118700
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: simplecov
|
38
|
+
requirement: &70212217117820 !ruby/object:Gem::Requirement
|
42
39
|
none: false
|
43
|
-
requirements:
|
44
|
-
- -
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version:
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
47
44
|
type: :development
|
48
|
-
|
49
|
-
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70212217117820
|
47
|
+
description: ! " A library for creating slugs. Babosa an extraction and improvement
|
48
|
+
of the\n string code from FriendlyId, intended to help developers create similar\n
|
49
|
+
\ libraries or plugins.\n"
|
50
50
|
email: norman@njclarke.com
|
51
51
|
executables: []
|
52
|
-
|
53
52
|
extensions: []
|
54
|
-
|
55
53
|
extra_rdoc_files: []
|
56
|
-
|
57
|
-
files:
|
54
|
+
files:
|
58
55
|
- lib/babosa/identifier.rb
|
59
56
|
- lib/babosa/transliterator/base.rb
|
60
57
|
- lib/babosa/transliterator/bulgarian.rb
|
61
58
|
- lib/babosa/transliterator/cyrillic.rb
|
62
59
|
- lib/babosa/transliterator/danish.rb
|
63
60
|
- lib/babosa/transliterator/german.rb
|
61
|
+
- lib/babosa/transliterator/greek.rb
|
64
62
|
- lib/babosa/transliterator/latin.rb
|
65
63
|
- lib/babosa/transliterator/macedonian.rb
|
66
64
|
- lib/babosa/transliterator/norwegian.rb
|
@@ -87,6 +85,7 @@ files:
|
|
87
85
|
- spec/transliterators/bulgarian_spec.rb
|
88
86
|
- spec/transliterators/danish_spec.rb
|
89
87
|
- spec/transliterators/german_spec.rb
|
88
|
+
- spec/transliterators/greek_spec.rb
|
90
89
|
- spec/transliterators/macedonian_spec.rb
|
91
90
|
- spec/transliterators/norwegian_spec.rb
|
92
91
|
- spec/transliterators/romanian_spec.rb
|
@@ -96,33 +95,28 @@ files:
|
|
96
95
|
- spec/transliterators/ukrainian_spec.rb
|
97
96
|
- spec/utf8_proxy_spec.rb
|
98
97
|
- .gemtest
|
99
|
-
has_rdoc: true
|
100
98
|
homepage: http://norman.github.com/babosa
|
101
99
|
licenses: []
|
102
|
-
|
103
100
|
post_install_message:
|
104
101
|
rdoc_options: []
|
105
|
-
|
106
|
-
require_paths:
|
102
|
+
require_paths:
|
107
103
|
- lib
|
108
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
104
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
109
105
|
none: false
|
110
|
-
requirements:
|
111
|
-
- -
|
112
|
-
- !ruby/object:Gem::Version
|
113
|
-
version:
|
114
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
115
111
|
none: false
|
116
|
-
requirements:
|
117
|
-
- -
|
118
|
-
- !ruby/object:Gem::Version
|
119
|
-
version:
|
112
|
+
requirements:
|
113
|
+
- - ! '>='
|
114
|
+
- !ruby/object:Gem::Version
|
115
|
+
version: '0'
|
120
116
|
requirements: []
|
121
|
-
|
122
|
-
|
123
|
-
rubygems_version: 1.6.1
|
117
|
+
rubyforge_project: ! '[none]'
|
118
|
+
rubygems_version: 1.8.10
|
124
119
|
signing_key:
|
125
120
|
specification_version: 3
|
126
121
|
summary: A library for creating slugs.
|
127
122
|
test_files: []
|
128
|
-
|