string_utility_belt 0.1.1 → 0.2.1
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.
@@ -1,10 +1,37 @@
|
|
1
1
|
|
2
2
|
class String
|
3
|
+
|
4
|
+
LATIN_CHARS_VARIATION = ["[aàáâãä]", "[eèéêë]", "[iìíîï]", "[oòóôõö]", "[uùúûü]", "[cçÇ]", "[ñÑ]"]
|
5
|
+
|
6
|
+
def regex_latin_ci_list
|
7
|
+
|
8
|
+
memo = ""
|
9
|
+
self.each_char do |char|
|
10
|
+
|
11
|
+
variation_found = false
|
12
|
+
|
13
|
+
for char_variation in LATIN_CHARS_VARIATION
|
14
|
+
|
15
|
+
match = eval("/#{char_variation}/")
|
16
|
+
|
17
|
+
if (char =~ match)
|
18
|
+
memo.insert(-1, char_variation)
|
19
|
+
variation_found = true
|
20
|
+
break
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
memo.insert(-1, char) unless variation_found
|
25
|
+
end
|
26
|
+
|
27
|
+
self.replace(memo)
|
28
|
+
end
|
3
29
|
|
4
30
|
def regex_builder options={}
|
5
31
|
self.gsub!(/\*/,'.*') if options[:any]
|
6
32
|
border_me(options[:border][:to],
|
7
33
|
options[:border][:direction]) if options[:border]
|
34
|
+
regex_latin_ci_list if options[:latin_chars_variation]
|
8
35
|
insert_OR_in_right unless options[:delete_or]
|
9
36
|
self
|
10
37
|
end
|
data/lib/regex_me/regex_me.rb
CHANGED
@@ -10,10 +10,11 @@ module RegexMe
|
|
10
10
|
private
|
11
11
|
def options_handler options
|
12
12
|
{
|
13
|
-
:exact_word
|
14
|
-
:case_insensitive
|
15
|
-
:
|
16
|
-
:
|
13
|
+
:exact_word => options[:exact_word],
|
14
|
+
:case_insensitive => (options[:case_insensitive] ? :i : nil ),
|
15
|
+
:latin_chars_variation => options[:latin_chars_variation],
|
16
|
+
:m => (options[:m] ? :m : nil ),
|
17
|
+
:exact_phrase => options[:exact_phrase]
|
17
18
|
}
|
18
19
|
end
|
19
20
|
|
@@ -37,7 +38,7 @@ module RegexMe
|
|
37
38
|
|
38
39
|
private
|
39
40
|
def execute_builder string, opt_handled, border_to
|
40
|
-
result_builder = builder(string, opt_handled[:exact_word], border_to, opt_handled[:exact_phrase])
|
41
|
+
result_builder = builder(string, opt_handled[:exact_word], border_to, opt_handled[:latin_chars_variation], opt_handled[:exact_phrase])
|
41
42
|
|
42
43
|
case border_to
|
43
44
|
when :ruby
|
@@ -48,23 +49,26 @@ module RegexMe
|
|
48
49
|
|
49
50
|
end
|
50
51
|
|
51
|
-
def builder string, exact_word, border_to, exact_phrase
|
52
|
+
def builder string, exact_word, border_to, latin_chars_variation, exact_phrase
|
52
53
|
|
53
54
|
if exact_phrase
|
54
|
-
regexp = string.gsub(/\s+/, " ").gsub(/\s/, '[^0-9a-zA-Z\_]+').regex_builder(:
|
55
|
+
regexp = string.gsub(/\s+/, " ").gsub(/\s/, '[^0-9a-zA-Z\_]+').regex_builder(:latin_chars_variation => latin_chars_variation,
|
56
|
+
:delete_or => true,
|
57
|
+
:border => {:to => border_to,
|
58
|
+
:direction => :both})
|
55
59
|
else
|
56
60
|
regexp = '('
|
57
61
|
|
58
62
|
for word in string.strip.split
|
59
63
|
case word
|
60
64
|
when/^\*/
|
61
|
-
regexp << word.regex_builder(:any => true, :border => {:to => border_to, :direction => :right})
|
65
|
+
regexp << word.regex_builder(:any => true, :border => {:to => border_to, :direction => :right}, :latin_chars_variation => latin_chars_variation)
|
62
66
|
when /\*$/
|
63
|
-
regexp << word.regex_builder(:any => true, :border => {:to => border_to, :direction => :left})
|
67
|
+
regexp << word.regex_builder(:any => true, :border => {:to => border_to, :direction => :left}, :latin_chars_variation => latin_chars_variation)
|
64
68
|
when /^.*\*.*$/
|
65
|
-
regexp << word.regex_builder(:any => true, :border => {:to => border_to, :direction => :both})
|
69
|
+
regexp << word.regex_builder(:any => true, :border => {:to => border_to, :direction => :both}, :latin_chars_variation => latin_chars_variation)
|
66
70
|
else
|
67
|
-
regexp << (exact_word ? word.regex_builder(:border => {:to => border_to, :direction => :both}) : word.regex_builder)
|
71
|
+
regexp << (exact_word ? word.regex_builder(:border => {:to => border_to, :direction => :both}, :latin_chars_variation => latin_chars_variation) : word.regex_builder(:latin_chars_variation => latin_chars_variation))
|
68
72
|
end
|
69
73
|
end
|
70
74
|
|
data/string_utility_belt.gemspec
CHANGED
@@ -2,7 +2,7 @@ $LOAD_PATH << File.join(File.dirname(__FILE__), 'lib')
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = "string_utility_belt"
|
5
|
-
s.version = "0.
|
5
|
+
s.version = "0.2.1"
|
6
6
|
s.description = "Useful methods for strings!"
|
7
7
|
s.summary = "Useful methods for strings!"
|
8
8
|
s.author = "Rodrigo Serradura"
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: string_utility_belt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 21
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
+
- 2
|
8
9
|
- 1
|
9
|
-
|
10
|
-
version: 0.1.1
|
10
|
+
version: 0.2.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Rodrigo Serradura
|