remote_table 3.3.2 → 3.3.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 50af57458cfc9beb6a37a724f127267441351407
4
- data.tar.gz: f9fdaa022aa12c22f4bebfbb8c62bda6f5fc78c3
3
+ metadata.gz: c25d96a8296ef90b00e61d671d709ac0d8f6fcbe
4
+ data.tar.gz: f2c0d575d566db733dabd3a32f4ae5db17ee7310
5
5
  SHA512:
6
- metadata.gz: ce9f84c1e533c92c7d77383aa948e489c77e542b51a7e6c6a79064b64eaf1ad38a71ba35662f24068e517918eb0405e1960afaeb0c9e8d5d45a2d0d0b783a4b9
7
- data.tar.gz: 992797ec369a10179ad2ffa5cfe30fc0ca787b366f91cb6ea090eeaff772abe9564d3b19e7dbdabca37043878060489af4c508a3923cc1d8673a7af1bb02bae7
6
+ metadata.gz: 279b9c85ad97831e3e24cd0d5d8f919a58b711391afa0304f0072f6bd0c515263571ec28bc90581b1b09552323aab6ff9c38272c43440055eb12d7b1250c7daa
7
+ data.tar.gz: 1b2c8c63a2f011af898e4652a8548ad7e33f793bea8d3342c1947b3db09613e0f9ef1e6144bb5b886adbc8f3eac1d0afcce869d5aaca0fccead81e99cec3daf5
data/CHANGELOG CHANGED
@@ -1,3 +1,14 @@
1
+ 3.3.3 / 2016-02-01
2
+
3
+ * Enhancements
4
+
5
+ * New option :stop_after_untitled_headers
6
+
7
+ * Bug fixes
8
+
9
+ * Fix Excel support via roo-xls
10
+ * Treat headers: true as :first_row in roo
11
+
1
12
  3.3.2 / 2015-10-01
2
13
 
3
14
  * Bug fixes
@@ -154,6 +154,7 @@ class RemoteTable
154
154
  :keep_blank_rows => false,
155
155
  :skip => 0,
156
156
  :encoding => 'UTF-8',
157
+ :stop_after_untitled_headers => false,
157
158
  }
158
159
  OLD_SETTING_NAMES = {
159
160
  :pre_select => [:select],
@@ -353,6 +354,15 @@ class RemoteTable
353
354
  # @return [String]
354
355
  attr_reader :root_node
355
356
 
357
+ # When to trim untitled headers. Set this to 100 to prevent more than 100 untitled headers being created; the rest will be silently discarded.
358
+ #
359
+ # Note: This is effectively a right trim... the counting starts from the left.
360
+ #
361
+ # Default: false, don't try
362
+ #
363
+ # @return [Integer]
364
+ attr_reader :stop_after_untitled_headers
365
+
356
366
  # @private
357
367
  class NullParser
358
368
  def call(row)
@@ -444,6 +454,7 @@ class RemoteTable
444
454
  @errata = grab settings, :errata
445
455
  @root_node = grab settings, :root_node
446
456
  @parser = grab settings, :parser
457
+ @stop_after_untitled_headers = grab settings, :stop_after_untitled_headers
447
458
 
448
459
  @other_options = settings
449
460
 
@@ -46,6 +46,7 @@ class RemoteTable
46
46
  # represent the row as a hash
47
47
  hash = ::ActiveSupport::OrderedHash.new
48
48
  row.each do |k, v|
49
+ next if k.nil?
49
50
  v = RemoteTable.normalize_whitespace v
50
51
  if not some_value_present and not keep_blank_rows and v.present?
51
52
  some_value_present = true
@@ -95,9 +96,11 @@ class RemoteTable
95
96
  end while line.length == 0
96
97
  proto_headers = Engine.parse_line(line, csv_options)
97
98
  if proto_headers
98
- proto_headers.map do |v|
99
+ proto_headers.inject([]) do |memo, v|
100
+ break memo if stop_after_untitled_headers and i > stop_after_untitled_headers
99
101
  header = RemoteTable.normalize_whitespace v
100
- header.present? ? header : "untitled_#{i+=1}"
102
+ memo << (header.present? ? header : "untitled_#{i+=1}")
103
+ memo
101
104
  end
102
105
  else
103
106
  raise "No headers found in first line: #{line.inspect}"
@@ -50,7 +50,7 @@ class RemoteTable
50
50
  # create a hash to represent this row
51
51
  current_headers = ::ActiveSupport::OrderedHash.new
52
52
  i = 0
53
- if headers == :first_row
53
+ if headers == :first_row or headers == true
54
54
  (1..spreadsheet.last_column).each do |x|
55
55
  v = spreadsheet.cell(first_row, x)
56
56
  if v.blank?
@@ -62,6 +62,9 @@ class RemoteTable
62
62
  # 'foobar' is found at column 6
63
63
  current_headers[v] = x
64
64
  else
65
+ if stop_after_untitled_headers and i > stop_after_untitled_headers
66
+ break
67
+ end
65
68
  current_headers["untitled_#{i+=1}"] = x
66
69
  end
67
70
  end
@@ -1,3 +1,3 @@
1
1
  class RemoteTable
2
- VERSION = '3.3.2'
2
+ VERSION = '3.3.3'
3
3
  end
@@ -5,7 +5,7 @@ class RemoteTable
5
5
  base.extend ProcessedByRoo
6
6
  end
7
7
  def roo_class
8
- Roo.const_defined?(:Excel) ? Roo::Excel : ::Excel
8
+ Roo::Excel
9
9
  end
10
10
  end
11
11
  end
@@ -26,6 +26,7 @@ Gem::Specification.new do |s|
26
26
  s.add_runtime_dependency 'fastercsv', '>=1.5.0'
27
27
  s.add_runtime_dependency 'hash_digest', '>=1.1.3'
28
28
 
29
+ s.add_development_dependency 'roo-xls'
29
30
  s.add_development_dependency 'errata', '>=0.2.0'
30
31
  s.add_development_dependency 'minitest'
31
32
  s.add_development_dependency 'rake'
@@ -3,6 +3,7 @@ require 'bundler/setup'
3
3
  require 'minitest/autorun'
4
4
  # require 'pry-rescue/minitest'
5
5
  require 'remote_table'
6
+ require 'roo-xls'
6
7
 
7
8
  class MiniTest::Spec
8
9
  def setup
@@ -6,7 +6,7 @@ describe RemoteTable do
6
6
  describe 'used on remote files' do
7
7
  it "add a row hash to every row" do
8
8
  t = RemoteTable.new(:url => 'http://www.customerreferenceprogram.org/uploads/CRP_RFP_template.xlsx')
9
- t[5].row_hash.must_equal "06d8a738551c17735e2731e25c8d0461"
9
+ t[5].row_hash.must_equal "59a3cf905334493bbdda971298f1b2a2f58e05cb"
10
10
  end
11
11
 
12
12
  it "open a google doc" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: remote_table
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.3.2
4
+ version: 3.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Seamus Abshere
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-11-15 00:00:00.000000000 Z
12
+ date: 2016-02-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -109,6 +109,20 @@ dependencies:
109
109
  - - ">="
110
110
  - !ruby/object:Gem::Version
111
111
  version: 1.1.3
112
+ - !ruby/object:Gem::Dependency
113
+ name: roo-xls
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
112
126
  - !ruby/object:Gem::Dependency
113
127
  name: errata
114
128
  requirement: !ruby/object:Gem::Requirement