reg_expert 1.0.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 +7 -0
- data/lib/reg_expert.rb +118 -0
- metadata +45 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: b3d43263074ad874754d33967e34e68f714d5330
|
4
|
+
data.tar.gz: e5118f16b59df4e82a2ff3d6808a12db9721a9c9
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c6451d8dae8672be4acb3b937b0572adcc36d91da90591d72d8642c7f254ac65b74e83ac6ee3d78094384825b72f159403d4d078962c2fe47480d2c67591ef1b
|
7
|
+
data.tar.gz: 913cd3db2a6ef14e5737b817cf51b6a68b3d8ba06a7483295a13b25579dd290869719d9a640ba31633d8d731274c7f260435e3c162b1d00544971e6637b718e4
|
data/lib/reg_expert.rb
ADDED
@@ -0,0 +1,118 @@
|
|
1
|
+
class RegExpert
|
2
|
+
attr_accessor :steps
|
3
|
+
|
4
|
+
def initialize
|
5
|
+
@steps = []
|
6
|
+
end
|
7
|
+
|
8
|
+
def match(test_string)
|
9
|
+
regex_for_steps.match(test_string)
|
10
|
+
end
|
11
|
+
|
12
|
+
def find(arg)
|
13
|
+
steps << CharacterStep.new(arg)
|
14
|
+
|
15
|
+
self
|
16
|
+
end
|
17
|
+
|
18
|
+
def digit(digit = nil)
|
19
|
+
steps << DigitStep.new(digit)
|
20
|
+
|
21
|
+
self
|
22
|
+
end
|
23
|
+
|
24
|
+
alias :digits :digit
|
25
|
+
|
26
|
+
def exactly(count)
|
27
|
+
@steps << Proc.new do |step|
|
28
|
+
Step.new("#{step.regexp_string}{#{count}}")
|
29
|
+
end
|
30
|
+
|
31
|
+
self
|
32
|
+
end
|
33
|
+
|
34
|
+
def one
|
35
|
+
exactly(1)
|
36
|
+
end
|
37
|
+
|
38
|
+
def at_least(count)
|
39
|
+
@steps << Proc.new do |step|
|
40
|
+
Step.new("#{step.regexp_string}{#{count},}")
|
41
|
+
end
|
42
|
+
|
43
|
+
self
|
44
|
+
end
|
45
|
+
|
46
|
+
def word
|
47
|
+
@steps << Step.new("\\b")
|
48
|
+
|
49
|
+
self
|
50
|
+
end
|
51
|
+
|
52
|
+
alias :end_of_word :word
|
53
|
+
alias :beginning_of_word :word
|
54
|
+
|
55
|
+
def character
|
56
|
+
steps << CharacterStep.new
|
57
|
+
|
58
|
+
self
|
59
|
+
end
|
60
|
+
|
61
|
+
def space
|
62
|
+
@steps << Step.new("\\s")
|
63
|
+
|
64
|
+
self
|
65
|
+
end
|
66
|
+
|
67
|
+
alias :characters :character
|
68
|
+
|
69
|
+
def to_regex
|
70
|
+
regex_for_steps
|
71
|
+
end
|
72
|
+
|
73
|
+
private
|
74
|
+
|
75
|
+
def parsed_steps
|
76
|
+
@steps = @steps.map.with_index do |step, index|
|
77
|
+
if step.is_a?(Proc)
|
78
|
+
parsed_val = step.call(steps[index + 1])
|
79
|
+
|
80
|
+
steps.delete_at(index + 1)
|
81
|
+
|
82
|
+
parsed_val
|
83
|
+
else
|
84
|
+
step
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
def regex_for_steps
|
90
|
+
Regexp.new parsed_steps.collect(&:regexp_string).join
|
91
|
+
end
|
92
|
+
|
93
|
+
class Step
|
94
|
+
attr_accessor :value
|
95
|
+
|
96
|
+
def initialize(value = nil)
|
97
|
+
@value = value
|
98
|
+
end
|
99
|
+
|
100
|
+
def regexp_string
|
101
|
+
value
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
class CharacterStep < Step
|
106
|
+
def regexp_string
|
107
|
+
return "." unless value
|
108
|
+
|
109
|
+
"[#{value}]"
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
class DigitStep < Step
|
114
|
+
def regexp_string
|
115
|
+
"\\d"
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
metadata
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: reg_expert
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Mitch Monsen
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-02-11 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: RegExpert is a tiny Ruby library for creating regular expressions of
|
14
|
+
varying complexity with an easy-to-understand syntax suitable for all applications!
|
15
|
+
email: mmonsen7@gmail.com
|
16
|
+
executables: []
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- lib/reg_expert.rb
|
21
|
+
homepage: http://rubygems.org/gems/reg_expert
|
22
|
+
licenses:
|
23
|
+
- MIT
|
24
|
+
metadata: {}
|
25
|
+
post_install_message:
|
26
|
+
rdoc_options: []
|
27
|
+
require_paths:
|
28
|
+
- lib
|
29
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
35
|
+
requirements:
|
36
|
+
- - ">="
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '0'
|
39
|
+
requirements: []
|
40
|
+
rubyforge_project:
|
41
|
+
rubygems_version: 2.2.2
|
42
|
+
signing_key:
|
43
|
+
specification_version: 4
|
44
|
+
summary: An Expressive DSL for Creating Regular Expressions
|
45
|
+
test_files: []
|