turkish_support 1.0.2 → 1.0.3
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/LICENSE.txt +1 -1
- data/lib/turkish_support/constants.rb +7 -10
- data/lib/turkish_support/helpers.rb +4 -3
- data/lib/turkish_support/string_methods.rb +2 -2
- data/lib/turkish_support/version.rb +1 -1
- data/spec/helpers_spec.rb +48 -50
- data/spec/turkish_support_spec.rb +102 -134
- data/turkish_support.gemspec +2 -3
- 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: f32fd6d6257f27898afd35c8d22ce950311a02fa
|
4
|
+
data.tar.gz: a01d88e348deaf13f0a195c9ae96a3354dc803da
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a1c2449108b61d8d3ba128bec8c1ebc87ca117325f39ad5b4745b746990567bc0f41d975deea1a3879b6b102f350664a0ffe8f89540b3e67c42cd44947101fb3
|
7
|
+
data.tar.gz: 4c37ee949de4244d45d0d10fa041691c5e3fee00a7f2936068acb2d34f976e28ba6fae4e291631ca0bedaeb63ec524295240987c27923c1611adca6feca78063
|
data/LICENSE.txt
CHANGED
@@ -4,20 +4,17 @@ module TurkishSupportHelpers
|
|
4
4
|
upper: 'ABCÇDEFGĞHIİJKLMNOÖPQRSŞTUÜVWXYZ',
|
5
5
|
tr_lower: 'çğıiöşü',
|
6
6
|
tr_upper: 'ÇĞIİÖŞÜ'
|
7
|
-
}
|
7
|
+
}.freeze
|
8
8
|
|
9
9
|
ALPHABET = ALPHA[:upper] + ALPHA[:lower]
|
10
10
|
|
11
11
|
META_CHARS = {
|
12
12
|
'\w' => '[\p{Latin}\d_]',
|
13
13
|
'\W' => '[^\p{Latin}\d_]'
|
14
|
-
}
|
14
|
+
}.freeze
|
15
15
|
|
16
16
|
# Regexp required methods
|
17
|
-
RE_RE_METHS = %i(
|
18
|
-
match
|
19
|
-
scan
|
20
|
-
)
|
17
|
+
RE_RE_METHS = %i(match scan).freeze
|
21
18
|
|
22
19
|
# Regexp optional methods
|
23
20
|
RE_OP_METHS = %i(
|
@@ -35,7 +32,7 @@ module TurkishSupportHelpers
|
|
35
32
|
sub!
|
36
33
|
gsub
|
37
34
|
gsub!
|
38
|
-
)
|
35
|
+
).freeze
|
39
36
|
|
40
37
|
CASE_RELATED_METHS = %i(
|
41
38
|
downcase
|
@@ -44,11 +41,11 @@ module TurkishSupportHelpers
|
|
44
41
|
upcase!
|
45
42
|
capitalize
|
46
43
|
capitalize!
|
47
|
-
)
|
44
|
+
).freeze
|
48
45
|
|
49
46
|
RANGE_REGEXP = /\[[^\]]*?([#{ALPHABET}]-[#{ALPHABET}])[^\[]*?\]/
|
50
47
|
|
51
|
-
CONJUCTIONS = %w(ve ile veya)
|
48
|
+
CONJUCTIONS = %w(ve ile veya).freeze
|
52
49
|
|
53
|
-
SPECIAL_CHARS = %q{("'}
|
50
|
+
SPECIAL_CHARS = %q{("'}.freeze
|
54
51
|
end
|
@@ -1,7 +1,8 @@
|
|
1
1
|
module TurkishSupportHelpers
|
2
2
|
def translate_regexp(pattern) # rubocop:disable Metrics/AbcSize
|
3
3
|
Regexp.new(pattern) unless pattern.is_a? Regexp
|
4
|
-
re
|
4
|
+
re = pattern.source
|
5
|
+
options = pattern.options
|
5
6
|
|
6
7
|
while re.match(RANGE_REGEXP)
|
7
8
|
re.scan(RANGE_REGEXP).flatten.compact.each do |matching|
|
@@ -25,7 +26,7 @@ module TurkishSupportHelpers
|
|
25
26
|
def prepare_for(meth, string)
|
26
27
|
valid_meths = %i(upcase downcase capitalize)
|
27
28
|
unless valid_meths.include?(meth) && string.is_a?(String)
|
28
|
-
|
29
|
+
raise ArgumentError, 'Invalid arguments for method `prepare_for`!'
|
29
30
|
end
|
30
31
|
|
31
32
|
method("prepare_for_#{meth}").call(string)
|
@@ -74,7 +75,7 @@ module TurkishSupportHelpers
|
|
74
75
|
elsif upper.include?(first) && upper.include?(last)
|
75
76
|
upcase_range(first, last, casefold)
|
76
77
|
else
|
77
|
-
|
78
|
+
raise ArgumentError, 'Invalid regexp range arguments!'
|
78
79
|
end
|
79
80
|
end
|
80
81
|
|
@@ -21,13 +21,13 @@ module TurkishSupport
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
-
def titleize(conjuctions = true)
|
24
|
+
def titleize(conjuctions = true) # rubocop:disable Metrics/AbcSize
|
25
25
|
split.map do |word|
|
26
26
|
word.downcase!
|
27
27
|
if conjuction?(word) && !conjuctions
|
28
28
|
word
|
29
29
|
elsif start_with_a_special_char?(word)
|
30
|
-
word.size > 1 ? word
|
30
|
+
word.size > 1 ? word[0] + word[1..-1].capitalize : word.chr
|
31
31
|
else
|
32
32
|
word.capitalize
|
33
33
|
end
|
data/spec/helpers_spec.rb
CHANGED
@@ -71,24 +71,24 @@ describe 'TurkishSupportHelpers' do
|
|
71
71
|
context 'returns false' do
|
72
72
|
it 'for non-Turkish specific lower case characters' do
|
73
73
|
expect(downcased_alphabet
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
74
|
+
.delete(tr_specific_lower)
|
75
|
+
.chars
|
76
|
+
.any? { |ch| tr_lower?(ch) }
|
77
|
+
).to eq(false)
|
78
78
|
end
|
79
79
|
|
80
80
|
it 'for any upper case characters' do
|
81
81
|
expect(upcased_alphabet
|
82
|
-
|
83
|
-
|
84
|
-
|
82
|
+
.chars
|
83
|
+
.any? { |ch| tr_lower?(ch) }
|
84
|
+
).to eq(false)
|
85
85
|
end
|
86
86
|
|
87
87
|
it 'for non-letter characters' do
|
88
88
|
expect("\"é1!2'3^+4.,-_"
|
89
|
-
|
90
|
-
|
91
|
-
|
89
|
+
.chars
|
90
|
+
.any? { |ch| tr_lower?(ch) }
|
91
|
+
).to eq(false)
|
92
92
|
end
|
93
93
|
end
|
94
94
|
end
|
@@ -96,32 +96,32 @@ describe 'TurkishSupportHelpers' do
|
|
96
96
|
describe '#tr_upper?' do
|
97
97
|
it 'returns true for any Turkish specific upper case character' do
|
98
98
|
expect(tr_specific_upper
|
99
|
-
|
100
|
-
|
101
|
-
|
99
|
+
.chars
|
100
|
+
.all? { |ch| tr_upper?(ch) }
|
101
|
+
).to eq(true)
|
102
102
|
end
|
103
103
|
|
104
104
|
context 'returns false' do
|
105
105
|
it 'for non-Turkish specific upper case characters' do
|
106
106
|
expect(upcased_alphabet
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
107
|
+
.delete(tr_specific_upper)
|
108
|
+
.chars
|
109
|
+
.any? { |ch| tr_upper?(ch) }
|
110
|
+
).to eq(false)
|
111
111
|
end
|
112
112
|
|
113
113
|
it 'for any lower case characters' do
|
114
114
|
expect(downcased_alphabet
|
115
|
-
|
116
|
-
|
117
|
-
|
115
|
+
.chars
|
116
|
+
.any? { |ch| tr_upper?(ch) }
|
117
|
+
).to eq(false)
|
118
118
|
end
|
119
119
|
|
120
120
|
it 'for non-letter characters' do
|
121
121
|
expect("\"é1!2'3^+4.,-_"
|
122
|
-
|
123
|
-
|
124
|
-
|
122
|
+
.chars
|
123
|
+
.any? { |ch| tr_upper?(ch) }
|
124
|
+
).to eq(false)
|
125
125
|
end
|
126
126
|
end
|
127
127
|
end
|
@@ -129,24 +129,24 @@ describe 'TurkishSupportHelpers' do
|
|
129
129
|
describe '#tr_char?' do
|
130
130
|
it 'returns true for any Turkish specific character' do
|
131
131
|
expect(tr_all
|
132
|
-
|
133
|
-
|
134
|
-
|
132
|
+
.chars
|
133
|
+
.all? { |ch| tr_char?(ch) }
|
134
|
+
).to eq(true)
|
135
135
|
end
|
136
136
|
|
137
137
|
context 'returns false' do
|
138
138
|
it 'for non-Turkish specific characters' do
|
139
139
|
expect(alphabet.delete(tr_all)
|
140
|
-
|
141
|
-
|
142
|
-
|
140
|
+
.chars
|
141
|
+
.any? { |ch| tr_char?(ch) }
|
142
|
+
).to eq(false)
|
143
143
|
end
|
144
144
|
|
145
145
|
it 'for non-letter characters' do
|
146
146
|
expect("\"é1!2'3^+4.,-_"
|
147
|
-
|
148
|
-
|
149
|
-
|
147
|
+
.chars
|
148
|
+
.any? { |ch| tr_char?(ch) }
|
149
|
+
).to eq(false)
|
150
150
|
end
|
151
151
|
end
|
152
152
|
end
|
@@ -154,14 +154,14 @@ describe 'TurkishSupportHelpers' do
|
|
154
154
|
describe '#conjuction?' do
|
155
155
|
it 'returns true for any conjuction' do
|
156
156
|
expect(conjuctions
|
157
|
-
|
158
|
-
|
157
|
+
.all? { |c| conjuction?(c) }
|
158
|
+
).to eq(true)
|
159
159
|
end
|
160
160
|
|
161
161
|
it 'returns false for any word contains conjuction' do
|
162
162
|
expect(%w(veda aile veyahut)
|
163
|
-
|
164
|
-
|
163
|
+
.any? { |c| conjuction?(c) }
|
164
|
+
).to eq(false)
|
165
165
|
end
|
166
166
|
end
|
167
167
|
|
@@ -169,37 +169,35 @@ describe 'TurkishSupportHelpers' do
|
|
169
169
|
it 'returns true for all words starts with a special char' do
|
170
170
|
special_words = turkish_words.map { |w| special_chars.sample + w }
|
171
171
|
expect(special_words
|
172
|
-
|
173
|
-
|
172
|
+
.all? { |word| start_with_a_special_char?(word) }
|
173
|
+
).to eq(true)
|
174
174
|
end
|
175
175
|
|
176
176
|
it 'returns false any words not starts with a special char' do
|
177
177
|
expect(turkish_words
|
178
|
-
|
179
|
-
|
178
|
+
.any? { |word| start_with_a_special_char?(word) }
|
179
|
+
).to eq(false)
|
180
180
|
end
|
181
181
|
end
|
182
182
|
|
183
183
|
describe '#translate_range' do
|
184
184
|
it 'translates a complete lower-case range correctly' do
|
185
|
-
expect(translate_range('a-z'))
|
186
|
-
.to eq(downcased_alphabet)
|
185
|
+
expect(translate_range('a-z')).to eq(downcased_alphabet)
|
187
186
|
end
|
188
187
|
|
189
188
|
it 'translates a complete upper-case range correctly' do
|
190
|
-
expect(translate_range('A-Z'))
|
191
|
-
.to eq(upcased_alphabet)
|
189
|
+
expect(translate_range('A-Z')).to eq(upcased_alphabet)
|
192
190
|
end
|
193
191
|
|
194
192
|
it 'raises an error if any arguments not a letter' do
|
195
193
|
invalid_arguments = %w(1-Z A-9 1-9 a-])
|
196
194
|
expect(invalid_arguments
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
195
|
+
.all? do |arg|
|
196
|
+
expect { translate_range(arg) }
|
197
|
+
.to raise_error ArgumentError,
|
198
|
+
'Invalid regexp range arguments!'
|
199
|
+
end
|
200
|
+
).to eq(true)
|
203
201
|
end
|
204
202
|
|
205
203
|
it 'raises an error if arguments are not in same case' do
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
using TurkishSupport
|
3
3
|
|
4
|
-
module TurkishSupport
|
4
|
+
module TurkishSupport # rubocop:disable Metrics/ModuleLength
|
5
5
|
describe VERSION do
|
6
6
|
it 'should have a version number' do
|
7
7
|
expect(TurkishSupport::VERSION).to_not eq(nil)
|
@@ -29,18 +29,17 @@ module TurkishSupport
|
|
29
29
|
|
30
30
|
it 'is able to capture Turkish characters' do
|
31
31
|
expect(turkish_words
|
32
|
-
|
33
|
-
|
32
|
+
.all? { |w| w[/\w+/] == w }
|
33
|
+
).to eq(true)
|
34
34
|
|
35
35
|
expect(turkish_words
|
36
|
-
|
37
|
-
|
36
|
+
.all? { |w| w[/[a-z]+/] == w }
|
37
|
+
).to eq(true)
|
38
38
|
|
39
|
-
expect(
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
).to eq(true)
|
39
|
+
expect(turkish_words
|
40
|
+
.map(&:upcase)
|
41
|
+
.all? { |w| w[/[a-z]+/i] == w }
|
42
|
+
).to eq(true)
|
44
43
|
end
|
45
44
|
end
|
46
45
|
|
@@ -67,53 +66,50 @@ module TurkishSupport
|
|
67
66
|
|
68
67
|
it 'is able to capture Turkish characters' do
|
69
68
|
expect(turkish_words
|
70
|
-
|
71
|
-
|
69
|
+
.all? { |w| w.index(/\w+/).zero? }
|
70
|
+
).to eq(true)
|
72
71
|
|
73
72
|
expect(turkish_words
|
74
|
-
|
75
|
-
|
73
|
+
.all? { |w| w.index(/[a-z]+/).zero? }
|
74
|
+
).to eq(true)
|
76
75
|
|
77
76
|
expect(turkish_words
|
78
|
-
|
79
|
-
|
80
|
-
|
77
|
+
.map(&:upcase)
|
78
|
+
.all? { |w| w.index(/[a-z]+/i).zero? }
|
79
|
+
).to eq(true)
|
81
80
|
end
|
82
81
|
|
83
82
|
it 'begins to search from the right position' do
|
84
|
-
expect('şç-!+*/-ğüı'.index(/\w+/, 2))
|
85
|
-
.to eq(8)
|
83
|
+
expect('şç-!+*/-ğüı'.index(/\w+/, 2)).to eq(8)
|
86
84
|
end
|
87
85
|
end
|
88
86
|
|
89
87
|
describe '#rindex' do
|
90
88
|
it 'does not change the original value of the string' do
|
91
89
|
word = turkish_words.sample
|
92
|
-
expect { word.rindex(/\w+/) }
|
93
|
-
.to_not change { word }
|
90
|
+
expect { word.rindex(/\w+/) }.to_not change { word }
|
94
91
|
end
|
95
92
|
|
96
93
|
it 'is able to capture Turkish characters' do
|
97
94
|
expect(turkish_words
|
98
|
-
|
99
|
-
|
100
|
-
|
95
|
+
.map(&:reverse)
|
96
|
+
.all? { |w| w.rindex(/\w+/) == w.size - 1 }
|
97
|
+
).to eq(true)
|
101
98
|
|
102
99
|
expect(turkish_words
|
103
|
-
|
104
|
-
|
105
|
-
|
100
|
+
.map(&:reverse)
|
101
|
+
.all? { |w| w.rindex(/[a-z]+/) == w.size - 1 }
|
102
|
+
).to eq(true)
|
106
103
|
|
107
104
|
expect(turkish_words
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
105
|
+
.map(&:upcase)
|
106
|
+
.map(&:reverse)
|
107
|
+
.all? { |w| w.rindex(/[a-z]+/i) == w.size - 1 }
|
108
|
+
).to eq(true)
|
112
109
|
end
|
113
110
|
|
114
111
|
it 'finishes the searching to the right position' do
|
115
|
-
expect('şç-!+*/-ğüı'.rindex(/\w+/, 7))
|
116
|
-
.to eq(1)
|
112
|
+
expect('şç-!+*/-ğüı'.rindex(/\w+/, 7)).to eq(1)
|
117
113
|
end
|
118
114
|
end
|
119
115
|
|
@@ -123,13 +119,11 @@ module TurkishSupport
|
|
123
119
|
let(:two_words) { "#{word1} #{word2}" }
|
124
120
|
|
125
121
|
it 'does not change the original value of the string' do
|
126
|
-
expect { two_words.partition(/\W+/) }
|
127
|
-
.to_not change { two_words }
|
122
|
+
expect { two_words.partition(/\W+/) }.to_not change { two_words }
|
128
123
|
end
|
129
124
|
|
130
125
|
it 'is able to capture Turkish characters' do
|
131
|
-
expect(two_words.partition(/\W+/)
|
132
|
-
).to eq([word1, ' ', word2])
|
126
|
+
expect(two_words.partition(/\W+/)).to eq([word1, ' ', word2])
|
133
127
|
end
|
134
128
|
end
|
135
129
|
|
@@ -140,8 +134,7 @@ module TurkishSupport
|
|
140
134
|
let(:three_words) { "#{word1} #{word2} #{word3}" }
|
141
135
|
|
142
136
|
it 'does not change the original value of the string' do
|
143
|
-
expect { three_words.rpartition(/\W+/) }
|
144
|
-
.to_not change { three_words }
|
137
|
+
expect { three_words.rpartition(/\W+/) }.to_not change { three_words }
|
145
138
|
end
|
146
139
|
|
147
140
|
it 'is able to capture Turkish characters' do
|
@@ -154,24 +147,22 @@ module TurkishSupport
|
|
154
147
|
context 'with non-destructive version' do
|
155
148
|
it 'does not change the original value of the string' do
|
156
149
|
sentence = turkish_words * ' '
|
157
|
-
|
158
|
-
expect { sentence.slice(/\w+/) }
|
159
|
-
.to_not change { sentence }
|
150
|
+
expect { sentence.slice(/\w+/) }.to_not change { sentence }
|
160
151
|
end
|
161
152
|
|
162
153
|
it 'is able to capture Turkish characters' do
|
163
154
|
expect(turkish_words
|
164
|
-
|
165
|
-
|
155
|
+
.all? { |w| w.slice(/\w+/) == w }
|
156
|
+
).to eq(true)
|
166
157
|
|
167
158
|
expect(turkish_words
|
168
|
-
|
169
|
-
|
159
|
+
.all? { |w| w.slice(/[a-z]+/) == w }
|
160
|
+
).to eq(true)
|
170
161
|
|
171
162
|
expect(turkish_words
|
172
|
-
|
173
|
-
|
174
|
-
|
163
|
+
.map(&:upcase)
|
164
|
+
.all? { |w| w.slice(/[a-z]+/i) == w }
|
165
|
+
).to eq(true)
|
175
166
|
end
|
176
167
|
end
|
177
168
|
|
@@ -179,10 +170,8 @@ module TurkishSupport
|
|
179
170
|
it 'changes the original value of the string' do
|
180
171
|
sentence = turkish_words * ' '
|
181
172
|
|
182
|
-
expect { sentence.slice!(/\w+/) }
|
183
|
-
|
184
|
-
expect(sentence)
|
185
|
-
.to eq(' ' + turkish_words[1..-1] * ' ')
|
173
|
+
expect { sentence.slice!(/\w+/) }.to change { sentence }
|
174
|
+
expect(sentence).to eq(' ' + turkish_words[1..-1] * ' ')
|
186
175
|
end
|
187
176
|
end
|
188
177
|
end
|
@@ -190,29 +179,29 @@ module TurkishSupport
|
|
190
179
|
describe '#split' do
|
191
180
|
it 'is able to capture Turkish characters' do
|
192
181
|
expect(turkish_words
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
182
|
+
.join(' ')
|
183
|
+
.split(/\w+/)
|
184
|
+
.join
|
185
|
+
.strip
|
186
|
+
.empty?
|
187
|
+
).to eq(true)
|
199
188
|
|
200
189
|
expect(turkish_words
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
190
|
+
.join(' ')
|
191
|
+
.split(/[a-z]+/)
|
192
|
+
.join
|
193
|
+
.strip
|
194
|
+
.empty?
|
195
|
+
).to eq(true)
|
207
196
|
|
208
197
|
expect(turkish_words
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
198
|
+
.join(' ')
|
199
|
+
.upcase
|
200
|
+
.split(/[a-z]+/i)
|
201
|
+
.join
|
202
|
+
.strip
|
203
|
+
.empty?
|
204
|
+
).to eq(true)
|
216
205
|
end
|
217
206
|
end
|
218
207
|
|
@@ -226,15 +215,13 @@ module TurkishSupport
|
|
226
215
|
it 'upcases all of Turkish characters' do
|
227
216
|
upcased_string = downcased_turkish_alphabet.upcase
|
228
217
|
|
229
|
-
expect(upcased_string)
|
230
|
-
.to eq(upcased_turkish_alphabet)
|
218
|
+
expect(upcased_string).to eq(upcased_turkish_alphabet)
|
231
219
|
end
|
232
220
|
|
233
221
|
it 'upcases English characters except i as I' do
|
234
222
|
upcased_string = downcased_english_alphabet.upcase
|
235
223
|
|
236
|
-
expect(upcased_string)
|
237
|
-
.to eq(upcased_english_alphabet.tr('I', 'İ'))
|
224
|
+
expect(upcased_string).to eq(upcased_english_alphabet.tr('I', 'İ'))
|
238
225
|
end
|
239
226
|
end
|
240
227
|
|
@@ -243,8 +230,7 @@ module TurkishSupport
|
|
243
230
|
expect { downcased_turkish_alphabet.upcase! }
|
244
231
|
.to change { downcased_turkish_alphabet }
|
245
232
|
|
246
|
-
expect(downcased_turkish_alphabet)
|
247
|
-
.to eq(upcased_turkish_alphabet)
|
233
|
+
expect(downcased_turkish_alphabet).to eq(upcased_turkish_alphabet)
|
248
234
|
end
|
249
235
|
end
|
250
236
|
end
|
@@ -285,8 +271,7 @@ module TurkishSupport
|
|
285
271
|
it 'does not change the original value of the string' do
|
286
272
|
turkish_word = turkish_words.sample
|
287
273
|
|
288
|
-
expect { turkish_word.capitalize }
|
289
|
-
.to_not change { turkish_word }
|
274
|
+
expect { turkish_word.capitalize }.to_not change { turkish_word }
|
290
275
|
end
|
291
276
|
|
292
277
|
it 'capitalizes the leading first Turkish character' do
|
@@ -445,43 +430,37 @@ module TurkishSupport
|
|
445
430
|
end
|
446
431
|
|
447
432
|
it "doesn't match Turkish characters when regex include '\\W'" do
|
448
|
-
expect('Aşağı Ayrancı'
|
449
|
-
.match(/\W+/)
|
450
|
-
.to_s
|
451
|
-
).to eq(' ')
|
433
|
+
expect('Aşağı Ayrancı'.match(/\W+/).to_s).to eq(' ')
|
452
434
|
end
|
453
435
|
end
|
454
436
|
|
455
437
|
describe '#scan' do
|
456
438
|
it "matches Turkish characters when regex include '\\w'" do
|
457
|
-
expect(turkish_words
|
458
|
-
.join(' ')
|
459
|
-
.scan(/\w+/)
|
460
|
-
).to eq(turkish_words)
|
439
|
+
expect(turkish_words.join(' ').scan(/\w+/)).to eq(turkish_words)
|
461
440
|
end
|
462
441
|
|
463
442
|
it 'matches Turkish characters when regex include lowercase range' do
|
464
443
|
expect(turkish_words
|
465
|
-
|
466
|
-
|
467
|
-
|
444
|
+
.join(' ')
|
445
|
+
.scan(/^[a-z\s]+$/)
|
446
|
+
).to eq([turkish_words.join(' ')])
|
468
447
|
end
|
469
448
|
|
470
449
|
it 'matches Turkish characters when regex include uppercase range' do
|
471
450
|
expect(turkish_words
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
451
|
+
.join(' ')
|
452
|
+
.upcase
|
453
|
+
.scan(/^[A-Z\s]+$/)
|
454
|
+
).to eq([turkish_words.join(' ').upcase])
|
476
455
|
end
|
477
456
|
|
478
457
|
it "matches Turkish characters when regex include '\\w'" do
|
479
458
|
expect(turkish_words
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
459
|
+
.join(' ')
|
460
|
+
.scan(/\W+/)
|
461
|
+
.map(&:strip)
|
462
|
+
.all?(&:empty?)
|
463
|
+
).to eq(true)
|
485
464
|
end
|
486
465
|
end
|
487
466
|
|
@@ -490,30 +469,30 @@ module TurkishSupport
|
|
490
469
|
|
491
470
|
it "matches Turkish characters when regex include '\\w'" do
|
492
471
|
expect(tr_chars
|
493
|
-
|
494
|
-
|
495
|
-
|
472
|
+
.split(//)
|
473
|
+
.all? { |ch| (ch =~ /\w/).zero? }
|
474
|
+
).to eq(true)
|
496
475
|
end
|
497
476
|
|
498
477
|
it 'matches Turkish characters when regex include lowercase range' do
|
499
478
|
expect(ALPHA[:tr_lower]
|
500
|
-
|
501
|
-
|
502
|
-
|
479
|
+
.split(//)
|
480
|
+
.all? { |ch| (ch =~ /[a-z]/).zero? }
|
481
|
+
).to eq(true)
|
503
482
|
end
|
504
483
|
|
505
484
|
it 'matches Turkish characters when regex include uppercase range' do
|
506
485
|
expect(ALPHA[:tr_upper]
|
507
|
-
|
508
|
-
|
509
|
-
|
486
|
+
.split(//)
|
487
|
+
.all? { |ch| (ch =~ /[A-Z]/).zero? }
|
488
|
+
).to eq(true)
|
510
489
|
end
|
511
490
|
|
512
491
|
it "doesn't match Turkish characters when regex include '\\W'" do
|
513
492
|
expect(tr_chars
|
514
|
-
|
515
|
-
|
516
|
-
|
493
|
+
.split(//)
|
494
|
+
.all? { |ch| (ch =~ /\W/).nil? }
|
495
|
+
).to eq(true)
|
517
496
|
end
|
518
497
|
end
|
519
498
|
|
@@ -522,19 +501,16 @@ module TurkishSupport
|
|
522
501
|
it 'does not affect the object' do
|
523
502
|
word = 'ağapaşa ağa'
|
524
503
|
|
525
|
-
expect { word.sub(/\w+/, 'bey') }
|
526
|
-
.to_not change { word }
|
504
|
+
expect { word.sub(/\w+/, 'bey') }.to_not change { word }
|
527
505
|
end
|
528
506
|
|
529
507
|
it 'matches Turkish characters, and replaces them' do
|
530
|
-
expect('ağapaşa ağa'.sub(/\w+/, 'bey'))
|
531
|
-
.to eq('bey ağa')
|
508
|
+
expect('ağapaşa ağa'.sub(/\w+/, 'bey')).to eq('bey ağa')
|
532
509
|
|
533
510
|
expect('ağapaşa ağa şapka'.sub(/\W+/, 'bey'))
|
534
511
|
.to eq('ağapaşabeyağa şapka')
|
535
512
|
|
536
|
-
expect('ağapaşaağa'.sub(/[a-h]+/, 'bey'))
|
537
|
-
.to eq('beypaşaağa')
|
513
|
+
expect('ağapaşaağa'.sub(/[a-h]+/, 'bey')).to eq('beypaşaağa')
|
538
514
|
end
|
539
515
|
end
|
540
516
|
|
@@ -555,19 +531,16 @@ module TurkishSupport
|
|
555
531
|
it 'does not affect the object' do
|
556
532
|
word = 'ağapaşa ağa'
|
557
533
|
|
558
|
-
expect { word.gsub(/\w+/, 'bey') }
|
559
|
-
.to_not change { word }
|
534
|
+
expect { word.gsub(/\w+/, 'bey') }.to_not change { word }
|
560
535
|
end
|
561
536
|
|
562
537
|
it 'matches Turkish characters, and replaces them' do
|
563
|
-
expect('ağapaşa ağa'.gsub(/\w+/, 'bey'))
|
564
|
-
.to eq('bey bey')
|
538
|
+
expect('ağapaşa ağa'.gsub(/\w+/, 'bey')).to eq('bey bey')
|
565
539
|
|
566
540
|
expect('ağapaşa ağa şapka'.gsub(/\W+/, 'bey'))
|
567
541
|
.to eq('ağapaşabeyağabeyşapka')
|
568
542
|
|
569
|
-
expect('ağapaşaağa'.gsub(/[a-h]+/, 'bey'))
|
570
|
-
.to eq('beypbeyşbey')
|
543
|
+
expect('ağapaşaağa'.gsub(/[a-h]+/, 'bey')).to eq('beypbeyşbey')
|
571
544
|
end
|
572
545
|
end
|
573
546
|
|
@@ -598,27 +571,22 @@ module TurkishSupport
|
|
598
571
|
describe '#sort' do
|
599
572
|
context 'with non-destructive version' do
|
600
573
|
it 'does not change the original value of the array' do
|
601
|
-
expect { unsorted_array1.sort }
|
602
|
-
.to_not change { unsorted_array1 }
|
574
|
+
expect { unsorted_array1.sort }.to_not change { unsorted_array1 }
|
603
575
|
end
|
604
576
|
|
605
577
|
it 'sorts array in alphabetical order' do
|
606
|
-
expect(unsorted_array1.sort)
|
607
|
-
.to eq(sorted_array1)
|
578
|
+
expect(unsorted_array1.sort).to eq(sorted_array1)
|
608
579
|
end
|
609
580
|
|
610
581
|
it 'sorts array in alphabetical order' do
|
611
|
-
expect(unsorted_array2.sort)
|
612
|
-
.to eq(sorted_array2)
|
582
|
+
expect(unsorted_array2.sort).to eq(sorted_array2)
|
613
583
|
end
|
614
584
|
end
|
615
585
|
|
616
586
|
context 'with destructive version' do
|
617
587
|
it 'changes the original value of the array' do
|
618
|
-
expect { unsorted_array1.sort! }
|
619
|
-
|
620
|
-
expect(unsorted_array1)
|
621
|
-
.to eq(sorted_array1)
|
588
|
+
expect { unsorted_array1.sort! }.to change { unsorted_array1 }
|
589
|
+
expect(unsorted_array1).to eq(sorted_array1)
|
622
590
|
end
|
623
591
|
end
|
624
592
|
end
|
data/turkish_support.gemspec
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
lib = File.expand_path('../lib', __FILE__)
|
3
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
3
|
require 'turkish_support/version'
|
@@ -15,8 +14,8 @@ Gem::Specification.new do |spec|
|
|
15
14
|
spec.license = 'MIT'
|
16
15
|
|
17
16
|
spec.files = `git ls-files -z`.split("\x0")
|
18
|
-
spec.executables = spec.files.grep(
|
19
|
-
spec.test_files = spec.files.grep(
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
20
19
|
spec.require_paths = ['lib']
|
21
20
|
|
22
21
|
spec.required_ruby_version = '>= 2.0.0'
|
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: 1.0.
|
4
|
+
version: 1.0.3
|
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: 2016-11-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -100,7 +100,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
100
100
|
version: '0'
|
101
101
|
requirements: []
|
102
102
|
rubyforge_project:
|
103
|
-
rubygems_version: 2.
|
103
|
+
rubygems_version: 2.6.8
|
104
104
|
signing_key:
|
105
105
|
specification_version: 4
|
106
106
|
summary: Turkish character support for core ruby methods.
|