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 +1 -0
- data/VERSION +1 -1
- data/lib/remote_table.rb +0 -1
- data/lib/remote_table/transform.rb +7 -0
- data/remote_table.gemspec +5 -2
- data/test/remote_table_test.rb +47 -0
- data/test/test_helper.rb +1 -0
- metadata +17 -3
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.
|
1
|
+
0.2.20
|
data/lib/remote_table.rb
CHANGED
@@ -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.
|
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-
|
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
|
|
data/test/remote_table_test.rb
CHANGED
@@ -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
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 2
|
8
|
-
-
|
9
|
-
version: 0.2.
|
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-
|
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: []
|