remote_table 1.2.3 → 1.2.4

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/lib/remote_table.rb CHANGED
@@ -13,6 +13,7 @@ require 'active_support/version'
13
13
  }.each do |active_support_3_requirement|
14
14
  require active_support_3_requirement
15
15
  end if ::ActiveSupport::VERSION::MAJOR == 3
16
+ require 'hash_digest'
16
17
 
17
18
  class Hash
18
19
  attr_accessor :row_hash
@@ -30,12 +31,11 @@ class RemoteTable
30
31
 
31
32
  # singletons
32
33
  autoload :Executor, 'remote_table/executor'
33
- autoload :Hasher, 'remote_table/hasher'
34
34
 
35
35
  # Legacy
36
36
  class Transform
37
37
  def self.row_hash(row)
38
- ::RemoteTable.hasher.hash row
38
+ ::HashDigest.hexdigest row
39
39
  end
40
40
  end
41
41
 
@@ -73,8 +73,8 @@ class RemoteTable
73
73
  else
74
74
  mark_download!
75
75
  retval = format.each do |row|
76
- row.row_hash = ::RemoteTable.hasher.hash row
77
76
  transformer.transform(row).each do |virtual_row|
77
+ virtual_row.row_hash = ::HashDigest.hexdigest row
78
78
  if properties.errata
79
79
  next if properties.errata.rejects? virtual_row
80
80
  properties.errata.correct! virtual_row
@@ -121,11 +121,6 @@ class RemoteTable
121
121
  Executor.instance
122
122
  end
123
123
 
124
- # Used internally to create unique hashes of rows.
125
- def self.hasher
126
- Hasher.instance
127
- end
128
-
129
124
  # Used internally to access to a downloaded copy of the file
130
125
  def local_file
131
126
  @local_file ||= LocalFile.new self
@@ -37,8 +37,7 @@ class RemoteTable
37
37
  end
38
38
 
39
39
  def assume_utf8(str)
40
- return if str.nil?
41
- if ::RUBY_VERSION >= '1.9'
40
+ if str.is_a?(::String) and ::RUBY_VERSION >= '1.9'
42
41
  str.encode! t.properties.external_encoding
43
42
  else
44
43
  str
@@ -58,6 +58,9 @@ class RemoteTable
58
58
  ::FileUtils.cp t.properties.uri.path, @path
59
59
  else
60
60
  # sabshere 1/20/11 FIXME: ::RemoteTable.config.curl_bin_path or smth
61
+ # sabshere 7/20/11 make web requests move more slowly so you don't get accused of DOS
62
+ sleep t.properties.delay_between_requests if t.properties.delay_between_requests
63
+ $stderr.puts "[remote_table] Downloading #{t.properties.uri.to_s}"
61
64
  ::RemoteTable.executor.backtick_with_reporting %{
62
65
  curl
63
66
  --silent
@@ -14,6 +14,10 @@ class RemoteTable
14
14
  current_options.update options
15
15
  end
16
16
 
17
+ def delay_between_requests
18
+ current_options['delay_between_requests'] || (::ENV.has_key?('REMOTE_TABLE_DELAY_BETWEEN_REQUESTS') ? ::ENV['REMOTE_TABLE_DELAY_BETWEEN_REQUESTS'].to_i : nil)
19
+ end
20
+
17
21
  # The parsed URI of the file to get.
18
22
  def uri
19
23
  return @uri if @uri.is_a?(::URI)
@@ -1,3 +1,3 @@
1
1
  class RemoteTable
2
- VERSION = "1.2.3"
2
+ VERSION = "1.2.4"
3
3
  end
data/remote_table.gemspec CHANGED
@@ -19,26 +19,23 @@ Gem::Specification.new do |s|
19
19
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
20
  s.require_paths = ["lib"]
21
21
 
22
- s.add_dependency 'activesupport', '>=2.3.4'
23
- s.add_dependency 'roo', '~>1.9'
24
- s.add_dependency 'fixed_width-multibyte' # TODO replace with fixed_width once timon gets off vacation
25
- s.add_dependency 'i18n' # activesupport?
26
- s.add_dependency 'builder' # roo?
27
- s.add_dependency 'zip' # roo
28
- s.add_dependency 'nokogiri', '>=1.4.1' # roo
29
- s.add_dependency 'spreadsheet' #roo
30
- s.add_dependency 'google-spreadsheet-ruby' #roo
31
- s.add_dependency 'escape', '>=0.0.4'
32
- s.add_dependency 'posix-spawn'
33
- s.add_dependency 'ensure-encoding'
34
- s.add_dependency 'fastercsv', '>=1.5.0'
22
+ s.add_runtime_dependency 'activesupport', '>=2.3.4'
23
+ s.add_runtime_dependency 'roo', '~>1.9'
24
+ s.add_runtime_dependency 'fixed_width-multibyte' # TODO replace with fixed_width once timon gets off vacation
25
+ s.add_runtime_dependency 'i18n' # activesupport?
26
+ s.add_runtime_dependency 'builder' # roo?
27
+ s.add_runtime_dependency 'zip' # roo
28
+ s.add_runtime_dependency 'nokogiri', '>=1.4.1' # roo
29
+ s.add_runtime_dependency 'spreadsheet' #roo
30
+ s.add_runtime_dependency 'google-spreadsheet-ruby' #roo
31
+ s.add_runtime_dependency 'escape', '>=0.0.4'
32
+ s.add_runtime_dependency 'posix-spawn'
33
+ s.add_runtime_dependency 'ensure-encoding'
34
+ s.add_runtime_dependency 'fastercsv', '>=1.5.0'
35
+ s.add_runtime_dependency 'hash_digest'
35
36
 
36
37
  s.add_development_dependency 'errata', '>=0.2.0'
37
38
  s.add_development_dependency 'test-unit'
38
39
  s.add_development_dependency 'shoulda'
39
- if RUBY_VERSION >= '1.9'
40
- s.add_development_dependency 'ruby-debug19'
41
- else
42
- s.add_development_dependency 'ruby-debug'
43
- end
40
+ s.add_development_dependency 'rake'
44
41
  end
data/test/helper.rb CHANGED
@@ -3,7 +3,6 @@ require 'bundler'
3
3
  Bundler.setup
4
4
  require 'test/unit'
5
5
  require 'shoulda'
6
- require 'ruby-debug'
7
6
 
8
7
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
9
8
  $LOAD_PATH.unshift(File.dirname(__FILE__))
@@ -40,5 +40,6 @@ class TestOldTransform < Test::Unit::TestCase
40
40
  :transform => { :class => NaturalGasParser })
41
41
  assert_equal 'Country', t[0]['locatable_type']
42
42
  assert_equal 'US', t[0]['locatable_id']
43
+ assert(t[0].row_hash.present?)
43
44
  end
44
45
  end
metadata CHANGED
@@ -1,216 +1,223 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: remote_table
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.2.4
4
5
  prerelease:
5
- version: 1.2.3
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Seamus Abshere
9
9
  - Andy Rossmeissl
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
-
14
- date: 2011-05-21 00:00:00 -05:00
15
- default_executable:
16
- dependencies:
17
- - !ruby/object:Gem::Dependency
13
+ date: 2011-11-29 00:00:00.000000000Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
18
16
  name: activesupport
19
- prerelease: false
20
- requirement: &id001 !ruby/object:Gem::Requirement
17
+ requirement: &2164990540 !ruby/object:Gem::Requirement
21
18
  none: false
22
- requirements:
23
- - - ">="
24
- - !ruby/object:Gem::Version
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
25
22
  version: 2.3.4
26
23
  type: :runtime
27
- version_requirements: *id001
28
- - !ruby/object:Gem::Dependency
29
- name: roo
30
24
  prerelease: false
31
- requirement: &id002 !ruby/object:Gem::Requirement
25
+ version_requirements: *2164990540
26
+ - !ruby/object:Gem::Dependency
27
+ name: roo
28
+ requirement: &2164990040 !ruby/object:Gem::Requirement
32
29
  none: false
33
- requirements:
30
+ requirements:
34
31
  - - ~>
35
- - !ruby/object:Gem::Version
36
- version: "1.9"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.9'
37
34
  type: :runtime
38
- version_requirements: *id002
39
- - !ruby/object:Gem::Dependency
40
- name: fixed_width-multibyte
41
35
  prerelease: false
42
- requirement: &id003 !ruby/object:Gem::Requirement
36
+ version_requirements: *2164990040
37
+ - !ruby/object:Gem::Dependency
38
+ name: fixed_width-multibyte
39
+ requirement: &2164989660 !ruby/object:Gem::Requirement
43
40
  none: false
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: "0"
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
48
45
  type: :runtime
49
- version_requirements: *id003
50
- - !ruby/object:Gem::Dependency
51
- name: i18n
52
46
  prerelease: false
53
- requirement: &id004 !ruby/object:Gem::Requirement
47
+ version_requirements: *2164989660
48
+ - !ruby/object:Gem::Dependency
49
+ name: i18n
50
+ requirement: &2164989200 !ruby/object:Gem::Requirement
54
51
  none: false
55
- requirements:
56
- - - ">="
57
- - !ruby/object:Gem::Version
58
- version: "0"
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
59
56
  type: :runtime
60
- version_requirements: *id004
61
- - !ruby/object:Gem::Dependency
62
- name: builder
63
57
  prerelease: false
64
- requirement: &id005 !ruby/object:Gem::Requirement
58
+ version_requirements: *2164989200
59
+ - !ruby/object:Gem::Dependency
60
+ name: builder
61
+ requirement: &2164988780 !ruby/object:Gem::Requirement
65
62
  none: false
66
- requirements:
67
- - - ">="
68
- - !ruby/object:Gem::Version
69
- version: "0"
63
+ requirements:
64
+ - - ! '>='
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
70
67
  type: :runtime
71
- version_requirements: *id005
72
- - !ruby/object:Gem::Dependency
73
- name: zip
74
68
  prerelease: false
75
- requirement: &id006 !ruby/object:Gem::Requirement
69
+ version_requirements: *2164988780
70
+ - !ruby/object:Gem::Dependency
71
+ name: zip
72
+ requirement: &2164988360 !ruby/object:Gem::Requirement
76
73
  none: false
77
- requirements:
78
- - - ">="
79
- - !ruby/object:Gem::Version
80
- version: "0"
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
81
78
  type: :runtime
82
- version_requirements: *id006
83
- - !ruby/object:Gem::Dependency
84
- name: nokogiri
85
79
  prerelease: false
86
- requirement: &id007 !ruby/object:Gem::Requirement
80
+ version_requirements: *2164988360
81
+ - !ruby/object:Gem::Dependency
82
+ name: nokogiri
83
+ requirement: &2164987860 !ruby/object:Gem::Requirement
87
84
  none: false
88
- requirements:
89
- - - ">="
90
- - !ruby/object:Gem::Version
85
+ requirements:
86
+ - - ! '>='
87
+ - !ruby/object:Gem::Version
91
88
  version: 1.4.1
92
89
  type: :runtime
93
- version_requirements: *id007
94
- - !ruby/object:Gem::Dependency
95
- name: spreadsheet
96
90
  prerelease: false
97
- requirement: &id008 !ruby/object:Gem::Requirement
91
+ version_requirements: *2164987860
92
+ - !ruby/object:Gem::Dependency
93
+ name: spreadsheet
94
+ requirement: &2164987440 !ruby/object:Gem::Requirement
98
95
  none: false
99
- requirements:
100
- - - ">="
101
- - !ruby/object:Gem::Version
102
- version: "0"
96
+ requirements:
97
+ - - ! '>='
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
103
100
  type: :runtime
104
- version_requirements: *id008
105
- - !ruby/object:Gem::Dependency
106
- name: google-spreadsheet-ruby
107
101
  prerelease: false
108
- requirement: &id009 !ruby/object:Gem::Requirement
102
+ version_requirements: *2164987440
103
+ - !ruby/object:Gem::Dependency
104
+ name: google-spreadsheet-ruby
105
+ requirement: &2164986980 !ruby/object:Gem::Requirement
109
106
  none: false
110
- requirements:
111
- - - ">="
112
- - !ruby/object:Gem::Version
113
- version: "0"
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
114
111
  type: :runtime
115
- version_requirements: *id009
116
- - !ruby/object:Gem::Dependency
117
- name: escape
118
112
  prerelease: false
119
- requirement: &id010 !ruby/object:Gem::Requirement
113
+ version_requirements: *2164986980
114
+ - !ruby/object:Gem::Dependency
115
+ name: escape
116
+ requirement: &2164986480 !ruby/object:Gem::Requirement
120
117
  none: false
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
118
+ requirements:
119
+ - - ! '>='
120
+ - !ruby/object:Gem::Version
124
121
  version: 0.0.4
125
122
  type: :runtime
126
- version_requirements: *id010
127
- - !ruby/object:Gem::Dependency
128
- name: posix-spawn
129
123
  prerelease: false
130
- requirement: &id011 !ruby/object:Gem::Requirement
124
+ version_requirements: *2164986480
125
+ - !ruby/object:Gem::Dependency
126
+ name: posix-spawn
127
+ requirement: &2164986060 !ruby/object:Gem::Requirement
131
128
  none: false
132
- requirements:
133
- - - ">="
134
- - !ruby/object:Gem::Version
135
- version: "0"
129
+ requirements:
130
+ - - ! '>='
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
136
133
  type: :runtime
137
- version_requirements: *id011
138
- - !ruby/object:Gem::Dependency
139
- name: ensure-encoding
140
134
  prerelease: false
141
- requirement: &id012 !ruby/object:Gem::Requirement
135
+ version_requirements: *2164986060
136
+ - !ruby/object:Gem::Dependency
137
+ name: ensure-encoding
138
+ requirement: &2164985600 !ruby/object:Gem::Requirement
142
139
  none: false
143
- requirements:
144
- - - ">="
145
- - !ruby/object:Gem::Version
146
- version: "0"
140
+ requirements:
141
+ - - ! '>='
142
+ - !ruby/object:Gem::Version
143
+ version: '0'
147
144
  type: :runtime
148
- version_requirements: *id012
149
- - !ruby/object:Gem::Dependency
150
- name: fastercsv
151
145
  prerelease: false
152
- requirement: &id013 !ruby/object:Gem::Requirement
146
+ version_requirements: *2164985600
147
+ - !ruby/object:Gem::Dependency
148
+ name: fastercsv
149
+ requirement: &2164985100 !ruby/object:Gem::Requirement
153
150
  none: false
154
- requirements:
155
- - - ">="
156
- - !ruby/object:Gem::Version
151
+ requirements:
152
+ - - ! '>='
153
+ - !ruby/object:Gem::Version
157
154
  version: 1.5.0
158
155
  type: :runtime
159
- version_requirements: *id013
160
- - !ruby/object:Gem::Dependency
161
- name: errata
162
156
  prerelease: false
163
- requirement: &id014 !ruby/object:Gem::Requirement
157
+ version_requirements: *2164985100
158
+ - !ruby/object:Gem::Dependency
159
+ name: hash_digest
160
+ requirement: &2164984680 !ruby/object:Gem::Requirement
164
161
  none: false
165
- requirements:
166
- - - ">="
167
- - !ruby/object:Gem::Version
162
+ requirements:
163
+ - - ! '>='
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ type: :runtime
167
+ prerelease: false
168
+ version_requirements: *2164984680
169
+ - !ruby/object:Gem::Dependency
170
+ name: errata
171
+ requirement: &2164984140 !ruby/object:Gem::Requirement
172
+ none: false
173
+ requirements:
174
+ - - ! '>='
175
+ - !ruby/object:Gem::Version
168
176
  version: 0.2.0
169
177
  type: :development
170
- version_requirements: *id014
171
- - !ruby/object:Gem::Dependency
172
- name: test-unit
173
178
  prerelease: false
174
- requirement: &id015 !ruby/object:Gem::Requirement
179
+ version_requirements: *2164984140
180
+ - !ruby/object:Gem::Dependency
181
+ name: test-unit
182
+ requirement: &2165000080 !ruby/object:Gem::Requirement
175
183
  none: false
176
- requirements:
177
- - - ">="
178
- - !ruby/object:Gem::Version
179
- version: "0"
184
+ requirements:
185
+ - - ! '>='
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
180
188
  type: :development
181
- version_requirements: *id015
182
- - !ruby/object:Gem::Dependency
183
- name: shoulda
184
189
  prerelease: false
185
- requirement: &id016 !ruby/object:Gem::Requirement
190
+ version_requirements: *2165000080
191
+ - !ruby/object:Gem::Dependency
192
+ name: shoulda
193
+ requirement: &2164999620 !ruby/object:Gem::Requirement
186
194
  none: false
187
- requirements:
188
- - - ">="
189
- - !ruby/object:Gem::Version
190
- version: "0"
195
+ requirements:
196
+ - - ! '>='
197
+ - !ruby/object:Gem::Version
198
+ version: '0'
191
199
  type: :development
192
- version_requirements: *id016
193
- - !ruby/object:Gem::Dependency
194
- name: ruby-debug19
195
200
  prerelease: false
196
- requirement: &id017 !ruby/object:Gem::Requirement
201
+ version_requirements: *2164999620
202
+ - !ruby/object:Gem::Dependency
203
+ name: rake
204
+ requirement: &2164999200 !ruby/object:Gem::Requirement
197
205
  none: false
198
- requirements:
199
- - - ">="
200
- - !ruby/object:Gem::Version
201
- version: "0"
206
+ requirements:
207
+ - - ! '>='
208
+ - !ruby/object:Gem::Version
209
+ version: '0'
202
210
  type: :development
203
- version_requirements: *id017
204
- description: Gives you a standard way to parse various formats and treat them as an array of hashes.
205
- email:
211
+ prerelease: false
212
+ version_requirements: *2164999200
213
+ description: Gives you a standard way to parse various formats and treat them as an
214
+ array of hashes.
215
+ email:
206
216
  - seamus@abshere.net
207
217
  executables: []
208
-
209
218
  extensions: []
210
-
211
219
  extra_rdoc_files: []
212
-
213
- files:
220
+ files:
214
221
  - .document
215
222
  - .gitattributes
216
223
  - .gitignore
@@ -231,7 +238,6 @@ files:
231
238
  - lib/remote_table/format/mixins/textual.rb
232
239
  - lib/remote_table/format/open_office.rb
233
240
  - lib/remote_table/format/xml.rb
234
- - lib/remote_table/hasher.rb
235
241
  - lib/remote_table/local_file.rb
236
242
  - lib/remote_table/properties.rb
237
243
  - lib/remote_table/transformer.rb
@@ -257,35 +263,31 @@ files:
257
263
  - test/test_old_syntax.rb
258
264
  - test/test_old_transform.rb
259
265
  - test/test_remote_table.rb
260
- has_rdoc: true
261
266
  homepage: https://github.com/seamusabshere/remote_table
262
267
  licenses: []
263
-
264
268
  post_install_message:
265
269
  rdoc_options: []
266
-
267
- require_paths:
270
+ require_paths:
268
271
  - lib
269
- required_ruby_version: !ruby/object:Gem::Requirement
272
+ required_ruby_version: !ruby/object:Gem::Requirement
270
273
  none: false
271
- requirements:
272
- - - ">="
273
- - !ruby/object:Gem::Version
274
- version: "0"
275
- required_rubygems_version: !ruby/object:Gem::Requirement
274
+ requirements:
275
+ - - ! '>='
276
+ - !ruby/object:Gem::Version
277
+ version: '0'
278
+ required_rubygems_version: !ruby/object:Gem::Requirement
276
279
  none: false
277
- requirements:
278
- - - ">="
279
- - !ruby/object:Gem::Version
280
- version: "0"
280
+ requirements:
281
+ - - ! '>='
282
+ - !ruby/object:Gem::Version
283
+ version: '0'
281
284
  requirements: []
282
-
283
285
  rubyforge_project: remotetable
284
- rubygems_version: 1.6.2
286
+ rubygems_version: 1.8.10
285
287
  signing_key:
286
288
  specification_version: 3
287
289
  summary: Open local or remote XLSX, XLS, ODS, CSV and fixed-width files.
288
- test_files:
290
+ test_files:
289
291
  - test/helper.rb
290
292
  - test/support/list-en1-semic-3.neooffice.binary.ods
291
293
  - test/support/list-en1-semic-3.neooffice.iso-8859-1.csv
@@ -1,29 +0,0 @@
1
- require 'singleton'
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
11
- class RemoteTable
12
- class Hasher
13
- include ::Singleton
14
- def hash(row)
15
- str = if row.is_a?(::Array)
16
- tmp_ary = []
17
- row.each_with_index do |v, i|
18
- tmp_ary.push v.to_query(i.to_s)
19
- end
20
- tmp_ary
21
- else
22
- row.stringify_keys.keys.sort.map do |k|
23
- row[k].to_query k
24
- end
25
- end.join('&')
26
- ::Digest::MD5.hexdigest str
27
- end
28
- end
29
- end