reg_expert 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/reg_expert.rb +118 -0
  3. 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: []