remote_table 3.3.2 → 3.3.3

Sign up to get free protection for your applications and to get access to all the features.
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