regeng 0.2.3 → 0.2.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +3 -1
- data/changelog.md +2 -0
- data/lib/regeng.rb +45 -2
- data/lib/regeng/version.rb +3 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 793b1fe234f31d0436bd4897e1790b58866446ab38d26e7bafef3a2c259abaf2
|
4
|
+
data.tar.gz: 20b8ee94808bfa33dca2bebec6a370892f18aebdf545b949a5ca4797fb618d29
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8abc45f0202349ae23642cf86d5ce9ce03a7340dc757cce58f2449c092352874d1dbc1b315aa3ae8ef124b5f1ebc09e70ce5d5f59c6d9e227355e29c766709eb
|
7
|
+
data.tar.gz: 5a30c9135b3b2d6b662258c996bbc281603346d4d8380d6bfeeee8a168afeb4b892a8f8914de736af65224a730c942f86119d8ee7c4e81f646c9c36a796db8ef
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -4,6 +4,8 @@
|
|
4
4
|
|
5
5
|
Regeng or regular english, is a gem aimed to make regular expressions a bit more noob friendly.
|
6
6
|
|
7
|
+
[Regeng Gem](https://rubygems.org/gems/regeng)
|
8
|
+
|
7
9
|
## Installation
|
8
10
|
|
9
11
|
Add this line to your application's Gemfile:
|
@@ -25,7 +27,7 @@ Or install it yourself as:
|
|
25
27
|
```ruby
|
26
28
|
require 'regeng'
|
27
29
|
=> true
|
28
|
-
Regeng.
|
30
|
+
Regeng.new 'any character except e-z at start of string'
|
29
31
|
=> /\A[^e-z]/
|
30
32
|
```
|
31
33
|
|
data/changelog.md
CHANGED
data/lib/regeng.rb
CHANGED
@@ -7,7 +7,7 @@ module Regeng
|
|
7
7
|
CHARACTER_COND = /((any )?(character)(s)?( except)?( between)?( [a-zA-Z])+((-)|( through )|( to )|( and )){1}[a-zA-Z]){1}/.freeze
|
8
8
|
CHARACTER_SIMP = /((any )?((uppercase )?|(lowercase )?)(character)(s)?){1}/.freeze
|
9
9
|
|
10
|
-
DIGIT_COND = /((any )?((digit)|(number))(s)?( except)?( between)?( [0-9])
|
10
|
+
DIGIT_COND = /((any )?((digit)|(number))(s)?( except)?( between)?( [0-9])(0)*((-)|( through )|( to )|( and )){1}([0-9])(0)*){1}/.freeze
|
11
11
|
DIGIT_SIMPLE = /(any ((digit)|(number))(s)?){1}/.freeze
|
12
12
|
|
13
13
|
AT_COND = /( at )((start)|(end))( of )((line)|(string))/.freeze
|
@@ -80,6 +80,7 @@ module Regeng
|
|
80
80
|
|
81
81
|
# Processes conditional digit/number expressions.
|
82
82
|
def self.digit_condition(string)
|
83
|
+
complex = false
|
83
84
|
except = '^' if /(except)/.match?(string)
|
84
85
|
multiples = '+' if /((digit)|(number))(s)/.match?(string)
|
85
86
|
if /( ([0-9])(-)(([0-9])))/.match?(string)
|
@@ -93,11 +94,19 @@ module Regeng
|
|
93
94
|
elsif /( ([0-9] )+(and )([0-9])+)/.match?(string)
|
94
95
|
unfiltered_mod = string.match(/( ([0-9] )+(and )([0-9]))/)
|
95
96
|
digit_mod = unfiltered_mod.to_s.gsub(/( )|(and )/, '')
|
97
|
+
elsif /( ([0-9](0)+ )((and )|(to ))([1-9](0)+))/.match?(string)
|
98
|
+
unfiltered_mod = string.match(/(([0-9](0)+ )((and )|(to ))([1-9](0)+))/)
|
99
|
+
digit_mod = complex_numbers(unfiltered_mod.to_s)
|
100
|
+
complex = true
|
96
101
|
end
|
97
102
|
|
98
103
|
Error.invalid_expression if digit_mod.nil? || digit_mod == '-'
|
99
104
|
|
100
|
-
|
105
|
+
if complex
|
106
|
+
"#{digit_mod}"
|
107
|
+
else
|
108
|
+
"[#{except}#{digit_mod}]#{multiples}"
|
109
|
+
end
|
101
110
|
end
|
102
111
|
|
103
112
|
# Processes simple digit expressions.
|
@@ -115,4 +124,38 @@ module Regeng
|
|
115
124
|
at_mod = '\z' if /(end of string)/.match?(string)
|
116
125
|
at_mod
|
117
126
|
end
|
127
|
+
|
128
|
+
# Helpers
|
129
|
+
def self.complex_numbers(string)
|
130
|
+
# extracts first number
|
131
|
+
first_number = string.match(/([0-9](0)* )((and )|(to ))/)
|
132
|
+
first_number = first_number.to_s.gsub(/( )|(and )/, '')
|
133
|
+
|
134
|
+
# extracts second number
|
135
|
+
second_number = string.match(/( [1-9](0)+)/)
|
136
|
+
second_number = second_number.to_s.sub(/( )/, '')
|
137
|
+
|
138
|
+
process_complex_numbers(first_number, second_number)
|
139
|
+
end
|
140
|
+
|
141
|
+
def self.process_complex_numbers(first_number, second_number)
|
142
|
+
mod_array = []
|
143
|
+
|
144
|
+
first_digit = first_number.sub(/(0)+/, '')
|
145
|
+
first_zeros = first_number.match(/(0)+/)
|
146
|
+
zeros_length = first_zeros.to_s.length
|
147
|
+
|
148
|
+
second_digit = second_number.sub(/(0)+/, '')
|
149
|
+
|
150
|
+
(first_digit...second_digit).to_a.each do |digit|
|
151
|
+
modifier = "(#{digit}"
|
152
|
+
zeros_length.times do |_|
|
153
|
+
modifier = "#{modifier}[0-9]"
|
154
|
+
end
|
155
|
+
modifier = "#{modifier})"
|
156
|
+
mod_array.push(modifier)
|
157
|
+
end
|
158
|
+
|
159
|
+
"#{mod_array.join('|')}|(#{second_number})"
|
160
|
+
end
|
118
161
|
end
|
data/lib/regeng/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: regeng
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- LucHighwalker
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-01-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|