remote_table 0.2.19 → 0.2.20

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -15,6 +15,7 @@ begin
15
15
  gem.add_dependency 'activesupport', '>=2.3.4'
16
16
  gem.add_dependency 'slither', '>=0.99.3'
17
17
  gem.add_dependency 'nokogiri', '>=1.4.1'
18
+ gem.add_development_dependency 'errata', '>=0.2.0'
18
19
  gem.require_path = "lib"
19
20
  gem.rdoc_options << '--line-numbers' << '--inline-source'
20
21
  gem.requirements << 'curl'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.19
1
+ 0.2.20
data/lib/remote_table.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  require 'digest/md5'
2
- require 'iconv'
3
2
  require 'uri'
4
3
  require 'tmpdir'
5
4
  require 'active_support'
@@ -1,6 +1,7 @@
1
1
  class RemoteTable
2
2
  class Transform
3
3
  attr_accessor :select, :reject, :transform_class, :transform_options, :transform, :raw_table
4
+ attr_accessor :errata
4
5
 
5
6
  def initialize(bus)
6
7
  if transform_params = bus.delete(:transform)
@@ -11,8 +12,10 @@ class RemoteTable
11
12
  end
12
13
  @select = bus[:select]
13
14
  @reject = bus[:reject]
15
+ @errata = bus[:errata]
14
16
  end
15
17
 
18
+ # the null transformation
16
19
  def apply(raw_table)
17
20
  self.raw_table = raw_table
18
21
  self
@@ -30,6 +33,10 @@ class RemoteTable
30
33
  row['row_hash'] = self.class.row_hash(row)
31
34
  virtual_rows = transform ? transform.apply(row) : row # allow transform.apply(row) to return multiple rows
32
35
  Array.wrap(virtual_rows).each do |virtual_row|
36
+ if errata
37
+ next if errata.rejects? virtual_row
38
+ errata.correct! virtual_row
39
+ end
33
40
  next if select and !select.call(virtual_row)
34
41
  next if reject and reject.call(virtual_row)
35
42
  yield virtual_row
data/remote_table.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{remote_table}
8
- s.version = "0.2.19"
8
+ s.version = "0.2.20"
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-04-28}
12
+ s.date = %q{2010-05-05}
13
13
  s.description = %q{Remotely open and parse Excel XLS, ODS, CSV and fixed-width tables.}
14
14
  s.email = %q{seamus@abshere.net}
15
15
  s.extra_rdoc_files = [
@@ -61,12 +61,14 @@ Gem::Specification.new do |s|
61
61
  s.add_runtime_dependency(%q<activesupport>, [">= 2.3.4"])
62
62
  s.add_runtime_dependency(%q<slither>, [">= 0.99.3"])
63
63
  s.add_runtime_dependency(%q<nokogiri>, [">= 1.4.1"])
64
+ s.add_development_dependency(%q<errata>, [">= 0.2.0"])
64
65
  else
65
66
  s.add_dependency(%q<roo>, ["= 1.3.11"])
66
67
  s.add_dependency(%q<fastercsv>, [">= 1.5.0"])
67
68
  s.add_dependency(%q<activesupport>, [">= 2.3.4"])
68
69
  s.add_dependency(%q<slither>, [">= 0.99.3"])
69
70
  s.add_dependency(%q<nokogiri>, [">= 1.4.1"])
71
+ s.add_dependency(%q<errata>, [">= 0.2.0"])
70
72
  end
71
73
  else
72
74
  s.add_dependency(%q<roo>, ["= 1.3.11"])
@@ -74,6 +76,7 @@ Gem::Specification.new do |s|
74
76
  s.add_dependency(%q<activesupport>, [">= 2.3.4"])
75
77
  s.add_dependency(%q<slither>, [">= 0.99.3"])
76
78
  s.add_dependency(%q<nokogiri>, [">= 1.4.1"])
79
+ s.add_dependency(%q<errata>, [">= 0.2.0"])
77
80
  end
78
81
  end
79
82
 
@@ -36,6 +36,36 @@ class FuelOilParser
36
36
  end
37
37
  end
38
38
 
39
+ class AircraftGuru
40
+ def is_not_attributed_to_aerospatiale?(row)
41
+ not row['Manufacturer'] =~ /AEROSPATIALE/i
42
+ end
43
+
44
+ def is_not_attributed_to_cessna?(row)
45
+ not row['Manufacturer'] =~ /CESSNA/i
46
+ end
47
+
48
+ def is_not_attributed_to_learjet?(row)
49
+ not row['Manufacturer'] =~ /LEAR/i
50
+ end
51
+
52
+ def is_not_attributed_to_dehavilland?(row)
53
+ not row['Manufacturer'] =~ /DE ?HAVILLAND/i
54
+ end
55
+
56
+ def is_not_attributed_to_mcdonnell_douglas?(row)
57
+ not row['Manufacturer'] =~ /MCDONNELL DOUGLAS/i
58
+ end
59
+
60
+ def is_not_a_dc_plane?(row)
61
+ not row['Model'] =~ /DC/i
62
+ end
63
+
64
+ def is_a_crj_900?(row)
65
+ row['Designator'].downcase == 'crj9'
66
+ end
67
+ end
68
+
39
69
  class RemoteTableTest < Test::Unit::TestCase
40
70
  def setup
41
71
  @test2_rows_with_blanks = [
@@ -97,7 +127,24 @@ class RemoteTableTest < Test::Unit::TestCase
97
127
  end
98
128
  end
99
129
 
130
+ if ENV['ALL'] == 'true' or ENV['NEW'] == 'true'
131
+ end
132
+
100
133
  if ENV['ALL'] == 'true' or ENV['FAST'] == 'true'
134
+ should "be able to apply errata files" do
135
+ t = RemoteTable.new :url => "http://www.faa.gov/air_traffic/publications/atpubs/CNT/5-2-G.htm",
136
+ :encoding => 'US-ASCII',
137
+ :row_xpath => '//table/tr[2]/td/table/tr',
138
+ :column_xpath => 'td',
139
+ :errata => Errata.new(:table => RemoteTable.new(:url => 'http://spreadsheets.google.com/pub?key=tObVAGyqOkCBtGid0tJUZrw'),
140
+ :responder => AircraftGuru.new)
141
+ g1 = t.rows.detect { |row| row['Model'] =~ /Gulfstream I/ }
142
+ assert g1
143
+ assert_equal 'GRUMMAN', g1['Manufacturer']
144
+ assert_equal 'G159 Gulfstream I (TC4 Academe, VC4)', g1['Model']
145
+ end
146
+
147
+ # this will die with an error about libcurl if your curl doesn't support ssl
101
148
  should "connect using HTTPS if available" do
102
149
  t = RemoteTable.new(:url => 'https://spreadsheets.google.com/pub?key=t5HM1KbaRngmTUbntg8JwPA')
103
150
  assert_equal 'Gulf Coast', t.rows.first['PAD district name']
data/test/test_helper.rb CHANGED
@@ -2,6 +2,7 @@ require 'rubygems'
2
2
  require 'test/unit'
3
3
  require 'shoulda'
4
4
  require 'ruby-debug'
5
+ require 'errata'
5
6
 
6
7
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
7
8
  $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
- - 19
9
- version: 0.2.19
8
+ - 20
9
+ version: 0.2.20
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-04-28 00:00:00 -04:00
18
+ date: 2010-05-05 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -88,6 +88,20 @@ dependencies:
88
88
  version: 1.4.1
89
89
  type: :runtime
90
90
  version_requirements: *id005
91
+ - !ruby/object:Gem::Dependency
92
+ name: errata
93
+ prerelease: false
94
+ requirement: &id006 !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ segments:
99
+ - 0
100
+ - 2
101
+ - 0
102
+ version: 0.2.0
103
+ type: :development
104
+ version_requirements: *id006
91
105
  description: Remotely open and parse Excel XLS, ODS, CSV and fixed-width tables.
92
106
  email: seamus@abshere.net
93
107
  executables: []