errata 0.2.0 → 0.2.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/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.add_development_dependency 'remote_table', '>=0.2.19'
14
+ gem.add_dependency 'remote_table', '>=0.2.20'
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.2.0
1
+ 0.2.1
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.0"
8
+ s.version = "0.2.1"
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-05}
12
+ s.date = %q{2010-05-06}
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 = [
@@ -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.add_development_dependency(%q<remote_table>, [">= 0.2.19"])
55
+ s.add_runtime_dependency(%q<remote_table>, [">= 0.2.20"])
56
56
  else
57
57
  s.add_dependency(%q<activesupport>, [">= 2.3.4"])
58
- s.add_dependency(%q<remote_table>, [">= 0.2.19"])
58
+ s.add_dependency(%q<remote_table>, [">= 0.2.20"])
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.19"])
62
+ s.add_dependency(%q<remote_table>, [">= 0.2.20"])
63
63
  end
64
64
  end
65
65
 
data/lib/errata.rb CHANGED
@@ -7,6 +7,7 @@ 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'
10
11
  require 'erratum'
11
12
  require 'erratum/delete'
12
13
  require 'erratum/reject'
@@ -18,12 +19,27 @@ require 'erratum/truncate'
18
19
  class Errata
19
20
  ERRATUM_TYPES = %w{delete replace simplify transform truncate}
20
21
 
21
- attr_reader :responder
22
- attr_reader :table
22
+ attr_reader :options
23
23
 
24
+ # Arguments
25
+ # * <tt>:responder</tt> (required) - normally you pass this something like Guru.new, which should respond to questions like #is_a_bentley?. If you pass a string, it will be lazily constantized and a new object initialized from it; for example, 'Guru' will lead to 'Guru'.constantize.new.
26
+ # * <tt>:table</tt> - takes something that acts like a RemoteTable
27
+ # If and only if you don't pass <tt>:table</tt>, all other options will be passed to a new RemoteTable (for example, <tt>:url</tt>, etc.)
24
28
  def initialize(options = {})
25
- @responder = options[:responder]
26
- @table = options[:table]
29
+ options.symbolize_keys!
30
+ @options = options
31
+ end
32
+
33
+ def table
34
+ @_table ||= if options[:table].present?
35
+ options[:table]
36
+ else
37
+ RemoteTable.new options.except(:responder)
38
+ end
39
+ end
40
+
41
+ def responder
42
+ @_responder ||= (options[:responder].is_a?(String) ? options[:responder].constantize.new : options[:responder])
27
43
  end
28
44
 
29
45
  def rejects?(row)
data/test/errata_test.rb CHANGED
@@ -73,4 +73,20 @@ class ErrataTest < Test::Unit::TestCase
73
73
  should "reject rows" do
74
74
  assert @e.rejects?('carline_mfr_name' => 'AURORA CARS')
75
75
  end
76
+
77
+ should "lazily constantize and initialize responder" do
78
+ e = Errata.new :table => RemoteTable.new(:url => 'http://spreadsheets.google.com/pub?key=t9WkYT39zjrStx7ruCFrZJg'),
79
+ :responder => 'AutomobileVariantGuru'
80
+ alfa = { "carline_mfr_name"=>"ALFA ROMEO" }
81
+ e.correct!(alfa)
82
+ assert_equal 'Alfa Romeo', alfa['carline_mfr_name']
83
+ end
84
+
85
+ should "pass options to RemoteTable if no :table is specified" do
86
+ e = Errata.new :url => 'http://spreadsheets.google.com/pub?key=t9WkYT39zjrStx7ruCFrZJg',
87
+ :responder => AutomobileVariantGuru.new
88
+ alfa = { "carline_mfr_name"=>"ALFA ROMEO" }
89
+ e.correct!(alfa)
90
+ assert_equal 'Alfa Romeo', alfa['carline_mfr_name']
91
+ end
76
92
  end
data/test/test_helper.rb CHANGED
@@ -1,7 +1,6 @@
1
1
  require 'rubygems'
2
2
  require 'test/unit'
3
3
  require 'shoulda'
4
- require 'remote_table'
5
4
 
6
5
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
7
6
  $LOAD_PATH.unshift(File.dirname(__FILE__))
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 2
8
- - 0
9
- version: 0.2.0
8
+ - 1
9
+ version: 0.2.1
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-05 00:00:00 -04:00
18
+ date: 2010-05-06 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -42,9 +42,9 @@ dependencies:
42
42
  segments:
43
43
  - 0
44
44
  - 2
45
- - 19
46
- version: 0.2.19
47
- type: :development
45
+ - 20
46
+ version: 0.2.20
47
+ type: :runtime
48
48
  version_requirements: *id002
49
49
  description: Correct strings based on remote errata files
50
50
  email: seamus@abshere.net