pattern_matcher 0.0.4 → 0.1.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.
- data/lib/pattern_matcher/match.rb +13 -0
- data/lib/pattern_matcher/matcher.rb +10 -3
- data/lib/pattern_matcher/pattern.rb +18 -3
- data/lib/pattern_matcher/version.rb +1 -1
- data/lib/pattern_matcher.rb +18 -0
- metadata +3 -2
@@ -2,11 +2,18 @@ module PatternMatcher
|
|
2
2
|
class Matcher
|
3
3
|
|
4
4
|
def self.string_to_regex(string)
|
5
|
-
|
5
|
+
begin
|
6
|
+
Regexp.new string if is_valid_regex_string?(string)
|
7
|
+
rescue
|
8
|
+
end
|
6
9
|
end
|
7
10
|
|
8
11
|
def self.match_pattern_in_text(pattern, text)
|
9
|
-
return pattern.
|
12
|
+
return match_regex_in_text(pattern.regex, text) if pattern && is_valid_text?(text)
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.match_regex_in_text(regex, text)
|
16
|
+
return regex.match text if is_valid_regex?(regex) && is_valid_text?(text)
|
10
17
|
end
|
11
18
|
|
12
19
|
def self.initialize_patterns
|
@@ -20,7 +27,7 @@ module PatternMatcher
|
|
20
27
|
!string.nil? && !string.empty?
|
21
28
|
end
|
22
29
|
|
23
|
-
def self.
|
30
|
+
def self.is_valid_regex?(pattern)
|
24
31
|
!pattern.nil?
|
25
32
|
end
|
26
33
|
|
@@ -1,18 +1,33 @@
|
|
1
1
|
module PatternMatcher
|
2
2
|
class Pattern
|
3
3
|
|
4
|
-
attr_accessor :name, :
|
4
|
+
attr_accessor :name, :regex_string, :description, :valid_examples
|
5
|
+
attr_accessor :regex
|
5
6
|
|
6
7
|
def initialize(hash)
|
7
8
|
if !hash.nil?
|
8
9
|
@name = hash["name"]
|
9
|
-
@
|
10
|
+
@regex_string = hash["regex"]
|
11
|
+
@regex = Matcher.string_to_regex(@regex_string)
|
10
12
|
@description = hash["description"]
|
13
|
+
@valid_examples = hash["valid_examples"] || []
|
11
14
|
end
|
12
15
|
end
|
13
16
|
|
17
|
+
def validate_all_examples
|
18
|
+
failures = []
|
19
|
+
@valid_examples.each do |example|
|
20
|
+
failures << example if !pattern_example_valid? example
|
21
|
+
end
|
22
|
+
failures
|
23
|
+
end
|
24
|
+
|
14
25
|
def is_valid?
|
15
|
-
return
|
26
|
+
return !@regex.nil?
|
27
|
+
end
|
28
|
+
|
29
|
+
def pattern_example_valid?(example)
|
30
|
+
Matcher.match_regex_in_text(@regex, example)
|
16
31
|
end
|
17
32
|
end
|
18
33
|
end
|
data/lib/pattern_matcher.rb
CHANGED
@@ -6,6 +6,7 @@ require 'date'
|
|
6
6
|
require "pattern_matcher/version"
|
7
7
|
require "pattern_matcher/config"
|
8
8
|
require "pattern_matcher/pattern"
|
9
|
+
require "pattern_matcher/match"
|
9
10
|
require "pattern_matcher/matcher"
|
10
11
|
|
11
12
|
module PatternMatcher
|
@@ -23,5 +24,22 @@ module PatternMatcher
|
|
23
24
|
!@configuration.nil?
|
24
25
|
end
|
25
26
|
|
27
|
+
def self.match_patterns_to_text(text)
|
28
|
+
matches = []
|
29
|
+
@patterns.each do |pattern|
|
30
|
+
regex_match = Matcher.match_pattern_in_text(pattern, text)
|
31
|
+
matches << Match.new({:name => pattern.name, :regex_match => regex_match}) if regex_match
|
32
|
+
end
|
33
|
+
matches
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.proof_patterns
|
37
|
+
pattern_errors = []
|
38
|
+
@patterns.each do |pattern|
|
39
|
+
pattern_errors << pattern.validate_all_examples if pattern.is_valid?
|
40
|
+
end
|
41
|
+
pattern_errors
|
42
|
+
end
|
43
|
+
|
26
44
|
end
|
27
45
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pattern_matcher
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-05-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
@@ -66,6 +66,7 @@ extensions: []
|
|
66
66
|
extra_rdoc_files: []
|
67
67
|
files:
|
68
68
|
- lib/pattern_matcher/config.rb
|
69
|
+
- lib/pattern_matcher/match.rb
|
69
70
|
- lib/pattern_matcher/matcher.rb
|
70
71
|
- lib/pattern_matcher/pattern.rb
|
71
72
|
- lib/pattern_matcher/version.rb
|