errata 0.2.1 → 0.2.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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.1
1
+ 0.2.2
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.2.1"
8
+ s.version = "0.2.2"
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{2010-05-06}
12
+ s.date = %q{2010-05-26}
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 = [
data/lib/errata.rb CHANGED
@@ -50,11 +50,7 @@ class Errata
50
50
  corrections.each { |erratum| erratum.correct!(row) }
51
51
  nil
52
52
  end
53
-
54
- def implied_matching_methods
55
- (rejections + corrections).map { |erratum| erratum.matching_method }.compact.uniq
56
- end
57
-
53
+
58
54
  def rejections
59
55
  @_rejections ||= table.rows.map { |hash| hash.symbolize_keys!; ::Errata::Erratum::Reject.new(self, hash) if hash[:action] == 'reject' }.compact
60
56
  end
@@ -13,7 +13,7 @@ class Errata
13
13
  end
14
14
 
15
15
  def targets?(row)
16
- !row[column].blank? and !row[second_column].blank? and method_matches?(row) and matching_expression(row).match(row[column])
16
+ !row[column].blank? and !row[second_column].blank? and conditions_match?(row) and matching_expression(row).match(row[column])
17
17
  end
18
18
 
19
19
  def correct!(row)
data/lib/erratum.rb CHANGED
@@ -1,21 +1,27 @@
1
1
  class Errata
2
2
  class Erratum
3
- attr_accessor :errata, :column, :matching_method
3
+ attr_accessor :errata, :column, :options
4
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?
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].present?
10
+ @options = options
11
+ end
12
+
13
+ def matching_methods
14
+ @_matching_methods ||= options[:condition].split(/\s+;\s+/).map do |method_id|
15
+ "#{method_id.strip.gsub(/[^a-z0-9]/i, '_').downcase}?"
16
+ end
11
17
  end
12
18
 
13
19
  def inspect
14
- "<#{self.class.name}:#{object_id} responder=#{responder.to_s} column=#{column} matching_method=#{matching_method}"
20
+ "<#{self.class.name}:#{object_id} responder=#{responder.to_s} column=#{column} matching_methods=#{matching_methods.inspect}"
15
21
  end
16
22
 
17
23
  def targets?(row)
18
- !!(method_matches?(row) and expression_matches?(row))
24
+ !!(conditions_match?(row) and expression_matches?(row))
19
25
  end
20
26
 
21
27
  def correct!(row, &block)
@@ -45,9 +51,8 @@ class Errata
45
51
  end
46
52
  end
47
53
 
48
- def method_matches?(row)
49
- return true if matching_method.nil?
50
- responder.send(matching_method, row)
54
+ def conditions_match?(row)
55
+ matching_methods.all? { |method_id| responder.send method_id, row }
51
56
  end
52
57
 
53
58
  def set_matching_expression(options = {})
data/test/errata_test.rb CHANGED
@@ -33,10 +33,6 @@ class AutomobileVariantGuru
33
33
  row.slice('MFR', 'Manufacturer', 'carline_mfr_name').any? { |k, v| v.upcase == 'FORD' }
34
34
  end
35
35
 
36
- def is_a_rolls_royce_and_model_contains_bentley?(row)
37
- is_a_rolls_royce?(row) and model_contains_bentley?(row)
38
- end
39
-
40
36
  def is_a_bentley?(row)
41
37
  row.slice('MFR', 'Manufacturer', 'carline_mfr_name').any? { |k, v| v.upcase == 'BENTLEY' }
42
38
  end
@@ -89,4 +85,10 @@ class ErrataTest < Test::Unit::TestCase
89
85
  e.correct!(alfa)
90
86
  assert_equal 'Alfa Romeo', alfa['carline_mfr_name']
91
87
  end
88
+
89
+ should "try multiple conditions" do
90
+ bentley = { 'carline_mfr_name' => 'ROLLS-ROYCE BENTLEY', "carline name" => 'Super Bentley' }
91
+ @e.correct!(bentley)
92
+ assert_equal 'Bentley', bentley['carline_mfr_name']
93
+ end
92
94
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 2
8
- - 1
9
- version: 0.2.1
8
+ - 2
9
+ version: 0.2.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - Seamus Abshere
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-05-06 00:00:00 -04:00
18
+ date: 2010-05-26 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency