errata 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
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