remote_table 1.0.3 → 1.1.0
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/CHANGELOG +4 -0
- data/README.rdoc +0 -2
- data/lib/remote_table.rb +0 -3
- data/lib/remote_table/format.rb +0 -2
- data/lib/remote_table/hasher.rb +14 -16
- data/lib/remote_table/local_file.rb +2 -1
- data/lib/remote_table/properties.rb +1 -5
- data/lib/remote_table/version.rb +1 -1
- data/remote_table.gemspec +9 -3
- data/test/helper.rb +0 -7
- data/test/test_remote_table.rb +2 -6
- metadata +27 -11
data/CHANGELOG
CHANGED
@@ -1,4 +1,8 @@
|
|
1
|
+
1.1.0
|
2
|
+
* Fixed difference in row hashes between Ruby 1.8 and 1.9
|
3
|
+
* Properly required fastercsv depending on Ruby version
|
1
4
|
1.0.0
|
5
|
+
* Using bundler and gemspec instead of jeweler
|
2
6
|
* Refactored to follow more Ruby conventions
|
3
7
|
* Suggesting new syntax that looks more like an Enumerable... t[5] instead of t.rows[5]
|
4
8
|
* Switching to string option keys (but old syntax is supported)
|
data/README.rdoc
CHANGED
@@ -28,8 +28,6 @@ See the test file and also data_miner examples of custom parsers.
|
|
28
28
|
|
29
29
|
* The new parser syntax (aka transformer) hasn't been defined yet... only the old-style syntax is available
|
30
30
|
* We currently call curl (and a lot of other utilities) using a shell. Is there a safer way to do this?
|
31
|
-
* Row hashes may come out differently for Ruby 1.8 and Ruby 1.9, which ruins the whole purpose.
|
32
|
-
* Since <tt>Enumerable</tt> provides <tt>#to_a</tt>, I'm not sure if it's caching the row loading.
|
33
31
|
|
34
32
|
==Authors
|
35
33
|
|
data/lib/remote_table.rb
CHANGED
@@ -9,9 +9,6 @@ require 'active_support/version'
|
|
9
9
|
require active_support_3_requirement
|
10
10
|
end if ::ActiveSupport::VERSION::MAJOR == 3
|
11
11
|
|
12
|
-
# sabshere 1/25/11 sometimes people call Slither from add_hints! (deprecated)
|
13
|
-
autoload :Slither, ::Gem.required_location('slither', 'slither.rb')
|
14
|
-
|
15
12
|
class RemoteTable
|
16
13
|
autoload :Format, 'remote_table/format'
|
17
14
|
autoload :Properties, 'remote_table/properties'
|
data/lib/remote_table/format.rb
CHANGED
data/lib/remote_table/hasher.rb
CHANGED
@@ -1,25 +1,23 @@
|
|
1
1
|
require 'singleton'
|
2
2
|
require 'digest/md5'
|
3
|
+
require 'active_support'
|
4
|
+
require 'active_support/version'
|
5
|
+
%w{
|
6
|
+
active_support/core_ext/hash/keys
|
7
|
+
active_support/core_ext/object/to_query
|
8
|
+
}.each do |active_support_3_requirement|
|
9
|
+
require active_support_3_requirement
|
10
|
+
end if ::ActiveSupport::VERSION::MAJOR == 3
|
3
11
|
class RemoteTable
|
4
12
|
class Hasher
|
5
13
|
include ::Singleton
|
6
14
|
def hash(row)
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
end
|
14
|
-
else
|
15
|
-
::Hash.new.replace(row)
|
16
|
-
end
|
17
|
-
# sabshere 1/21/11 may currently break across versions of ruby
|
18
|
-
# ruby-1.8.7-p174 > Marshal.dump({'a' => '1'})
|
19
|
-
# => "\004\b{\006\"\006a\"\0061"
|
20
|
-
# ruby-1.9.2-p0 > Marshal.dump({'a' => '1'})
|
21
|
-
# => "\x04\b{\x06I\"\x06a\x06:\x06ETI\"\x061\x06;\x00T"
|
22
|
-
::Digest::MD5.hexdigest ::Marshal.dump(normalized_hash)
|
15
|
+
row = row.dup
|
16
|
+
row.stringify_keys!
|
17
|
+
str = row.keys.sort.map do |k|
|
18
|
+
row[k].to_query k
|
19
|
+
end.join('&')
|
20
|
+
::Digest::MD5.hexdigest str
|
23
21
|
end
|
24
22
|
end
|
25
23
|
end
|
@@ -34,8 +34,9 @@ class RemoteTable
|
|
34
34
|
# sabshere 1/20/11 FIXME: ::RemoteTable.config.curl_bin_path or smth
|
35
35
|
::RemoteTable.executor.backtick_with_reporting %{
|
36
36
|
curl
|
37
|
-
--
|
37
|
+
--silent
|
38
38
|
--location
|
39
|
+
--header "Expect: "
|
39
40
|
#{"--data #{::Escape.shell_single_word t.properties.form_data}" if t.properties.form_data.present?}
|
40
41
|
--output #{::Escape.shell_single_word @path}
|
41
42
|
#{::Escape.shell_single_word t.properties.uri.to_s}
|
@@ -192,7 +192,6 @@ class RemoteTable
|
|
192
192
|
else
|
193
193
|
::File.extname t.local_file.path
|
194
194
|
end
|
195
|
-
return Format::Delimited if clue.blank?
|
196
195
|
case clue.downcase
|
197
196
|
when /xlsx/, /excelx/
|
198
197
|
Format::Excelx
|
@@ -206,11 +205,8 @@ class RemoteTable
|
|
206
205
|
Format::FixedWidth
|
207
206
|
when /htm/
|
208
207
|
Format::HTML
|
209
|
-
when /txt/, /dat/
|
210
|
-
# legacy
|
211
|
-
Format::Delimited
|
212
208
|
else
|
213
|
-
|
209
|
+
Format::Delimited
|
214
210
|
end
|
215
211
|
end
|
216
212
|
end
|
data/lib/remote_table/version.rb
CHANGED
data/remote_table.gemspec
CHANGED
@@ -20,8 +20,6 @@ Gem::Specification.new do |s|
|
|
20
20
|
s.require_paths = ["lib"]
|
21
21
|
|
22
22
|
s.add_dependency 'activesupport', '>=2.3.4'
|
23
|
-
# sabshere 9/30/10 depending on fastercsv when using ruby 1.9.2 results in exiting with error
|
24
|
-
# s.add_dependency 'fastercsv', '>=1.5.0'
|
25
23
|
s.add_dependency 'roo', '~>1.9'
|
26
24
|
s.add_dependency 'slither', '>=0.99.4'
|
27
25
|
s.add_dependency 'i18n' # activesupport?
|
@@ -31,8 +29,16 @@ Gem::Specification.new do |s|
|
|
31
29
|
s.add_dependency 'spreadsheet' #roo
|
32
30
|
s.add_dependency 'google-spreadsheet-ruby' #roo
|
33
31
|
s.add_dependency 'escape', '>=0.0.4'
|
32
|
+
unless RUBY_VERSION >= '1.9'
|
33
|
+
s.add_dependency 'fastercsv', '>=1.5.0'
|
34
|
+
end
|
35
|
+
|
34
36
|
s.add_development_dependency 'errata', '>=0.2.0'
|
35
37
|
s.add_development_dependency 'test-unit'
|
36
38
|
s.add_development_dependency 'shoulda'
|
37
|
-
|
39
|
+
if RUBY_VERSION >= '1.9'
|
40
|
+
s.add_development_dependency 'ruby-debug19'
|
41
|
+
else
|
42
|
+
s.add_development_dependency 'ruby-debug'
|
43
|
+
end
|
38
44
|
end
|
data/test/helper.rb
CHANGED
@@ -1,16 +1,9 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'bundler'
|
3
|
-
unless RUBY_VERSION >= '1.9'
|
4
|
-
gem 'fastercsv'
|
5
|
-
require 'fastercsv'
|
6
|
-
end
|
7
3
|
Bundler.setup
|
8
4
|
require 'test/unit'
|
9
5
|
require 'shoulda'
|
10
6
|
require 'ruby-debug'
|
11
|
-
# require 'ruby-debug'
|
12
|
-
# require 'errata'
|
13
|
-
# require 'active_support/all'
|
14
7
|
|
15
8
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
16
9
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
data/test/test_remote_table.rb
CHANGED
@@ -8,7 +8,7 @@ class TestRemoteTable < Test::Unit::TestCase
|
|
8
8
|
|
9
9
|
should "add a row hash to every row" do
|
10
10
|
t = RemoteTable.new(:url => 'www.customerreferenceprogram.org/uploads/CRP_RFP_template.xlsx')
|
11
|
-
assert_equal "
|
11
|
+
assert_equal "06d8a738551c17735e2731e25c8d0461", t[5]['row_hash']
|
12
12
|
end
|
13
13
|
|
14
14
|
should "open a google doc" do
|
@@ -18,10 +18,6 @@ class TestRemoteTable < Test::Unit::TestCase
|
|
18
18
|
|
19
19
|
should "return an ordered hash" do
|
20
20
|
t = RemoteTable.new 'http://spreadsheets.google.com/pub?key=tObVAGyqOkCBtGid0tJUZrw'
|
21
|
-
|
22
|
-
assert_equal ::Hash, t[0].class
|
23
|
-
else
|
24
|
-
assert_equal ::ActiveSupport::OrderedHash, t[0].class
|
25
|
-
end
|
21
|
+
assert_equal ::ActiveSupport::OrderedHash, t[0].class
|
26
22
|
end
|
27
23
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: remote_table
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 1
|
8
|
+
- 1
|
8
9
|
- 0
|
9
|
-
|
10
|
-
version: 1.0.3
|
10
|
+
version: 1.1.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Seamus Abshere
|
@@ -169,9 +169,25 @@ dependencies:
|
|
169
169
|
type: :runtime
|
170
170
|
version_requirements: *id010
|
171
171
|
- !ruby/object:Gem::Dependency
|
172
|
-
name:
|
172
|
+
name: fastercsv
|
173
173
|
prerelease: false
|
174
174
|
requirement: &id011 !ruby/object:Gem::Requirement
|
175
|
+
none: false
|
176
|
+
requirements:
|
177
|
+
- - ">="
|
178
|
+
- !ruby/object:Gem::Version
|
179
|
+
hash: 3
|
180
|
+
segments:
|
181
|
+
- 1
|
182
|
+
- 5
|
183
|
+
- 0
|
184
|
+
version: 1.5.0
|
185
|
+
type: :runtime
|
186
|
+
version_requirements: *id011
|
187
|
+
- !ruby/object:Gem::Dependency
|
188
|
+
name: errata
|
189
|
+
prerelease: false
|
190
|
+
requirement: &id012 !ruby/object:Gem::Requirement
|
175
191
|
none: false
|
176
192
|
requirements:
|
177
193
|
- - ">="
|
@@ -183,11 +199,11 @@ dependencies:
|
|
183
199
|
- 0
|
184
200
|
version: 0.2.0
|
185
201
|
type: :development
|
186
|
-
version_requirements: *
|
202
|
+
version_requirements: *id012
|
187
203
|
- !ruby/object:Gem::Dependency
|
188
204
|
name: test-unit
|
189
205
|
prerelease: false
|
190
|
-
requirement: &
|
206
|
+
requirement: &id013 !ruby/object:Gem::Requirement
|
191
207
|
none: false
|
192
208
|
requirements:
|
193
209
|
- - ">="
|
@@ -197,11 +213,11 @@ dependencies:
|
|
197
213
|
- 0
|
198
214
|
version: "0"
|
199
215
|
type: :development
|
200
|
-
version_requirements: *
|
216
|
+
version_requirements: *id013
|
201
217
|
- !ruby/object:Gem::Dependency
|
202
218
|
name: shoulda
|
203
219
|
prerelease: false
|
204
|
-
requirement: &
|
220
|
+
requirement: &id014 !ruby/object:Gem::Requirement
|
205
221
|
none: false
|
206
222
|
requirements:
|
207
223
|
- - ">="
|
@@ -211,11 +227,11 @@ dependencies:
|
|
211
227
|
- 0
|
212
228
|
version: "0"
|
213
229
|
type: :development
|
214
|
-
version_requirements: *
|
230
|
+
version_requirements: *id014
|
215
231
|
- !ruby/object:Gem::Dependency
|
216
232
|
name: ruby-debug
|
217
233
|
prerelease: false
|
218
|
-
requirement: &
|
234
|
+
requirement: &id015 !ruby/object:Gem::Requirement
|
219
235
|
none: false
|
220
236
|
requirements:
|
221
237
|
- - ">="
|
@@ -225,7 +241,7 @@ dependencies:
|
|
225
241
|
- 0
|
226
242
|
version: "0"
|
227
243
|
type: :development
|
228
|
-
version_requirements: *
|
244
|
+
version_requirements: *id015
|
229
245
|
description: Gives you a standard way to parse various formats and treat them as an array of hashes.
|
230
246
|
email:
|
231
247
|
- seamus@abshere.net
|