turkish_support 0.2.3 → 0.3.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.
- checksums.yaml +4 -4
- data/README.md +4 -12
- data/lib/turkish_support.rb +3 -10
- data/lib/turkish_support/{array/sort.rb → array_methods.rb} +0 -0
- data/lib/turkish_support/constants.rb +4 -3
- data/lib/turkish_support/{string/helpers.rb → string_helpers.rb} +13 -2
- data/lib/turkish_support/string_methods.rb +48 -0
- data/lib/turkish_support/version.rb +1 -1
- data/spec/turkish_support_spec.rb +41 -3
- metadata +6 -12
- data/lib/turkish_support/string/capitalize.rb +0 -7
- data/lib/turkish_support/string/casecmp.rb +0 -7
- data/lib/turkish_support/string/downcase.rb +0 -7
- data/lib/turkish_support/string/match.rb +0 -11
- data/lib/turkish_support/string/swapcase.rb +0 -13
- data/lib/turkish_support/string/titleize.rb +0 -16
- data/lib/turkish_support/string/upcase.rb +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f3b1088be5dda40f1dc4e4eb6fbb7d38db262f00
|
4
|
+
data.tar.gz: 9c43ab7aae842e4afb6dc9e816a62d856b0741e6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2163bef027f543a1e6b19ffd321f6be0f1b6a758191503672e454ab149451a6270fb1a7fc74974b76090ac7f055699aa7681a14b52f7498193bce811168b1589
|
7
|
+
data.tar.gz: 28bbd4b4e070ccc06359d3e6aa6eacfef69cd4c7b808ecf8221f0f33667f3bda4e3cbd4f2e97a35457988cb85274192417c8eba87791d25e04023a4cade80345
|
data/README.md
CHANGED
@@ -2,10 +2,10 @@
|
|
2
2
|
|
3
3
|
[](http://badge.fury.io/rb/turkish_support)
|
4
4
|
[](https://travis-ci.org/sbagdat/turkish_support)
|
5
|
+
[](https://gitter.im/sbagdat/turkish_support)
|
5
6
|
|
6
|
-
Turkish character support for some core ruby methods. This gem provide support for
|
7
|
-
`String#downcase`, `String#capitalize`, `String#swapcase`, `String#casecmp`, `String#match`, `Array#sort`, `Array#sort
|
8
|
-
and their destructive versions like `String#capitalize!`. It also gives you some bonus methods like `String#titleize`.
|
7
|
+
Turkish character support for some core ruby methods. This gem provide support for those methods: `String#upcase`,
|
8
|
+
`String#downcase`, `String#capitalize`, `String#swapcase`, `String#casecmp`, `String#match`, `Array#sort`, and their destructive versions like `Array#sort!` or `String#capitalize!`. It also gives you some bonus methods like `String#titleize`.
|
9
9
|
|
10
10
|
## Requirements
|
11
11
|
|
@@ -38,7 +38,7 @@ After the installation of the gem, you should follow these steps.
|
|
38
38
|
* Require the gem:
|
39
39
|
|
40
40
|
```ruby
|
41
|
-
require
|
41
|
+
require 'turkish_support'
|
42
42
|
```
|
43
43
|
|
44
44
|
* Add `using TurkishSupport` line to where you want to activate it.
|
@@ -47,14 +47,6 @@ After the installation of the gem, you should follow these steps.
|
|
47
47
|
using TurkishSupport
|
48
48
|
```
|
49
49
|
|
50
|
-
Example usage on the terminal:
|
51
|
-
|
52
|
-
```ruby
|
53
|
-
$ require 'turkish_support' #=> true
|
54
|
-
$ using TurkishSupport #=> main
|
55
|
-
$ 'içel'.upcase #=> "İÇEL"
|
56
|
-
```
|
57
|
-
|
58
50
|
Example usage inside a class:
|
59
51
|
|
60
52
|
```ruby
|
data/lib/turkish_support.rb
CHANGED
@@ -1,15 +1,8 @@
|
|
1
1
|
require "turkish_support/version"
|
2
|
-
|
3
2
|
require "turkish_support/constants"
|
4
|
-
require "turkish_support/
|
5
|
-
require "turkish_support/
|
6
|
-
require "turkish_support/
|
7
|
-
require "turkish_support/string/capitalize"
|
8
|
-
require "turkish_support/string/titleize"
|
9
|
-
require "turkish_support/string/casecmp"
|
10
|
-
require "turkish_support/string/swapcase"
|
11
|
-
require "turkish_support/string/match"
|
12
|
-
require "turkish_support/array/sort"
|
3
|
+
require "turkish_support/string_helpers"
|
4
|
+
require "turkish_support/string_methods"
|
5
|
+
require "turkish_support/array_methods"
|
13
6
|
require "turkish_support/destructives"
|
14
7
|
|
15
8
|
module TurkishSupport
|
File without changes
|
@@ -6,15 +6,16 @@ module TurkishSupport
|
|
6
6
|
UNSUPPORTED_UPCASE_CHARS = 'ÇĞIİÖŞÜ'
|
7
7
|
ORDERED_CHARS = UPCASED_ALPHABET + DOWNCASED_ALPHABET
|
8
8
|
|
9
|
-
DESTRUCTIVE_STRING_METHODS = %i(
|
9
|
+
DESTRUCTIVE_STRING_METHODS = %i(swapcase titleize)
|
10
10
|
DESTRUCTIVE_ARRAY_METHODS = %i(sort)
|
11
11
|
|
12
12
|
MATCH_TRANSFORMATIONS = {
|
13
|
-
'\w' =>
|
14
|
-
'\W' =>
|
13
|
+
'\w' => '[\p{Latin}\d_]',
|
14
|
+
'\W' => '[^\p{Latin}\d_]',
|
15
15
|
'a-z' => DOWNCASED_ALPHABET,
|
16
16
|
'A-Z' => UPCASED_ALPHABET
|
17
17
|
}
|
18
18
|
|
19
19
|
CONJUCTIONS = %w(ve ile veya)
|
20
|
+
SPECIAL_CHARS = %(\("')
|
20
21
|
end
|
@@ -1,6 +1,5 @@
|
|
1
1
|
module TurkishSupport
|
2
2
|
refine String do
|
3
|
-
|
4
3
|
def change_chars_for_upcase
|
5
4
|
tr UNSUPPORTED_DOWNCASE_CHARS, UNSUPPORTED_UPCASE_CHARS
|
6
5
|
end
|
@@ -9,6 +8,10 @@ module TurkishSupport
|
|
9
8
|
tr UNSUPPORTED_UPCASE_CHARS, UNSUPPORTED_DOWNCASE_CHARS
|
10
9
|
end
|
11
10
|
|
11
|
+
def change_chars_for_capitalize
|
12
|
+
[chr.change_chars_for_upcase.send(:upcase), self[1..-1].downcase].join
|
13
|
+
end
|
14
|
+
|
12
15
|
def unsupported_downcase?
|
13
16
|
UNSUPPORTED_DOWNCASE_CHARS.include? chr
|
14
17
|
end
|
@@ -23,7 +26,15 @@ module TurkishSupport
|
|
23
26
|
|
24
27
|
def transform_regex
|
25
28
|
MATCH_TRANSFORMATIONS.each { |k, v| self.gsub!(k, v) }
|
26
|
-
self
|
29
|
+
self.force_encoding("UTF-8")
|
30
|
+
end
|
31
|
+
|
32
|
+
def conjuction?
|
33
|
+
CONJUCTIONS.include? self
|
34
|
+
end
|
35
|
+
|
36
|
+
def start_with_a_special_char?
|
37
|
+
self =~ /^[#{SPECIAL_CHARS}]/
|
27
38
|
end
|
28
39
|
|
29
40
|
alias_method :words, :split
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module TurkishSupport
|
2
|
+
refine String do
|
3
|
+
%i{downcase downcase! upcase upcase! capitalize capitalize!}.each do |method_name|
|
4
|
+
non_destructive_method_name = method_name.to_s.chomp('!')
|
5
|
+
helper_method = instance_method("change_chars_for_#{non_destructive_method_name}")
|
6
|
+
define_method(method_name) do
|
7
|
+
str = helper_method.bind(self).call.public_send(non_destructive_method_name)
|
8
|
+
return method_name.to_s.end_with?('!') ? public_send(:replace, str) : str
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def titleize(conjuctions=true)
|
13
|
+
words.map do |word|
|
14
|
+
word.downcase!
|
15
|
+
if word.conjuction? && !conjuctions
|
16
|
+
word
|
17
|
+
elsif word.start_with_a_special_char?
|
18
|
+
word.chr + word[1..-1].capitalize
|
19
|
+
else
|
20
|
+
word.capitalize
|
21
|
+
end
|
22
|
+
end.join(' ')
|
23
|
+
end
|
24
|
+
|
25
|
+
def swapcase
|
26
|
+
chars.map do |ch|
|
27
|
+
if ch.unsupported?
|
28
|
+
ch.unsupported_downcase? ? ch.upcase : ch.downcase
|
29
|
+
else
|
30
|
+
ch.public_send(:swapcase)
|
31
|
+
end
|
32
|
+
end.join
|
33
|
+
end
|
34
|
+
|
35
|
+
def casecmp(other_string)
|
36
|
+
upcase.public_send(:casecmp, other_string.upcase)
|
37
|
+
end
|
38
|
+
|
39
|
+
%i[match scan =~].each do |method_name|
|
40
|
+
define_method(method_name) do |pattern|
|
41
|
+
Regexp.new(pattern) unless pattern.kind_of? Regexp
|
42
|
+
pattern, options = pattern.source, pattern.options
|
43
|
+
pattern = Regexp.new(pattern.transform_regex, Regexp::FIXEDENCODING | options)
|
44
|
+
public_send(method_name, pattern)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -4,7 +4,7 @@ using TurkishSupport
|
|
4
4
|
module TurkishSupport
|
5
5
|
describe VERSION do
|
6
6
|
it 'should have a version number' do
|
7
|
-
TurkishSupport::VERSION.
|
7
|
+
expect(TurkishSupport::VERSION).to_not eq(nil)
|
8
8
|
end
|
9
9
|
end
|
10
10
|
|
@@ -175,7 +175,7 @@ module TurkishSupport
|
|
175
175
|
expect('Aşağı Ayrancı'.match(/^\w+\s\w+$/).to_s).to eq('Aşağı Ayrancı')
|
176
176
|
end
|
177
177
|
|
178
|
-
it "matches Turkish characters when regex include
|
178
|
+
it "matches Turkish characters when regex include lowercase range" do
|
179
179
|
expect('aüvvağğ öövvaağ'.match(/^[a-z]+\s[a-z]+$/).to_s).to eq('aüvvağğ öövvaağ')
|
180
180
|
end
|
181
181
|
|
@@ -183,10 +183,48 @@ module TurkishSupport
|
|
183
183
|
expect('BAĞCIlar'.match(/[A-Z]+/).to_s).to eq('BAĞCI')
|
184
184
|
end
|
185
185
|
|
186
|
-
it "doesn't match Turkish characters when regex include '\\
|
186
|
+
it "doesn't match Turkish characters when regex include '\\W'" do
|
187
187
|
expect('Aşağı Ayrancı'.match(/\W+/).to_s).to eq(' ')
|
188
188
|
end
|
189
189
|
end
|
190
|
+
|
191
|
+
describe "#scan" do
|
192
|
+
it "matches Turkish characters when regex include '\\w'" do
|
193
|
+
expect(turkish_words.join(' ').scan(/\w+/)).to eq(turkish_words)
|
194
|
+
end
|
195
|
+
|
196
|
+
it "matches Turkish characters when regex include lowercase range" do
|
197
|
+
expect(turkish_words.join(' ').scan(/^[a-z\s]+$/)).to eq([turkish_words.join(' ')])
|
198
|
+
end
|
199
|
+
|
200
|
+
it "matches Turkish characters when regex include uppercase range" do
|
201
|
+
expect(turkish_words.join(' ').upcase.scan(/^[A-Z\s]+$/)).to eq([turkish_words.join(' ').upcase])
|
202
|
+
end
|
203
|
+
|
204
|
+
it "matches Turkish characters when regex include '\\w'" do
|
205
|
+
expect(turkish_words.join(' ').scan(/\W+/).map(&:strip).all?(&:empty?)).to eq(true)
|
206
|
+
end
|
207
|
+
end
|
208
|
+
|
209
|
+
describe "#=~" do
|
210
|
+
tr_chars = UNSUPPORTED_DOWNCASE_CHARS+UNSUPPORTED_UPCASE_CHARS
|
211
|
+
|
212
|
+
it "matches Turkish characters when regex include '\\w'" do
|
213
|
+
expect(tr_chars.split(//).all? {|ch| (ch =~ /\w/) == 0}).to eq(true)
|
214
|
+
end
|
215
|
+
|
216
|
+
it "matches Turkish characters when regex include lowercase range" do
|
217
|
+
expect(UNSUPPORTED_DOWNCASE_CHARS.split(//).all? {|ch| (ch =~ /[a-z]/) == 0}).to eq(true)
|
218
|
+
end
|
219
|
+
|
220
|
+
it "matches Turkish characters when regex include uppercase range" do
|
221
|
+
expect(UNSUPPORTED_UPCASE_CHARS.split(//).all? {|ch| (ch =~ /[A-Z]/) == 0}).to eq(true)
|
222
|
+
end
|
223
|
+
|
224
|
+
it "doesn't match Turkish characters when regex include '\\W'" do
|
225
|
+
expect(tr_chars.split(//).all? {|ch| (ch =~ /\W/).nil?}).to eq(true)
|
226
|
+
end
|
227
|
+
end
|
190
228
|
end
|
191
229
|
|
192
230
|
describe Array do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: turkish_support
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sıtkı Bağdat
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-02-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -68,17 +68,11 @@ files:
|
|
68
68
|
- README.md
|
69
69
|
- Rakefile
|
70
70
|
- lib/turkish_support.rb
|
71
|
-
- lib/turkish_support/
|
71
|
+
- lib/turkish_support/array_methods.rb
|
72
72
|
- lib/turkish_support/constants.rb
|
73
73
|
- lib/turkish_support/destructives.rb
|
74
|
-
- lib/turkish_support/
|
75
|
-
- lib/turkish_support/
|
76
|
-
- lib/turkish_support/string/downcase.rb
|
77
|
-
- lib/turkish_support/string/helpers.rb
|
78
|
-
- lib/turkish_support/string/match.rb
|
79
|
-
- lib/turkish_support/string/swapcase.rb
|
80
|
-
- lib/turkish_support/string/titleize.rb
|
81
|
-
- lib/turkish_support/string/upcase.rb
|
74
|
+
- lib/turkish_support/string_helpers.rb
|
75
|
+
- lib/turkish_support/string_methods.rb
|
82
76
|
- lib/turkish_support/version.rb
|
83
77
|
- spec/spec_helper.rb
|
84
78
|
- spec/turkish_support_spec.rb
|
@@ -103,7 +97,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
103
97
|
version: '0'
|
104
98
|
requirements: []
|
105
99
|
rubyforge_project:
|
106
|
-
rubygems_version: 2.
|
100
|
+
rubygems_version: 2.4.5
|
107
101
|
signing_key:
|
108
102
|
specification_version: 4
|
109
103
|
summary: Turkish character support for some core ruby methods.
|
@@ -1,16 +0,0 @@
|
|
1
|
-
module TurkishSupport
|
2
|
-
refine String do
|
3
|
-
def titleize(conjuctions=true)
|
4
|
-
words.map do |w|
|
5
|
-
w.downcase!
|
6
|
-
if CONJUCTIONS.include?(w) && !conjuctions
|
7
|
-
w
|
8
|
-
elsif w =~ /^[\("']/
|
9
|
-
w[0] + w[1..-1].capitalize
|
10
|
-
else
|
11
|
-
w.capitalize
|
12
|
-
end
|
13
|
-
end.join(' ')
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|