ghaki-match 2011.11.30.1 → 2011.12.04.1
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/ghaki/match/mixin/auto_boolean.rb +6 -6
- data/lib/ghaki/match/mixin/auto_rename.rb +10 -10
- data/lib/ghaki/match/parser/boolean.rb +8 -3
- data/spec/ghaki/match/mixin/auto_boolean_spec.rb +14 -16
- data/spec/ghaki/match/mixin/auto_rename_spec.rb +24 -24
- data/spec/ghaki/match/parser/boolean_spec.rb +8 -8
- metadata +10 -10
|
@@ -12,19 +12,19 @@ module AutoBoolean
|
|
|
12
12
|
@auto_boolean_matcher ||= Ghaki::Match::Parser::Boolean.new
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
-
def
|
|
16
|
-
auto_boolean_matcher.
|
|
15
|
+
def boolean_lookup
|
|
16
|
+
auto_boolean_matcher.boolean_lookup
|
|
17
17
|
end
|
|
18
18
|
|
|
19
|
-
def
|
|
20
|
-
auto_boolean_matcher.
|
|
19
|
+
def boolean_lookup= val
|
|
20
|
+
auto_boolean_matcher.boolean_lookup= val
|
|
21
21
|
end
|
|
22
22
|
|
|
23
|
-
def
|
|
23
|
+
def boolean_value val, opts={}, &block
|
|
24
24
|
auto_boolean_matcher.parse_value( val, opts, &block )
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
-
def
|
|
27
|
+
def boolean_field key, val, opts={}, &block
|
|
28
28
|
auto_boolean_matcher.parse_field( key, val, opts, &block )
|
|
29
29
|
end
|
|
30
30
|
|
|
@@ -7,15 +7,15 @@ module Mixin #:nodoc:
|
|
|
7
7
|
module AutoRename
|
|
8
8
|
extend Ghaki::Bool::Accessors
|
|
9
9
|
|
|
10
|
-
bool_accessor :
|
|
11
|
-
attr_writer :
|
|
10
|
+
bool_accessor :auto_tokenize
|
|
11
|
+
attr_writer :field_renames
|
|
12
12
|
|
|
13
|
-
def
|
|
14
|
-
@
|
|
13
|
+
def field_renames
|
|
14
|
+
@field_renames || {}
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
# Converts 'HTTP Compression' into :http_compression
|
|
18
|
-
def
|
|
18
|
+
def format_field key
|
|
19
19
|
key.downcase.gsub(%r{[^A-Z0-9]+}xoi,' ').strip.gsub(' ','_')
|
|
20
20
|
end
|
|
21
21
|
|
|
@@ -29,11 +29,11 @@ module AutoRename
|
|
|
29
29
|
# - if the rename table exists, and does NOT have an entry
|
|
30
30
|
# - return the string
|
|
31
31
|
|
|
32
|
-
def
|
|
33
|
-
do_token = opts[:
|
|
34
|
-
do_token = self.
|
|
35
|
-
to_field = opts[:
|
|
36
|
-
clean_key =
|
|
32
|
+
def rename_field dirty_key, opts={}
|
|
33
|
+
do_token = opts[:auto_tokenize]
|
|
34
|
+
do_token = self.auto_tokenize? if do_token.nil?
|
|
35
|
+
to_field = opts[:field_renames] || self.field_renames
|
|
36
|
+
clean_key = format_field(dirty_key)
|
|
37
37
|
field_key = to_field[clean_key]
|
|
38
38
|
field_key = do_token if field_key.nil? and (not do_token.nil?)
|
|
39
39
|
case field_key
|
|
@@ -11,14 +11,18 @@ class Boolean < Base
|
|
|
11
11
|
false => %w{ FALSE NO OFF DISABLED },
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
attr_writer :boolean_lookup
|
|
15
|
+
|
|
16
|
+
def boolean_lookup
|
|
17
|
+
@boolean_lookup || []
|
|
18
|
+
end
|
|
15
19
|
|
|
16
20
|
def initialize opts={}; super( {}, opts )
|
|
17
21
|
opts_boolean opts
|
|
18
22
|
end
|
|
19
23
|
|
|
20
24
|
def opts_boolean opts
|
|
21
|
-
@
|
|
25
|
+
@boolean_lookup = opts[:boolean_lookup]
|
|
22
26
|
add_trues( opts[:boolean_trues ] ) unless opts[:boolean_trues].nil?
|
|
23
27
|
add_falses( opts[:boolean_falses] ) unless opts[:boolean_falses].nil?
|
|
24
28
|
add_words( DEFAULT_VALUES ) unless opts[:skip_boolean_defaults]
|
|
@@ -40,7 +44,8 @@ class Boolean < Base
|
|
|
40
44
|
|
|
41
45
|
# Check whether key is a known boolean field, if so, get truthiness.
|
|
42
46
|
def parse_field key, val, opts={}, &block
|
|
43
|
-
|
|
47
|
+
looky = opts[:boolean_lookup] || self.boolean_lookup
|
|
48
|
+
if looky.member?(key)
|
|
44
49
|
parse_value( val, opts, &block )
|
|
45
50
|
else
|
|
46
51
|
val
|
|
@@ -28,56 +28,54 @@ describe AutoBoolean do
|
|
|
28
28
|
end
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
-
describe '#
|
|
31
|
+
describe '#boolean_lookup' do
|
|
32
32
|
it 'defaults to empty list' do
|
|
33
|
-
subject.
|
|
33
|
+
subject.boolean_lookup.should be_empty
|
|
34
34
|
end
|
|
35
35
|
it 'returns truthiness when field is present' do
|
|
36
|
-
subject.
|
|
37
|
-
subject.
|
|
38
|
-
subject.auto_boolean_field( GOOD_KEY, GOOD_TRUE ).should be_true
|
|
36
|
+
subject.boolean_lookup = FIELDS_EXP
|
|
37
|
+
subject.boolean_field( GOOD_KEY, GOOD_TRUE ).should be_true
|
|
39
38
|
end
|
|
40
39
|
it 'returns orginal when field is missing' do
|
|
41
|
-
subject.
|
|
42
|
-
subject.
|
|
43
|
-
subject.auto_boolean_field( MISS_KEY, GOOD_TRUE ).should == GOOD_TRUE
|
|
40
|
+
subject.boolean_lookup = FIELDS_EXP
|
|
41
|
+
subject.boolean_field( MISS_KEY, GOOD_TRUE ).should == GOOD_TRUE
|
|
44
42
|
end
|
|
45
43
|
end
|
|
46
44
|
|
|
47
|
-
describe '#
|
|
45
|
+
describe '#boolean_value' do
|
|
48
46
|
|
|
49
47
|
context 'using defaults' do
|
|
50
48
|
context 'with known values' do
|
|
51
49
|
Parser::Boolean::DEFAULT_VALUES[true].each do |item|
|
|
52
50
|
it "returns true for: #{item}" do
|
|
53
|
-
subject.
|
|
51
|
+
subject.boolean_value(item).should be_true
|
|
54
52
|
end
|
|
55
53
|
end
|
|
56
54
|
end
|
|
57
55
|
Parser::Boolean::DEFAULT_VALUES[false].each do |item|
|
|
58
56
|
it "returns false for: #{item}" do
|
|
59
|
-
subject.
|
|
57
|
+
subject.boolean_value(item).should be_false
|
|
60
58
|
end
|
|
61
59
|
end
|
|
62
60
|
end
|
|
63
61
|
context 'with unknown values' do
|
|
64
62
|
it 'returns original value' do
|
|
65
|
-
subject.
|
|
63
|
+
subject.boolean_value(MISS_VAL).should == MISS_VAL
|
|
66
64
|
end
|
|
67
65
|
end
|
|
68
66
|
|
|
69
67
|
end
|
|
70
68
|
|
|
71
|
-
describe '#
|
|
69
|
+
describe '#boolean_field' do
|
|
72
70
|
context 'with present field' do
|
|
73
71
|
it 'converts value to boolean' do
|
|
74
|
-
subject.
|
|
75
|
-
subject.
|
|
72
|
+
subject.boolean_lookup = FIELDS_EXP
|
|
73
|
+
subject.boolean_field(GOOD_KEY,GOOD_TRUE).should be_true
|
|
76
74
|
end
|
|
77
75
|
end
|
|
78
76
|
context 'with invalid field' do
|
|
79
77
|
it 'returns original value' do
|
|
80
|
-
subject.
|
|
78
|
+
subject.boolean_field(MISS_KEY,MISS_VAL).should == MISS_VAL
|
|
81
79
|
end
|
|
82
80
|
end
|
|
83
81
|
end
|
|
@@ -22,32 +22,32 @@ describe AutoRename do
|
|
|
22
22
|
end
|
|
23
23
|
subject { @subj }
|
|
24
24
|
|
|
25
|
-
it { should respond_to :
|
|
26
|
-
it { should respond_to :
|
|
25
|
+
it { should respond_to :auto_tokenize? }
|
|
26
|
+
it { should respond_to :auto_tokenize! }
|
|
27
27
|
|
|
28
|
-
it { should respond_to :
|
|
29
|
-
describe '#
|
|
28
|
+
it { should respond_to :field_renames= }
|
|
29
|
+
describe '#field_renames' do
|
|
30
30
|
it 'defaults empty hash' do
|
|
31
|
-
subject.
|
|
31
|
+
subject.field_renames.should == {}
|
|
32
32
|
end
|
|
33
33
|
it 'returns set value' do
|
|
34
34
|
thing = { 'zip' => 'zap' }
|
|
35
|
-
subject.
|
|
36
|
-
subject.
|
|
35
|
+
subject.field_renames = thing
|
|
36
|
+
subject.field_renames.should == thing
|
|
37
37
|
end
|
|
38
38
|
end
|
|
39
39
|
|
|
40
|
-
describe '#
|
|
40
|
+
describe '#format_field' do
|
|
41
41
|
FIELD_CLEANUP_EXAMPLES.each_pair do |reason,examples|
|
|
42
42
|
it reason do
|
|
43
43
|
examples.each_pair do |key,val|
|
|
44
|
-
subject.
|
|
44
|
+
subject.format_field(key).should == val
|
|
45
45
|
end
|
|
46
46
|
end
|
|
47
47
|
end
|
|
48
48
|
end
|
|
49
49
|
|
|
50
|
-
describe '#
|
|
50
|
+
describe '#rename_field' do
|
|
51
51
|
|
|
52
52
|
ARF_RULES = {
|
|
53
53
|
'phasellus_tortor_elementum' => true, # clean and token
|
|
@@ -68,14 +68,14 @@ describe AutoRename do
|
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
before(:each) do
|
|
71
|
-
subject.
|
|
71
|
+
subject.field_renames = ARF_RULES
|
|
72
72
|
end
|
|
73
73
|
|
|
74
74
|
context 'with matched' do
|
|
75
75
|
ARF_EXPECTED.each_pair do |reason,examples|
|
|
76
76
|
it "#{reason} by rule" do
|
|
77
77
|
examples.each_pair do |get,put|
|
|
78
|
-
subject.
|
|
78
|
+
subject.rename_field(get).should == put
|
|
79
79
|
end
|
|
80
80
|
end
|
|
81
81
|
end
|
|
@@ -86,39 +86,39 @@ describe AutoRename do
|
|
|
86
86
|
let(:put_token) { :unknown }
|
|
87
87
|
let(:put_clean) { 'unknown' }
|
|
88
88
|
|
|
89
|
-
context 'using set :
|
|
89
|
+
context 'using set :auto_tokenize' do
|
|
90
90
|
|
|
91
91
|
it 'translates unknown into Symbol' do
|
|
92
|
-
subject.
|
|
93
|
-
subject.
|
|
92
|
+
subject.auto_tokenize! true
|
|
93
|
+
subject.rename_field(get_field).should == put_token
|
|
94
94
|
end
|
|
95
95
|
|
|
96
96
|
it 'translates unknown into String' do
|
|
97
|
-
subject.
|
|
98
|
-
subject.
|
|
97
|
+
subject.auto_tokenize! false
|
|
98
|
+
subject.rename_field(get_field).should == put_clean
|
|
99
99
|
end
|
|
100
100
|
|
|
101
101
|
it 'fails when not set' do
|
|
102
102
|
lambda do
|
|
103
|
-
subject.
|
|
103
|
+
subject.rename_field('missing')
|
|
104
104
|
end.should raise_error( ArgumentError, 'Unknown Auto Rename Field Value: missing' )
|
|
105
105
|
end
|
|
106
106
|
|
|
107
107
|
end
|
|
108
108
|
|
|
109
|
-
context 'using option :
|
|
109
|
+
context 'using option :auto_tokenize' do
|
|
110
110
|
|
|
111
|
-
it 'accepts :
|
|
112
|
-
subject.
|
|
111
|
+
it 'accepts :auto_tokenize when true' do
|
|
112
|
+
subject.rename_field( get_field, :auto_tokenize => true ).should == put_token
|
|
113
113
|
end
|
|
114
114
|
|
|
115
|
-
it 'accepts :
|
|
116
|
-
subject.
|
|
115
|
+
it 'accepts :auto_tokenize when false' do
|
|
116
|
+
subject.rename_field( get_field, :auto_tokenize => false ).should == put_clean
|
|
117
117
|
end
|
|
118
118
|
|
|
119
119
|
it 'fails when not set' do
|
|
120
120
|
lambda do
|
|
121
|
-
subject.
|
|
121
|
+
subject.rename_field('missing')
|
|
122
122
|
end.should raise_error( ArgumentError, 'Unknown Auto Rename Field Value: missing' )
|
|
123
123
|
end
|
|
124
124
|
end
|
|
@@ -7,19 +7,19 @@ describe Boolean do
|
|
|
7
7
|
EXTRA_KEY = 'ZAP'
|
|
8
8
|
EXTRA_TEXT = 'ZIP ZAP ZOOM'
|
|
9
9
|
|
|
10
|
-
it { should respond_to :
|
|
11
|
-
it { should respond_to :
|
|
12
|
-
|
|
10
|
+
it { should respond_to :boolean_lookup }
|
|
11
|
+
it { should respond_to :boolean_lookup= }
|
|
12
|
+
|
|
13
13
|
describe '#initialize' do
|
|
14
14
|
|
|
15
|
-
context 'using option :
|
|
15
|
+
context 'using option :boolean_lookup' do
|
|
16
16
|
it 'accepts when given' do
|
|
17
|
-
@subj = Boolean.new( :
|
|
18
|
-
@subj.
|
|
17
|
+
@subj = Boolean.new( :boolean_lookup => FIELDS_EXP )
|
|
18
|
+
@subj.boolean_lookup.should == FIELDS_EXP
|
|
19
19
|
end
|
|
20
20
|
it 'defaults as empty' do
|
|
21
21
|
@subj = Boolean.new
|
|
22
|
-
@subj.
|
|
22
|
+
@subj.boolean_lookup.should be_empty
|
|
23
23
|
end
|
|
24
24
|
end
|
|
25
25
|
|
|
@@ -86,7 +86,7 @@ describe Boolean do
|
|
|
86
86
|
|
|
87
87
|
describe '#parse_field' do
|
|
88
88
|
|
|
89
|
-
subject { Boolean.new :
|
|
89
|
+
subject { Boolean.new :boolean_lookup => FIELDS_EXP }
|
|
90
90
|
|
|
91
91
|
context 'with present field' do
|
|
92
92
|
|
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.
|
|
4
|
+
version: 2011.12.04.1
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,11 +9,11 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2011-
|
|
12
|
+
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: &82877040 !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: *82877040
|
|
25
25
|
- !ruby/object:Gem::Dependency
|
|
26
26
|
name: rspec
|
|
27
|
-
requirement: &
|
|
27
|
+
requirement: &82876800 !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: *82876800
|
|
36
36
|
- !ruby/object:Gem::Dependency
|
|
37
37
|
name: rdoc
|
|
38
|
-
requirement: &
|
|
38
|
+
requirement: &82876570 !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: *82876570
|
|
47
47
|
- !ruby/object:Gem::Dependency
|
|
48
48
|
name: mocha
|
|
49
|
-
requirement: &
|
|
49
|
+
requirement: &82876330 !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: *82876330
|
|
58
58
|
description: Collection of helpers for regular expression helpers.
|
|
59
59
|
email: gerald@kalafut.org
|
|
60
60
|
executables: []
|