remote_table 0.2.19 → 0.2.20

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
@@ -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: []