ghaki-match 2011.12.04.1 → 2011.12.04.2
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.
|
@@ -5,10 +5,10 @@ module Parser #:nodoc:
|
|
|
5
5
|
# Matches against paired regular expressions and returned values.
|
|
6
6
|
class Base
|
|
7
7
|
|
|
8
|
-
attr_accessor :
|
|
8
|
+
attr_accessor :match_lookup, :default_value
|
|
9
9
|
|
|
10
|
-
def initialize
|
|
11
|
-
@
|
|
10
|
+
def initialize opts={}
|
|
11
|
+
@match_lookup = opts[:match_lookup] || {}
|
|
12
12
|
@default_value = opts[:default_value]
|
|
13
13
|
add_words( opts[:match_words] ) if opts.has_key?(:match_words)
|
|
14
14
|
end
|
|
@@ -25,7 +25,7 @@ class Base
|
|
|
25
25
|
def add_words pairs
|
|
26
26
|
pairs.each_pair do |val,keyz|
|
|
27
27
|
keyz.each do |key|
|
|
28
|
-
@
|
|
28
|
+
@match_lookup[ %r{\A#{key}\z}i ] = val
|
|
29
29
|
end
|
|
30
30
|
end
|
|
31
31
|
end
|
|
@@ -33,7 +33,7 @@ class Base
|
|
|
33
33
|
# Matches lines against regexp keys returning paired value.
|
|
34
34
|
# - Yields on not found or returns default value.
|
|
35
35
|
def match_lines lines, opts={}
|
|
36
|
-
@
|
|
36
|
+
@match_lookup.each_pair do |rx_curr,ret_val|
|
|
37
37
|
lines.each do |text|
|
|
38
38
|
return ret_val if text =~ rx_curr
|
|
39
39
|
end
|
|
@@ -50,7 +50,7 @@ class Base
|
|
|
50
50
|
# Matches string against regexp keys returning paired value.
|
|
51
51
|
# - Yields on not found or returns default value.
|
|
52
52
|
def match_text text, opts={}
|
|
53
|
-
@
|
|
53
|
+
@match_lookup.each_pair do |rx_curr,ret_val|
|
|
54
54
|
return ret_val if text =~ rx_curr
|
|
55
55
|
end
|
|
56
56
|
if block_given?
|
|
@@ -2,40 +2,74 @@ require 'ghaki/match/parser/base'
|
|
|
2
2
|
|
|
3
3
|
module Ghaki module Match module Parser module Base_Testing
|
|
4
4
|
describe Base do
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
EXACT_KEY = 'FOUND'
|
|
6
|
+
EXACT_VAL = 'EXACT-RETURNED'
|
|
7
|
+
EXACT_TEXT = 'FounD'
|
|
8
|
+
EXACT_FAIL = 'THIS FOUND NOW'
|
|
9
|
+
EXACT_WORDS = { EXACT_VAL => [EXACT_KEY] }
|
|
10
|
+
|
|
11
|
+
BOUND_KEY = 'HERE'
|
|
12
|
+
BOUND_VAL = 'BOUND-RETURNED'
|
|
13
|
+
BOUND_TEXT = 'LOOK HERE NOW'
|
|
14
|
+
BOUND_LOOKUP = { %r{\b#{BOUND_KEY}\b}i => BOUND_VAL }
|
|
15
|
+
|
|
8
16
|
MISS_TEXT = 'INVALID'
|
|
9
17
|
MISS_DEF = 'PASS_BACK'
|
|
10
18
|
|
|
11
|
-
subject do
|
|
12
|
-
Base.new({
|
|
13
|
-
%r{\b#{FIND_KEY}\b} => FIND_VAL,
|
|
14
|
-
})
|
|
15
|
-
end
|
|
16
|
-
|
|
17
19
|
describe '#initialize' do
|
|
20
|
+
|
|
21
|
+
context 'using no options' do
|
|
22
|
+
it 'has empty match lookups' do
|
|
23
|
+
Base.new.match_lookup.should be_empty
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
context 'using option :match_lookup' do
|
|
28
|
+
it 'accepts' do
|
|
29
|
+
@subj = Base.new( :match_lookup => BOUND_LOOKUP )
|
|
30
|
+
@subj.match_lookup.should_not be_empty
|
|
31
|
+
@subj.match_text(BOUND_TEXT).should == BOUND_VAL
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
18
35
|
context 'using option :match_words' do
|
|
19
36
|
it 'accepts' do
|
|
20
|
-
@subj = Base.new( :match_words =>
|
|
21
|
-
|
|
37
|
+
@subj = Base.new( :match_words => EXACT_WORDS )
|
|
38
|
+
@subj.match_lookup.should_not be_empty
|
|
39
|
+
@subj.match_text(EXACT_TEXT).should == EXACT_VAL
|
|
22
40
|
end
|
|
23
41
|
end
|
|
42
|
+
|
|
24
43
|
end
|
|
25
44
|
|
|
45
|
+
subject { Base.new }
|
|
46
|
+
|
|
47
|
+
it { should respond_to :match_lookup }
|
|
48
|
+
it { should respond_to :match_lookup= }
|
|
49
|
+
it { should respond_to :default_value }
|
|
50
|
+
it { should respond_to :default_value= }
|
|
51
|
+
|
|
26
52
|
describe '#add_words' do
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
53
|
+
before(:each) do
|
|
54
|
+
subject.add_words EXACT_VAL => [EXACT_KEY]
|
|
55
|
+
end
|
|
56
|
+
it 'matches against exact text' do
|
|
57
|
+
subject.match_text(EXACT_TEXT).should == EXACT_VAL
|
|
58
|
+
end
|
|
59
|
+
it 'does not match against boundary' do
|
|
60
|
+
subject.match_text(EXACT_FAIL).should be_nil
|
|
31
61
|
end
|
|
32
62
|
end
|
|
33
63
|
|
|
34
64
|
describe '#match_text' do
|
|
35
65
|
|
|
66
|
+
before(:each) do
|
|
67
|
+
subject.match_lookup = BOUND_LOOKUP
|
|
68
|
+
end
|
|
69
|
+
|
|
36
70
|
context 'when matched' do
|
|
37
71
|
it 'passes specified value' do
|
|
38
|
-
subject.match_text(
|
|
72
|
+
subject.match_text(BOUND_TEXT).should == BOUND_VAL
|
|
39
73
|
end
|
|
40
74
|
end
|
|
41
75
|
|
|
@@ -66,9 +100,13 @@ describe Base do
|
|
|
66
100
|
|
|
67
101
|
describe '#match_lines' do
|
|
68
102
|
|
|
103
|
+
before(:each) do
|
|
104
|
+
subject.match_lookup = BOUND_LOOKUP
|
|
105
|
+
end
|
|
106
|
+
|
|
69
107
|
context 'when matched' do
|
|
70
108
|
it 'should match' do
|
|
71
|
-
subject.match_lines([
|
|
109
|
+
subject.match_lines([BOUND_TEXT]).should == BOUND_VAL
|
|
72
110
|
end
|
|
73
111
|
end
|
|
74
112
|
|
|
@@ -4,9 +4,13 @@ module Ghaki module Match module Parser module Boolean_Testing
|
|
|
4
4
|
describe Boolean do
|
|
5
5
|
|
|
6
6
|
FIELDS_EXP = ['EXPECTED']
|
|
7
|
+
FIELD_HAVE = FIELDS_EXP.first
|
|
7
8
|
EXTRA_KEY = 'ZAP'
|
|
8
|
-
EXTRA_TEXT =
|
|
9
|
+
EXTRA_TEXT = EXTRA_KEY.downcase
|
|
9
10
|
|
|
11
|
+
subject { Boolean.new }
|
|
12
|
+
|
|
13
|
+
it { should be_kind_of(Parser::Base) }
|
|
10
14
|
it { should respond_to :boolean_lookup }
|
|
11
15
|
it { should respond_to :boolean_lookup= }
|
|
12
16
|
|
|
@@ -26,11 +30,11 @@ describe Boolean do
|
|
|
26
30
|
context 'using option :skip_boolean_defaults' do
|
|
27
31
|
it 'ignores defaults when specified' do
|
|
28
32
|
@subj = Boolean.new( :skip_boolean_defaults => true )
|
|
29
|
-
@subj.
|
|
33
|
+
@subj.match_lookup.should be_empty
|
|
30
34
|
end
|
|
31
35
|
it 'imports defaults when missing' do
|
|
32
36
|
@subj = Boolean.new
|
|
33
|
-
@subj.
|
|
37
|
+
@subj.match_lookup.should_not be_empty
|
|
34
38
|
end
|
|
35
39
|
end
|
|
36
40
|
|
|
@@ -52,8 +56,6 @@ describe Boolean do
|
|
|
52
56
|
|
|
53
57
|
describe '#parse_value' do
|
|
54
58
|
|
|
55
|
-
subject { Boolean.new }
|
|
56
|
-
|
|
57
59
|
context 'when unmatched' do
|
|
58
60
|
let(:text) { 'INVALID' }
|
|
59
61
|
it 'passes through original value' do
|
|
@@ -90,7 +92,7 @@ describe Boolean do
|
|
|
90
92
|
|
|
91
93
|
context 'with present field' do
|
|
92
94
|
|
|
93
|
-
let(:field) {
|
|
95
|
+
let(:field) { FIELD_HAVE }
|
|
94
96
|
|
|
95
97
|
context 'when unmatched' do
|
|
96
98
|
let(:text) { 'NOT_FOUND' }
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ghaki-match
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2011.12.04.
|
|
4
|
+
version: 2011.12.04.2
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -13,7 +13,7 @@ date: 2011-12-04 00:00:00.000000000Z
|
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: ghaki-bool
|
|
16
|
-
requirement: &
|
|
16
|
+
requirement: &79907590 !ruby/object:Gem::Requirement
|
|
17
17
|
none: false
|
|
18
18
|
requirements:
|
|
19
19
|
- - ! '>='
|
|
@@ -21,10 +21,10 @@ dependencies:
|
|
|
21
21
|
version: 2011.11.29.1
|
|
22
22
|
type: :runtime
|
|
23
23
|
prerelease: false
|
|
24
|
-
version_requirements: *
|
|
24
|
+
version_requirements: *79907590
|
|
25
25
|
- !ruby/object:Gem::Dependency
|
|
26
26
|
name: rspec
|
|
27
|
-
requirement: &
|
|
27
|
+
requirement: &79907320 !ruby/object:Gem::Requirement
|
|
28
28
|
none: false
|
|
29
29
|
requirements:
|
|
30
30
|
- - ! '>='
|
|
@@ -32,10 +32,10 @@ dependencies:
|
|
|
32
32
|
version: 2.4.0
|
|
33
33
|
type: :development
|
|
34
34
|
prerelease: false
|
|
35
|
-
version_requirements: *
|
|
35
|
+
version_requirements: *79907320
|
|
36
36
|
- !ruby/object:Gem::Dependency
|
|
37
37
|
name: rdoc
|
|
38
|
-
requirement: &
|
|
38
|
+
requirement: &79907030 !ruby/object:Gem::Requirement
|
|
39
39
|
none: false
|
|
40
40
|
requirements:
|
|
41
41
|
- - ! '>='
|
|
@@ -43,10 +43,10 @@ dependencies:
|
|
|
43
43
|
version: 3.9.4
|
|
44
44
|
type: :development
|
|
45
45
|
prerelease: false
|
|
46
|
-
version_requirements: *
|
|
46
|
+
version_requirements: *79907030
|
|
47
47
|
- !ruby/object:Gem::Dependency
|
|
48
48
|
name: mocha
|
|
49
|
-
requirement: &
|
|
49
|
+
requirement: &79906760 !ruby/object:Gem::Requirement
|
|
50
50
|
none: false
|
|
51
51
|
requirements:
|
|
52
52
|
- - ! '>='
|
|
@@ -54,7 +54,7 @@ dependencies:
|
|
|
54
54
|
version: 0.9.12
|
|
55
55
|
type: :development
|
|
56
56
|
prerelease: false
|
|
57
|
-
version_requirements: *
|
|
57
|
+
version_requirements: *79906760
|
|
58
58
|
description: Collection of helpers for regular expression helpers.
|
|
59
59
|
email: gerald@kalafut.org
|
|
60
60
|
executables: []
|