turkish_support 0.1.2 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +100 -30
- data/lib/turkish_support.rb +2 -3
- data/lib/turkish_support/constants.rb +7 -0
- data/lib/turkish_support/string/capitalize.rb +1 -1
- data/lib/turkish_support/string/helpers.rb +5 -0
- data/lib/turkish_support/string/match.rb +11 -0
- data/lib/turkish_support/version.rb +1 -1
- data/spec/turkish_support_spec.rb +29 -0
- data/turkish_support.gemspec +2 -2
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e462ea6658063408935a25bab7ac3ec2b4b2ec30
|
4
|
+
data.tar.gz: 3067e7df0ac8d20abe546c1ef2c2b11341f7bd83
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ce620744b8b42db62a4dbb7b8d4cb0694145d18d3fc632a431f06479f2e8b9c85c7ef738627f0ebb211c701723caf0a581f6f2e2c0d9ee237b56bb014c53a200
|
7
|
+
data.tar.gz: 052a5c8edc082be0282c6412413cae98fddcf075f998ffffb346ed7d0efce472988b12ac44735a2b4f6139ca6bee310a3411400ef8dd16447858841f03ff4f67
|
data/README.md
CHANGED
@@ -3,22 +3,9 @@
|
|
3
3
|
[![Gem Version](https://badge.fury.io/rb/turkish_support.svg)](http://badge.fury.io/rb/turkish_support)
|
4
4
|
[![Build Status](https://travis-ci.org/sbagdat/turkish_support.svg?branch=master)](https://travis-ci.org/sbagdat/turkish_support)
|
5
5
|
|
6
|
-
Turkish character support for some
|
7
|
-
|
8
|
-
|
9
|
-
* `String#downcase`
|
10
|
-
* `String#downcase!`
|
11
|
-
* `String#capitalize`
|
12
|
-
* `String#capitalize!`
|
13
|
-
* `String#swapcase`
|
14
|
-
* `String#swapcase!`
|
15
|
-
* `String#casecmp`
|
16
|
-
* `Array#sort`
|
17
|
-
* `Array#sort!`
|
18
|
-
|
19
|
-
Also gives you some new methods like:
|
20
|
-
* `String#titleize`
|
21
|
-
* `String#titleize!`
|
6
|
+
Turkish character support for some core ruby methods. This gem provide support for these methods: `String#upcase`,
|
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`.
|
22
9
|
|
23
10
|
## Requirements
|
24
11
|
|
@@ -46,46 +33,129 @@ Or install it yourself as:
|
|
46
33
|
|
47
34
|
After the installation of the gem, you should follow these steps.
|
48
35
|
|
49
|
-
|
36
|
+
### Using with ruby
|
50
37
|
|
51
|
-
|
38
|
+
* Require the gem:
|
52
39
|
|
53
40
|
```ruby
|
54
41
|
require TurkishSupport
|
55
42
|
```
|
56
43
|
|
57
|
-
* Add `using TurkishSupport` line to
|
44
|
+
* Add `using TurkishSupport` line to where you want to activate it.
|
58
45
|
|
59
46
|
```ruby
|
60
|
-
using
|
47
|
+
using TurkishSupport
|
48
|
+
```
|
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
|
+
Example usage inside a class:
|
59
|
+
|
60
|
+
```ruby
|
61
|
+
require 'turkish_support'
|
62
|
+
|
63
|
+
class Test
|
64
|
+
using TurkishSupport
|
65
|
+
def up_me(str)
|
66
|
+
str.upcase
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
Test.new.up_me('içel') #=> "İÇEL"
|
71
|
+
```
|
72
|
+
|
73
|
+
### Using with rails
|
74
|
+
|
75
|
+
__Note:__ You don't need to require, because it is already required by the rails.
|
76
|
+
|
77
|
+
* In rails you must add `using TurkishSupport` line to the top of the scope, __not inside of any class or module__.
|
78
|
+
|
79
|
+
```ruby
|
80
|
+
using TurkishSupport
|
81
|
+
|
82
|
+
class SampleModel
|
83
|
+
...
|
84
|
+
end
|
61
85
|
```
|
62
86
|
|
63
87
|
## Examples
|
64
88
|
|
65
|
-
Within the file
|
89
|
+
Within the file that you added `using TurkishSupport` line; you can use the core methods like below:
|
90
|
+
|
91
|
+
__String#upcase__ and __String#upcase!__
|
66
92
|
|
67
93
|
```ruby
|
68
94
|
str = 'Bağcılar'
|
69
|
-
str.upcase #=> "BAĞCILAR"
|
70
|
-
str #=> "Bağcılar"
|
71
95
|
|
72
|
-
str
|
73
|
-
str
|
74
|
-
str #=> "ismail"
|
96
|
+
str.upcase #=> "BAĞCILAR"
|
97
|
+
str #=> "Bağcılar"
|
75
98
|
|
76
|
-
|
99
|
+
str.upcase! #=> "BAĞCILAR"
|
100
|
+
str #=> "BAĞCILAR"
|
101
|
+
```
|
102
|
+
|
103
|
+
__String#downcase__ and __String#downcase!__
|
77
104
|
|
78
|
-
|
105
|
+
```ruby
|
106
|
+
str = 'İSMAİL'
|
107
|
+
str.downcase #=> "ismail"
|
79
108
|
```
|
80
109
|
|
81
|
-
|
110
|
+
__String#capitalize__ and __String#capitalize!__
|
111
|
+
|
112
|
+
```ruby
|
113
|
+
str = 'türkÇE desteĞİ'
|
114
|
+
str.capitalize #=> "Türkçe desteği"
|
115
|
+
```
|
116
|
+
|
117
|
+
__String#swapcase__ and __String#swapcase!__
|
118
|
+
```ruby
|
119
|
+
'TuğÇE'.swapcase #=> "tUĞçe"
|
120
|
+
```
|
121
|
+
|
122
|
+
__String#casecmp__
|
123
|
+
```ruby
|
124
|
+
'sıtKI'.casecmp('SITkı') #=> 0
|
125
|
+
```
|
126
|
+
|
127
|
+
__String#match__
|
128
|
+
|
129
|
+
```ruby
|
130
|
+
'Aşağı'.match(/\w+/) #=> #<MatchData "Aşağı">
|
131
|
+
'Aşağı Ayrancı'.match(/^\w+\s\w+$/) #=> #<MatchData "Aşağı Ayrancı">
|
132
|
+
'aüvvağğ öövvaağ'.match(/^[a-z]+\s[a-z]+$/) #=> #<MatchData "aüvvağğ öövvaağ">
|
133
|
+
'BAĞCIlar'.match(/[A-Z]+/) #=> #<MatchData "BAĞCI">
|
134
|
+
'Aşağı Ayrancı'.match(/\W+/) #=> #<MatchData "">
|
135
|
+
```
|
136
|
+
|
137
|
+
__Array#sort__ and __Array#sort!__
|
138
|
+
|
139
|
+
```ruby
|
140
|
+
%w(iki üç dört ılık iğne iyne).sort
|
141
|
+
#=> ["dört", "ılık", "iğne", "iki", "iyne", "üç"]
|
142
|
+
```
|
143
|
+
|
144
|
+
__String#titleize__ and __String#titleize!__
|
145
|
+
|
146
|
+
These methods are not core methods of ruby, but they are accepted as useful in most situation.
|
147
|
+
|
148
|
+
```ruby
|
149
|
+
'türkÇE desteĞİ'.titleize #=> "Türkçe Desteği"
|
150
|
+
```
|
151
|
+
|
152
|
+
__Important Note:__ If you also want to use original set of the core methods in the same scope, you can use `send` method like this:
|
82
153
|
|
83
154
|
```ruby
|
84
155
|
str = 'Bağcılar'
|
85
156
|
str.send(:upcase) #=> "BAğCıLAR"
|
86
157
|
```
|
87
158
|
|
88
|
-
|
89
159
|
## Contributing
|
90
160
|
|
91
161
|
1. Fork it ( http://github.com/sbagdat/turkish_support/fork )
|
data/lib/turkish_support.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
require "turkish_support/constants"
|
2
1
|
require "turkish_support/version"
|
3
2
|
|
3
|
+
require "turkish_support/constants"
|
4
4
|
require "turkish_support/string/helpers"
|
5
5
|
require "turkish_support/string/upcase"
|
6
6
|
require "turkish_support/string/downcase"
|
@@ -8,9 +8,8 @@ require "turkish_support/string/capitalize"
|
|
8
8
|
require "turkish_support/string/titleize"
|
9
9
|
require "turkish_support/string/casecmp"
|
10
10
|
require "turkish_support/string/swapcase"
|
11
|
-
|
11
|
+
require "turkish_support/string/match"
|
12
12
|
require "turkish_support/array/sort"
|
13
|
-
|
14
13
|
require "turkish_support/destructives"
|
15
14
|
|
16
15
|
module TurkishSupport
|
@@ -8,4 +8,11 @@ module TurkishSupport
|
|
8
8
|
|
9
9
|
DESTRUCTIVE_STRING_METHODS = %i(capitalize downcase swapcase titleize upcase)
|
10
10
|
DESTRUCTIVE_ARRAY_METHODS = %i(sort)
|
11
|
+
|
12
|
+
MATCH_TRANSFORMATIONS = {
|
13
|
+
'\w' => "[#{'\w'}#{UNSUPPORTED_DOWNCASE_CHARS}#{UNSUPPORTED_UPCASE_CHARS}]",
|
14
|
+
'\W' => "[#{'^\w\d_'}#{UNSUPPORTED_DOWNCASE_CHARS}#{UNSUPPORTED_UPCASE_CHARS}]",
|
15
|
+
'a-z' => DOWNCASED_ALPHABET,
|
16
|
+
'A-Z' => UPCASED_ALPHABET
|
17
|
+
}
|
11
18
|
end
|
@@ -77,6 +77,11 @@ module TurkishSupport
|
|
77
77
|
expect(capitalized_words).to eq(%w[Çamur Ihlamur İnsan Ördek Şahika Ümraniye])
|
78
78
|
end
|
79
79
|
|
80
|
+
it "capitalizes the first character of a string and downcase others" do
|
81
|
+
capitalized_words = turkish_words.map{ |w| w.capitalize }
|
82
|
+
expect('türkÇE desteĞİ'.capitalize).to eq('Türkçe desteği')
|
83
|
+
end
|
84
|
+
|
80
85
|
it "capitalizes the first character of an English string" do
|
81
86
|
english_word = "spy"
|
82
87
|
capitalized_string = english_word.capitalize
|
@@ -98,6 +103,11 @@ module TurkishSupport
|
|
98
103
|
result = downcased_turkish_alphabet.casecmp(upcased_turkish_alphabet)
|
99
104
|
expect(result).to be_zero
|
100
105
|
end
|
106
|
+
|
107
|
+
it "compares Turkish characters correctly" do
|
108
|
+
result = downcased_turkish_alphabet.casecmp(upcased_turkish_alphabet)
|
109
|
+
expect('sıtkı'.casecmp('SıTKI')).to eq(0)
|
110
|
+
end
|
101
111
|
end
|
102
112
|
|
103
113
|
describe "#titleize" do
|
@@ -148,6 +158,25 @@ module TurkishSupport
|
|
148
158
|
end
|
149
159
|
end
|
150
160
|
end
|
161
|
+
|
162
|
+
describe "#match" do
|
163
|
+
it "matches Turkish characters when regex include '\\w'" do
|
164
|
+
expect('Aşağı'.match(/\w+/).to_s).to eq('Aşağı')
|
165
|
+
expect('Aşağı Ayrancı'.match(/^\w+\s\w+$/).to_s).to eq('Aşağı Ayrancı')
|
166
|
+
end
|
167
|
+
|
168
|
+
it "matches Turkish characters when regex include smallcase range" do
|
169
|
+
expect('aüvvağğ öövvaağ'.match(/^[a-z]+\s[a-z]+$/).to_s).to eq('aüvvağğ öövvaağ')
|
170
|
+
end
|
171
|
+
|
172
|
+
it "matches Turkish characters when regex include uppercase range" do
|
173
|
+
expect('BAĞCIlar'.match(/[A-Z]+/).to_s).to eq('BAĞCI')
|
174
|
+
end
|
175
|
+
|
176
|
+
it "doesn't match Turkish characters when regex include '\\w'" do
|
177
|
+
expect('Aşağı Ayrancı'.match(/\W+/).to_s).to eq(' ')
|
178
|
+
end
|
179
|
+
end
|
151
180
|
end
|
152
181
|
|
153
182
|
describe Array do
|
data/turkish_support.gemspec
CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.version = TurkishSupport::VERSION
|
9
9
|
spec.authors = ["Sıtkı Bağdat"]
|
10
10
|
spec.email = ["sbagdat@gmail.com"]
|
11
|
-
spec.summary = %q{Turkish character support for some
|
12
|
-
spec.description = %q{Turkish character support for some
|
11
|
+
spec.summary = %q{Turkish character support for some core ruby methods.}
|
12
|
+
spec.description = %q{Turkish character support for some core ruby methods like String#upcase, String#downcase, String#match, Array#sort, and etc...}
|
13
13
|
spec.homepage = "https://github.com/sbagdat/turkish_support"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
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.2.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: 2014-04-
|
11
|
+
date: 2014-04-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -52,8 +52,8 @@ dependencies:
|
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
-
description:
|
56
|
-
#downcase,
|
55
|
+
description: Turkish character support for some core ruby methods like String#upcase,
|
56
|
+
String#downcase, String#match, Array#sort, and etc...
|
57
57
|
email:
|
58
58
|
- sbagdat@gmail.com
|
59
59
|
executables: []
|
@@ -76,6 +76,7 @@ files:
|
|
76
76
|
- lib/turkish_support/string/destructives.rb
|
77
77
|
- lib/turkish_support/string/downcase.rb
|
78
78
|
- lib/turkish_support/string/helpers.rb
|
79
|
+
- lib/turkish_support/string/match.rb
|
79
80
|
- lib/turkish_support/string/swapcase.rb
|
80
81
|
- lib/turkish_support/string/titleize.rb
|
81
82
|
- lib/turkish_support/string/upcase.rb
|
@@ -106,7 +107,7 @@ rubyforge_project:
|
|
106
107
|
rubygems_version: 2.2.2
|
107
108
|
signing_key:
|
108
109
|
specification_version: 4
|
109
|
-
summary: Turkish character support for some
|
110
|
+
summary: Turkish character support for some core ruby methods.
|
110
111
|
test_files:
|
111
112
|
- spec/spec_helper.rb
|
112
113
|
- spec/turkish_support_spec.rb
|