errata 0.1.9 → 0.2.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/Rakefile +1 -1
- data/VERSION +1 -1
- data/errata.gemspec +4 -4
- data/lib/errata.rb +6 -6
- data/lib/erratum.rb +3 -3
- data/test/errata_test.rb +45 -46
- data/test/test_helper.rb +1 -0
- metadata +6 -6
data/Rakefile
CHANGED
@@ -11,7 +11,7 @@ begin
|
|
11
11
|
gem.homepage = "http://github.com/seamusabshere/errata"
|
12
12
|
gem.authors = ["Seamus Abshere", "Andy Rossmeissl"]
|
13
13
|
gem.add_dependency 'activesupport', '>=2.3.4'
|
14
|
-
gem.
|
14
|
+
gem.add_development_dependency 'remote_table', '>=0.2.19'
|
15
15
|
gem.require_path = "lib"
|
16
16
|
gem.files.include %w(lib/erratum) unless gem.files.empty? # seems to fail once it's in the wild
|
17
17
|
gem.rdoc_options << '--line-numbers' << '--inline-source'
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/errata.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{errata}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.2.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Seamus Abshere", "Andy Rossmeissl"]
|
@@ -52,14 +52,14 @@ Gem::Specification.new do |s|
|
|
52
52
|
|
53
53
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
54
54
|
s.add_runtime_dependency(%q<activesupport>, [">= 2.3.4"])
|
55
|
-
s.
|
55
|
+
s.add_development_dependency(%q<remote_table>, [">= 0.2.19"])
|
56
56
|
else
|
57
57
|
s.add_dependency(%q<activesupport>, [">= 2.3.4"])
|
58
|
-
s.add_dependency(%q<remote_table>, [">= 0.2.
|
58
|
+
s.add_dependency(%q<remote_table>, [">= 0.2.19"])
|
59
59
|
end
|
60
60
|
else
|
61
61
|
s.add_dependency(%q<activesupport>, [">= 2.3.4"])
|
62
|
-
s.add_dependency(%q<remote_table>, [">= 0.2.
|
62
|
+
s.add_dependency(%q<remote_table>, [">= 0.2.19"])
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
data/lib/errata.rb
CHANGED
@@ -7,7 +7,6 @@ require 'active_support/version'
|
|
7
7
|
}.each do |active_support_3_requirement|
|
8
8
|
require active_support_3_requirement
|
9
9
|
end if ActiveSupport::VERSION::MAJOR == 3
|
10
|
-
require 'remote_table'
|
11
10
|
require 'erratum'
|
12
11
|
require 'erratum/delete'
|
13
12
|
require 'erratum/reject'
|
@@ -19,11 +18,12 @@ require 'erratum/truncate'
|
|
19
18
|
class Errata
|
20
19
|
ERRATUM_TYPES = %w{delete replace simplify transform truncate}
|
21
20
|
|
22
|
-
attr_reader :
|
21
|
+
attr_reader :responder
|
22
|
+
attr_reader :table
|
23
23
|
|
24
24
|
def initialize(options = {})
|
25
|
-
@
|
26
|
-
@
|
25
|
+
@responder = options[:responder]
|
26
|
+
@table = options[:table]
|
27
27
|
end
|
28
28
|
|
29
29
|
def rejects?(row)
|
@@ -40,10 +40,10 @@ class Errata
|
|
40
40
|
end
|
41
41
|
|
42
42
|
def rejections
|
43
|
-
@_rejections ||=
|
43
|
+
@_rejections ||= table.rows.map { |hash| hash.symbolize_keys!; ::Errata::Erratum::Reject.new(self, hash) if hash[:action] == 'reject' }.compact
|
44
44
|
end
|
45
45
|
|
46
46
|
def corrections
|
47
|
-
@_corrections ||=
|
47
|
+
@_corrections ||= table.rows.map { |hash| hash.symbolize_keys!; "::Errata::Erratum::#{hash[:action].camelcase}".constantize.new(self, hash) if ERRATUM_TYPES.include?(hash[:action]) }.compact
|
48
48
|
end
|
49
49
|
end
|
data/lib/erratum.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
class Errata
|
2
2
|
class Erratum
|
3
3
|
attr_accessor :errata, :column, :matching_method
|
4
|
-
delegate :
|
4
|
+
delegate :responder, :to => :errata
|
5
5
|
|
6
6
|
def initialize(errata, options = {})
|
7
7
|
raise "you can't set this from outside" if options[:prefix].present?
|
@@ -11,7 +11,7 @@ class Errata
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def inspect
|
14
|
-
"<#{self.class.name}:#{object_id}
|
14
|
+
"<#{self.class.name}:#{object_id} responder=#{responder.to_s} column=#{column} matching_method=#{matching_method}"
|
15
15
|
end
|
16
16
|
|
17
17
|
def targets?(row)
|
@@ -47,7 +47,7 @@ class Errata
|
|
47
47
|
|
48
48
|
def method_matches?(row)
|
49
49
|
return true if matching_method.nil?
|
50
|
-
|
50
|
+
responder.send(matching_method, row)
|
51
51
|
end
|
52
52
|
|
53
53
|
def set_matching_expression(options = {})
|
data/test/errata_test.rb
CHANGED
@@ -1,68 +1,67 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
-
class
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
end
|
3
|
+
class AutomobileVariantGuru
|
4
|
+
def transmission_is_blank?(row)
|
5
|
+
row['transmission'].blank?
|
6
|
+
end
|
8
7
|
|
9
|
-
|
10
|
-
|
11
|
-
|
8
|
+
def is_a_2007_gmc_or_chevrolet?(row)
|
9
|
+
row['year'] == 2007 and %w(GMC CHEVROLET).include? row['MFR'].upcase
|
10
|
+
end
|
12
11
|
|
13
|
-
|
14
|
-
|
15
|
-
|
12
|
+
def is_a_porsche?(row)
|
13
|
+
row.slice('MFR', 'Manufacturer', 'carline_mfr_name').any? { |k, v| v.upcase == 'PORSCHE' }
|
14
|
+
end
|
16
15
|
|
17
|
-
|
18
|
-
|
19
|
-
|
16
|
+
def is_not_a_porsche?(row)
|
17
|
+
!is_a_porsche? row
|
18
|
+
end
|
20
19
|
|
21
|
-
|
22
|
-
|
23
|
-
|
20
|
+
def is_a_mercedes_benz?(row)
|
21
|
+
row.slice('MFR', 'Manufacturer', 'carline_mfr_name').any? { |k, v| v =~ /MERCEDES/i }
|
22
|
+
end
|
24
23
|
|
25
|
-
|
26
|
-
|
27
|
-
|
24
|
+
def is_a_lexus?(row)
|
25
|
+
row.slice('MFR', 'Manufacturer', 'carline_mfr_name').any? { |k, v| v.upcase == 'LEXUS' }
|
26
|
+
end
|
28
27
|
|
29
|
-
|
30
|
-
|
31
|
-
|
28
|
+
def is_a_bmw?(row)
|
29
|
+
row.slice('MFR', 'Manufacturer', 'carline_mfr_name').any? { |k, v| v.upcase == 'BMW' }
|
30
|
+
end
|
32
31
|
|
33
|
-
|
34
|
-
|
35
|
-
|
32
|
+
def is_a_ford?(row)
|
33
|
+
row.slice('MFR', 'Manufacturer', 'carline_mfr_name').any? { |k, v| v.upcase == 'FORD' }
|
34
|
+
end
|
36
35
|
|
37
|
-
|
38
|
-
|
39
|
-
|
36
|
+
def is_a_rolls_royce_and_model_contains_bentley?(row)
|
37
|
+
is_a_rolls_royce?(row) and model_contains_bentley?(row)
|
38
|
+
end
|
40
39
|
|
41
|
-
|
42
|
-
|
43
|
-
|
40
|
+
def is_a_bentley?(row)
|
41
|
+
row.slice('MFR', 'Manufacturer', 'carline_mfr_name').any? { |k, v| v.upcase == 'BENTLEY' }
|
42
|
+
end
|
44
43
|
|
45
|
-
|
46
|
-
|
47
|
-
|
44
|
+
def is_a_rolls_royce?(row)
|
45
|
+
row.slice('MFR', 'Manufacturer', 'carline_mfr_name').any? { |k, v| v =~ /ROLLS/i }
|
46
|
+
end
|
48
47
|
|
49
|
-
|
50
|
-
|
51
|
-
|
48
|
+
def is_a_turbo_brooklands?(row)
|
49
|
+
row.slice('CAR LINE', 'carline name', 'carline_name').any? { |k, v| v =~ /TURBO R\/RL BKLDS/i }
|
50
|
+
end
|
52
51
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
end
|
52
|
+
def model_contains_maybach?(row)
|
53
|
+
row.slice('CAR LINE', 'carline name', 'carline_name').any? { |k, v| v =~ /MAYBACH/i }
|
54
|
+
end
|
55
|
+
|
56
|
+
def model_contains_bentley?(row)
|
57
|
+
row.slice('CAR LINE', 'carline name', 'carline_name').any? { |k, v| v =~ /BENTLEY/i }
|
60
58
|
end
|
61
59
|
end
|
62
60
|
|
63
61
|
class ErrataTest < Test::Unit::TestCase
|
64
62
|
def setup
|
65
|
-
@e = Errata.new(:url => 'http://spreadsheets.google.com/pub?key=t9WkYT39zjrStx7ruCFrZJg',
|
63
|
+
@e = Errata.new :table => RemoteTable.new(:url => 'http://spreadsheets.google.com/pub?key=t9WkYT39zjrStx7ruCFrZJg'),
|
64
|
+
:responder => AutomobileVariantGuru.new
|
66
65
|
end
|
67
66
|
|
68
67
|
should "correct rows" do
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
8
|
-
-
|
9
|
-
version: 0.
|
7
|
+
- 2
|
8
|
+
- 0
|
9
|
+
version: 0.2.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Seamus Abshere
|
@@ -42,9 +42,9 @@ dependencies:
|
|
42
42
|
segments:
|
43
43
|
- 0
|
44
44
|
- 2
|
45
|
-
-
|
46
|
-
version: 0.2.
|
47
|
-
type: :
|
45
|
+
- 19
|
46
|
+
version: 0.2.19
|
47
|
+
type: :development
|
48
48
|
version_requirements: *id002
|
49
49
|
description: Correct strings based on remote errata files
|
50
50
|
email: seamus@abshere.net
|