errata 0.1.4 → 0.1.5
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 +2 -1
- data/VERSION +1 -1
- data/errata.gemspec +8 -8
- data/lib/errata.rb +5 -4
- data/lib/erratum.rb +2 -2
- data/test/errata_test.rb +63 -20
- metadata +6 -6
data/Rakefile
CHANGED
@@ -10,7 +10,8 @@ begin
|
|
10
10
|
gem.email = "seamus@abshere.net"
|
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.add_dependency 'remote_table', '~>0.2.1'
|
14
15
|
gem.require_path = "lib"
|
15
16
|
gem.files.include %w(lib/erratum) unless gem.files.empty? # seems to fail once it's in the wild
|
16
17
|
gem.rdoc_options << '--line-numbers' << '--inline-source'
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.5
|
data/errata.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{errata}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.5"
|
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"]
|
12
|
-
s.date = %q{
|
12
|
+
s.date = %q{2010-02-25}
|
13
13
|
s.description = %q{Correct strings based on remote errata files}
|
14
14
|
s.email = %q{seamus@abshere.net}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -51,15 +51,15 @@ Gem::Specification.new do |s|
|
|
51
51
|
s.specification_version = 3
|
52
52
|
|
53
53
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
54
|
-
s.add_runtime_dependency(%q<activesupport>, ["
|
55
|
-
s.add_runtime_dependency(%q<remote_table>, ["
|
54
|
+
s.add_runtime_dependency(%q<activesupport>, ["~> 2.3.4"])
|
55
|
+
s.add_runtime_dependency(%q<remote_table>, ["~> 0.2.1"])
|
56
56
|
else
|
57
|
-
s.add_dependency(%q<activesupport>, ["
|
58
|
-
s.add_dependency(%q<remote_table>, ["
|
57
|
+
s.add_dependency(%q<activesupport>, ["~> 2.3.4"])
|
58
|
+
s.add_dependency(%q<remote_table>, ["~> 0.2.1"])
|
59
59
|
end
|
60
60
|
else
|
61
|
-
s.add_dependency(%q<activesupport>, ["
|
62
|
-
s.add_dependency(%q<remote_table>, ["
|
61
|
+
s.add_dependency(%q<activesupport>, ["~> 2.3.4"])
|
62
|
+
s.add_dependency(%q<remote_table>, ["~> 0.2.1"])
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
data/lib/errata.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
|
-
require '
|
2
|
-
require 'activesupport'
|
1
|
+
require 'active_support'
|
3
2
|
require 'remote_table'
|
4
3
|
require 'erratum'
|
5
4
|
require 'erratum/delete'
|
@@ -10,6 +9,8 @@ require 'erratum/transform'
|
|
10
9
|
require 'erratum/truncate'
|
11
10
|
|
12
11
|
class Errata
|
12
|
+
ERRATUM_TYPES = %w{delete replace simplify transform truncate}
|
13
|
+
|
13
14
|
attr_reader :klass
|
14
15
|
|
15
16
|
def initialize(options = {})
|
@@ -33,10 +34,10 @@ class Errata
|
|
33
34
|
private
|
34
35
|
|
35
36
|
def rejections
|
36
|
-
@_rejections ||= @_table.rows.map { |
|
37
|
+
@_rejections ||= @_table.rows.map { |hash| hash.symbolize_keys!; ::Errata::Erratum::Reject.new(self, hash) if hash[:action] == 'reject' }.compact
|
37
38
|
end
|
38
39
|
|
39
40
|
def corrections
|
40
|
-
@_corrections ||= @_table.rows.map { |
|
41
|
+
@_corrections ||= @_table.rows.map { |hash| hash.symbolize_keys!; "::Errata::Erratum::#{hash[:action].camelcase}".constantize.new(self, hash) if ERRATUM_TYPES.include?(hash[:action]) }.compact
|
41
42
|
end
|
42
43
|
end
|
data/lib/erratum.rb
CHANGED
@@ -4,10 +4,10 @@ class Errata
|
|
4
4
|
delegate :klass, :to => :errata
|
5
5
|
|
6
6
|
def initialize(errata, options = {})
|
7
|
-
raise "you can't set this from outside" if options.
|
7
|
+
raise "you can't set this from outside" if options[:prefix].present?
|
8
8
|
@errata = errata
|
9
9
|
@column = options[:section]
|
10
|
-
@matching_method = "#{options[:condition].gsub(/[^a-z0-9]/i, '_').downcase}?".to_sym if options[:condition]
|
10
|
+
@matching_method = "#{options[:condition].gsub(/[^a-z0-9]/i, '_').downcase}?".to_sym if options[:condition].present?
|
11
11
|
end
|
12
12
|
|
13
13
|
def inspect
|
data/test/errata_test.rb
CHANGED
@@ -1,34 +1,77 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
-
class
|
4
|
-
|
5
|
-
row
|
3
|
+
class AutomobileVariant
|
4
|
+
class << self
|
5
|
+
def transmission_is_blank?(row)
|
6
|
+
row['transmission'].blank?
|
7
|
+
end
|
8
|
+
|
9
|
+
def is_a_2007_gmc_or_chevrolet?(row)
|
10
|
+
row['year'] == 2007 and %w(GMC CHEVROLET).include? row['MFR'].upcase
|
11
|
+
end
|
12
|
+
|
13
|
+
def is_a_porsche?(row)
|
14
|
+
row.slice('MFR', 'Manufacturer', 'carline_mfr_name').any? { |k, v| v.upcase == 'PORSCHE' }
|
15
|
+
end
|
16
|
+
|
17
|
+
def is_not_a_porsche?(row)
|
18
|
+
!is_a_porsche? row
|
19
|
+
end
|
20
|
+
|
21
|
+
def is_a_mercedes_benz?(row)
|
22
|
+
row.slice('MFR', 'Manufacturer', 'carline_mfr_name').any? { |k, v| v =~ /MERCEDES/i }
|
23
|
+
end
|
24
|
+
|
25
|
+
def is_a_lexus?(row)
|
26
|
+
row.slice('MFR', 'Manufacturer', 'carline_mfr_name').any? { |k, v| v.upcase == 'LEXUS' }
|
27
|
+
end
|
28
|
+
|
29
|
+
def is_a_bmw?(row)
|
30
|
+
row.slice('MFR', 'Manufacturer', 'carline_mfr_name').any? { |k, v| v.upcase == 'BMW' }
|
31
|
+
end
|
32
|
+
|
33
|
+
def is_a_ford?(row)
|
34
|
+
row.slice('MFR', 'Manufacturer', 'carline_mfr_name').any? { |k, v| v.upcase == 'FORD' }
|
35
|
+
end
|
36
|
+
|
37
|
+
def is_a_rolls_royce_and_model_contains_bentley?(row)
|
38
|
+
is_a_rolls_royce?(row) and model_contains_bentley?(row)
|
39
|
+
end
|
40
|
+
|
41
|
+
def is_a_bentley?(row)
|
42
|
+
row.slice('MFR', 'Manufacturer', 'carline_mfr_name').any? { |k, v| v.upcase == 'BENTLEY' }
|
43
|
+
end
|
44
|
+
|
45
|
+
def is_a_rolls_royce?(row)
|
46
|
+
row.slice('MFR', 'Manufacturer', 'carline_mfr_name').any? { |k, v| v =~ /ROLLS/i }
|
47
|
+
end
|
48
|
+
|
49
|
+
def is_a_turbo_brooklands?(row)
|
50
|
+
row.slice('CAR LINE', 'carline name', 'carline_name').any? { |k, v| v =~ /TURBO R\/RL BKLDS/i }
|
51
|
+
end
|
52
|
+
|
53
|
+
def model_contains_maybach?(row)
|
54
|
+
row.slice('CAR LINE', 'carline name', 'carline_name').any? { |k, v| v =~ /MAYBACH/i }
|
55
|
+
end
|
56
|
+
|
57
|
+
def model_contains_bentley?(row)
|
58
|
+
row.slice('CAR LINE', 'carline name', 'carline_name').any? { |k, v| v =~ /BENTLEY/i }
|
59
|
+
end
|
6
60
|
end
|
7
61
|
end
|
8
62
|
|
9
63
|
class ErrataTest < Test::Unit::TestCase
|
10
64
|
def setup
|
11
|
-
@e = Errata.new(:url => 'http://
|
12
|
-
end
|
13
|
-
|
14
|
-
should "return implied matching methods" do
|
15
|
-
flunk "create a fake errata for Brewery"
|
16
|
-
end
|
17
|
-
|
18
|
-
should "use matching methods" do
|
19
|
-
flunk "create a fake errata for Brewery"
|
65
|
+
@e = Errata.new(:url => 'http://spreadsheets.google.com/pub?key=t9WkYT39zjrStx7ruCFrZJg', :klass => AutomobileVariant)
|
20
66
|
end
|
21
|
-
|
67
|
+
|
22
68
|
should "correct rows" do
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
@e.correct!(rover)
|
27
|
-
assert_equal 'Mercedes-Benz', mercedes['manufacturer_name']
|
28
|
-
assert_equal 'Rover', rover['manufacturer_name']
|
69
|
+
alfa = { "carline_mfr_name"=>"ALFA ROMEO" }
|
70
|
+
@e.correct!(alfa)
|
71
|
+
assert_equal 'Alfa Romeo', alfa['carline_mfr_name']
|
29
72
|
end
|
30
73
|
|
31
74
|
should "reject rows" do
|
32
|
-
assert @e.rejects?('
|
75
|
+
assert @e.rejects?('carline_mfr_name' => 'AURORA CARS')
|
33
76
|
end
|
34
77
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: errata
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Seamus Abshere
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date:
|
13
|
+
date: 2010-02-25 00:00:00 -05:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -19,9 +19,9 @@ dependencies:
|
|
19
19
|
version_requirement:
|
20
20
|
version_requirements: !ruby/object:Gem::Requirement
|
21
21
|
requirements:
|
22
|
-
- -
|
22
|
+
- - ~>
|
23
23
|
- !ruby/object:Gem::Version
|
24
|
-
version:
|
24
|
+
version: 2.3.4
|
25
25
|
version:
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: remote_table
|
@@ -29,9 +29,9 @@ dependencies:
|
|
29
29
|
version_requirement:
|
30
30
|
version_requirements: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
|
-
- -
|
32
|
+
- - ~>
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version:
|
34
|
+
version: 0.2.1
|
35
35
|
version:
|
36
36
|
description: Correct strings based on remote errata files
|
37
37
|
email: seamus@abshere.net
|