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.
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: []