spreadsheet 1.1.5 → 1.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4298c03c72488e63b8b50878bd59340c92a6bfb2
4
- data.tar.gz: 787718140dccee75ea9407a298b1700c147f08f4
3
+ metadata.gz: 153daf0819e113f6da9726a43b23494e30497ae3
4
+ data.tar.gz: 811ecec4ac2a63d3c431ed6dc324ff69c9a189ca
5
5
  SHA512:
6
- metadata.gz: 2ec69c70be8583640e6ff7bb04d5e84e3cd18bd93e0a456dbf99fb45f0ed4119cdd2653954df4d30f0d22ac6b949c8601fc225998d1caca387a578e353c84f31
7
- data.tar.gz: 720b8a57e50de2ca682364f718309ed45f19d9fc2dc54e5ad4c534b4284b3bb6441bc5e79d5b8538c9b8c460b1e4ab43155f54042e0b77cb8a595b5fcc0fdf97
6
+ metadata.gz: 3bc43a69c6d5817d2132f05a9544546b070e5512c19c002aa7280ab2879a8b3f0297890f9bea890efe6a082b69a59a226313f4df47e4b5e65e7a08fb81ed894b
7
+ data.tar.gz: 2ea734d18f429276707f0823f2703cda52fcc057d6aa04eea4b065db1f08299c3f2a94fc4fb1b61fde2080d5a63fe479ecf857bc14d47d92fa7b1a1331537c02
data/.travis.yml CHANGED
@@ -2,7 +2,7 @@ language: ruby
2
2
  sudo: false
3
3
  cache: bundler
4
4
  before_install:
5
- - gem install bundler
5
+ - gem install bundler -v 1.17.3 --no-document
6
6
  bundler_args: --binstubs
7
7
  script: "bundle exec ruby test/suite.rb"
8
8
  rvm:
data/Gemfile.lock CHANGED
@@ -1,12 +1,12 @@
1
1
  GEM
2
2
  remote: https://rubygems.org/
3
3
  specs:
4
- hoe (3.14.2)
5
- rake (>= 0.8, < 11.0)
4
+ hoe (3.17.1)
5
+ rake (>= 0.8, < 13.0)
6
6
  minitest (5.8.2)
7
7
  power_assert (0.2.4)
8
- rake (10.4.2)
9
- ruby-ole (1.2.11.8)
8
+ rake (10.5.0)
9
+ ruby-ole (1.2.12.1)
10
10
  test-unit (3.1.5)
11
11
  power_assert
12
12
 
@@ -20,4 +20,4 @@ DEPENDENCIES
20
20
  test-unit
21
21
 
22
22
  BUNDLED WITH
23
- 1.12.5
23
+ 1.17.2
data/History.md CHANGED
@@ -1,3 +1,44 @@
1
+ ### 1.2.0 17.2.2019
2
+ Author: James McLaren <jamesmclaren555@gmail.com>
3
+ * spreadsheet-1.2.0.gem released
4
+
5
+ ### 1.1.9 26.1.2019
6
+ Author: Nick Weiland <nickweiland@gmail.com>
7
+ * spreadsheet-1.1.9.gem released.
8
+
9
+ ### 1.1.8 / 20.08.2018
10
+ Author: VitaliyAdamkov <adamkov@tex.ua>
11
+ Date: Mon Aug 20 09:48:31 2018 +0300
12
+
13
+ * Cancel :lazy usage
14
+ * Use lazy select to speed up a little
15
+ * Omit rails :try usage
16
+ * stub for :postread_worksheet method
17
+ * sometimes it selects empty array..
18
+
19
+ Author: 545ch4 <s@rprojekt.org>
20
+ Date: Wed Mar 28 15:33:04 2018 +0200
21
+
22
+ * [ruby-2.4] Fix weird first line of spreadsheet.gemspec
23
+ * Doesn't seem to be a valid .gemspec command/field.
24
+
25
+ ### 1.1.7 / 15.03.2018
26
+
27
+ Author: Maarten Brouwers <github@murb.nl>
28
+ Date: Thu Mar 15 15:10:23 2018 +0100
29
+
30
+ * shadowing outer local variable - i
31
+
32
+ * Running rake resulted in the following warning: `lib/spreadsheet/worksheet.rb:345: warning: shadowing outer local variable - i`; this patch fixes that.
33
+
34
+ ### 1.1.6 / 12.03.2018
35
+
36
+ Author: Todd Hambley <thambley@travelleaders.com>
37
+ Date: Mon Mar 12 14:20:39 2018 -0400
38
+
39
+ * fix reject for ruby 1.8.7
40
+ * fix using invalid code pages when writing workbook
41
+
1
42
  ### 1.1.5 / 20.11.2017
2
43
 
3
44
  Author: Paco Guzmán <pacoguzman@users.noreply.github.com>
data/Rakefile CHANGED
@@ -13,7 +13,7 @@ ENV['RDOCOPT'] = '-c utf8'
13
13
  Hoe.plugin :git
14
14
 
15
15
  Hoe.spec('spreadsheet') do |p|
16
- p.developer('Masaomi Hatakeyama, Zeno R.R. Davatz','mhatakeyama@ywesee.com, zdavatz@ywesee.com')
16
+ p.developer('Hannes F. Wyss, Masaomi Hatakeyama, Zeno R.R. Davatz','hannes.wyss@gmail.com, mhatakeyama@ywesee.com, zdavatz@ywesee.com')
17
17
  p.remote_rdoc_dir = 'spreadsheet'
18
18
  p.extra_deps << ['ruby-ole', '>=1.0']
19
19
  p.email = "zdavatz@ywesee.com"
data/bin/xlsopcodes CHANGED
@@ -1,17 +1,18 @@
1
1
  #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
- #
4
- # This file was generated by Bundler.
5
- #
6
- # The application 'xlsopcodes' is installed as part of a gem, and
7
- # this file is here to facilitate running it.
8
- #
9
2
 
10
- require "pathname"
11
- ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
12
- Pathname.new(__FILE__).realpath)
3
+ require 'spreadsheet'
13
4
 
14
- require "rubygems"
15
- require "bundler/setup"
5
+ source, target = ARGV
16
6
 
17
- load Gem.bin_path("spreadsheet", "xlsopcodes")
7
+ if source.nil?
8
+ puts "Usage: #{$0} <source> [<target>]"
9
+ exit -1
10
+ end
11
+
12
+ target = target ? File.open(target, 'w') : STDOUT
13
+
14
+ reader = Spreadsheet::Excel::Reader.new :print_opcodes => target
15
+ reader.setup File.open(source)
16
+
17
+ while tuple = reader.get_next_chunk
18
+ end
@@ -54,7 +54,7 @@ module Internals
54
54
  32768 => "MACROMAN",
55
55
  32769 => "WINDOWS-1252", #(Latin I) (BIFF2-BIFF3)
56
56
  }
57
- SEGAPEDOC = CODEPAGES.invert
57
+ SEGAPEDOC = CODEPAGES.reject { |k, _v| k >= 21010 }.invert
58
58
  # color_codes according to http://support.softartisans.com/kbview_1205.aspx
59
59
  # synonyms are in comments when reverse lookup
60
60
  COLOR_CODES = {
@@ -125,11 +125,12 @@ class Reader
125
125
  #So link the noteObject(text) to the note (with author, position)
126
126
  #TODO
127
127
  @noteList.each do |i|
128
- matching_obj = @noteObjList.select {|j| j.objID == i.objID}
129
- if matching_obj.length > 1
128
+ matching_objs = @noteObjList.select { |j| j.objID == i.objID }
129
+ if matching_objs.length > 1
130
130
  puts "ERROR - more than one matching object ID!"
131
131
  end
132
- i.text = matching_obj.first.text
132
+ matching_obj = matching_objs.first
133
+ i.text = matching_obj.nil? ? '' : matching_obj.text
133
134
  worksheet.add_note i.row, i.col, i.text
134
135
  end
135
136
  end
@@ -398,10 +399,10 @@ class Reader
398
399
  end
399
400
  formula.value = value
400
401
  elsif rtype == 0
401
- pos, op, len, work = get_next_chunk
402
+ pos, op, _len, work = get_next_chunk
402
403
  if op == :sharedfmla
403
404
  ## TODO: formula-support in 0.8.0
404
- pos, op, len, work = get_next_chunk
405
+ pos, op, _len, work = get_next_chunk
405
406
  end
406
407
  if op == :string
407
408
  formula.value = client read_string(work, 2), @workbook.encoding
@@ -851,6 +852,7 @@ class Reader
851
852
  @detected_rows = {}
852
853
  @noteObjList = []
853
854
  @noteList = []
855
+ @noteObject = nil
854
856
  previous = nil
855
857
  while tuple = get_next_chunk
856
858
  pos, op, len, work = tuple
@@ -153,9 +153,13 @@ module Spreadsheet
153
153
  # If the argument skip is given, #each iterates from that row until but
154
154
  # omitting the first unused Row, effectively skipping the first _skip_ Rows
155
155
  # from the top of the Worksheet.
156
- def each skip=dimensions[0]
157
- skip.upto(dimensions[1] - 1) do |idx|
158
- yield row(idx)
156
+ def each(skip=dimensions[0], &block)
157
+ rows = skip.upto(dimensions[1] - 1).map { |index| row(index) }.to_enum
158
+
159
+ if block_given?
160
+ rows.each(&block)
161
+ else
162
+ rows
159
163
  end
160
164
  end
161
165
  def encoding # :nodoc:
@@ -314,7 +318,7 @@ module Spreadsheet
314
318
 
315
319
  def compact!
316
320
  recalculate_dimensions
317
-
321
+
318
322
  # detect first non-nil non-empty row if given first row is empty or nil
319
323
  if row(@dimensions[0]).empty? || row(@dimensions[0]).compact.join('').empty?
320
324
  (@dimensions[0]...@dimensions[1]).each do |i|
@@ -325,19 +329,19 @@ module Spreadsheet
325
329
 
326
330
  # detect last non-nil non-empty row if given last row is empty or nil
327
331
  if row(@dimensions[1] - 1).empty? || row(@dimensions[1] - 1).compact.join('').empty?
328
- i = @dimensions[1] - 1
332
+ row_size = @dimensions[1] - 1
329
333
  @dimensions[1] = @dimensions[0]
330
334
  # divide and conquer
331
- while(i - @dimensions[1] > 1) do
332
- if row(i).empty? || row(i).compact.join('').empty?
333
- i = @dimensions[1] + (((i - @dimensions[1]) + 1) / 2).to_i
335
+ while(row_size - @dimensions[1] > 1) do
336
+ if row(row_size).empty? || row(row_size).compact.join('').empty?
337
+ row_size = @dimensions[1] + (((row_size - @dimensions[1]) + 1) / 2).to_i
334
338
  else
335
- _i = ((i - @dimensions[1]) / 2).to_i + 1
336
- @dimensions[1] = i
337
- i = i + _i
339
+ _i = ((row_size - @dimensions[1]) / 2).to_i + 1
340
+ @dimensions[1] = row_size
341
+ row_size = row_size + _i
338
342
  end
339
343
  end
340
- @dimensions[1] = i + 1
344
+ @dimensions[1] = row_size + 1
341
345
  end
342
346
 
343
347
  # detect first non-empty non-nil column if first column is empty or nil
data/lib/spreadsheet.rb CHANGED
@@ -46,7 +46,7 @@ module Spreadsheet
46
46
 
47
47
  ##
48
48
  # The version of Spreadsheet you are using.
49
- VERSION = '1.1.5'
49
+ VERSION = '1.2.0'
50
50
 
51
51
  ##
52
52
  # Default client Encoding. Change this value if your application uses a
data/spreadsheet.gemspec CHANGED
@@ -3,14 +3,14 @@ lib = File.expand_path('../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'spreadsheet'
5
5
 
6
- spec = Gem::Specification.new do |spec|
6
+ Gem::Specification.new do |spec|
7
7
  spec.name = "spreadsheet"
8
8
  spec.version = Spreadsheet::VERSION
9
9
  spec.homepage = "https://github.com/zdavatz/spreadsheet"
10
10
  spec.summary = "The Spreadsheet Library is designed to read and write Spreadsheet Documents"
11
11
  spec.description = "As of version 0.6.0, only Microsoft Excel compatible spreadsheets are supported"
12
- spec.author = "Masaomi Hatakeyama, Zeno R.R. Davatz"
13
- spec.email = "mhatakeyama@ywesee.com, zdavatz@ywesee.com"
12
+ spec.author = "Hannes F. Wyss, Masaomi Hatakeyama, Zeno R.R. Davatz"
13
+ spec.email = "hannes.wyss@gmail.com, mhatakeyama@ywesee.com, zdavatz@ywesee.com"
14
14
  spec.platform = Gem::Platform::RUBY
15
15
  spec.license = "GPL-3.0"
16
16
  spec.files = Dir.glob("{bin,lib,test}/**/*") + Dir.glob("*.txt")
@@ -22,4 +22,3 @@ spec = Gem::Specification.new do |spec|
22
22
 
23
23
  spec.homepage = 'https://github.com/zdavatz/spreadsheet/'
24
24
  end
25
-
data/test/integration.rb CHANGED
@@ -70,7 +70,7 @@ module Spreadsheet
70
70
  def test_missing_format
71
71
  path = File.join @data, 'test_missing_format.xls'
72
72
  assert_nothing_thrown do
73
- workbook = Spreadsheet.open(path, "rb")
73
+ Spreadsheet.open(path, "rb")
74
74
  end
75
75
  end
76
76
  def test_version_excel97__excel2010__utf16
@@ -749,7 +749,7 @@ module Spreadsheet
749
749
  sheet1 = book.create_worksheet
750
750
  str1 = 'My Shared String'
751
751
  str2 = 'Another Shared String'
752
- assert_equal 1, (str1.size + str2.size) % 2,
752
+ assert_equal 1, (str1.size + str2.size) % 2,
753
753
  "str3 should start at an odd offset to test splitting of wide strings"
754
754
  str3 = '–––––––––– ' * 1000
755
755
  str4 = '1234567890 ' * 1000
@@ -1211,8 +1211,8 @@ module Spreadsheet
1211
1211
  book = Spreadsheet::Workbook.new
1212
1212
  sheet = book.create_worksheet
1213
1213
  (0..200).each { |i| sheet.row(i).push "ëçáéíóú" }
1214
- assert_nothing_raised do
1215
- book.write StringIO.new("", "w+")
1214
+ assert_nothing_raised do
1215
+ book.write StringIO.new("", "w+")
1216
1216
  end
1217
1217
  end
1218
1218
 
@@ -1257,7 +1257,7 @@ module Spreadsheet
1257
1257
  str1 = "Frozen String.".freeze
1258
1258
  sheet1[0,0] = str1
1259
1259
  sheet1.row(0).push str1
1260
- assert_nothing_raised do
1260
+ assert_nothing_raised do
1261
1261
  book.write path
1262
1262
  end
1263
1263
  end
@@ -1290,7 +1290,7 @@ module Spreadsheet
1290
1290
  sheet1 = book.create_worksheet
1291
1291
  (sheet1.row(0).format 0).border = :hair
1292
1292
  (sheet1.row(0).format 0).border_color = :brown
1293
- assert_nothing_raised do
1293
+ assert_nothing_raised do
1294
1294
  book.write path
1295
1295
  end
1296
1296
  book2 = Spreadsheet.open path
@@ -1391,7 +1391,7 @@ module Spreadsheet
1391
1391
  path = File.join @var, 'test_write_worksheet_visibility.xls'
1392
1392
  sheet1 = book.create_worksheet
1393
1393
  sheet1.visibility = :hidden
1394
- sheet2 = book.create_worksheet
1394
+ _sheet2 = book.create_worksheet
1395
1395
  assert_nothing_raised do
1396
1396
  book.write path
1397
1397
  end
data/test/worksheet.rb CHANGED
@@ -108,18 +108,35 @@ module Spreadsheet
108
108
  assert_equal 6, @book.formats.length
109
109
 
110
110
  end
111
-
111
+
112
112
  def test_freeze_panel!
113
113
  assert_equal 0, @sheet.froze_top
114
114
  assert_equal 0, @sheet.froze_left
115
115
  assert_equal false, @sheet.has_frozen_panel?
116
-
116
+
117
117
  @sheet.freeze!(2, 3)
118
118
  assert_equal 2, @sheet.froze_top
119
119
  assert_equal 3, @sheet.froze_left
120
120
  assert_equal true, @sheet.has_frozen_panel?
121
-
121
+
122
+ end
123
+
124
+ def test_each_with_skip
125
+ @sheet[0, 0] = 'foo'
126
+ @sheet[1, 0] = 'bar'
127
+
128
+ assert_equal @sheet.each(1).count, 1
129
+ assert_equal @sheet.each(1).first[0], 'bar'
122
130
  end
123
-
131
+
132
+ def test_each_with_index
133
+ @sheet[0, 0] = 'foo'
134
+ @sheet[1, 0] = 'bar'
135
+
136
+ @sheet.each.with_index do |row, index|
137
+ assert_equal row[0], @sheet[index, 0]
138
+ end
139
+ end
140
+
124
141
  end
125
142
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spreadsheet
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.5
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
- - Masaomi Hatakeyama, Zeno R.R. Davatz
7
+ - Hannes F. Wyss, Masaomi Hatakeyama, Zeno R.R. Davatz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-11-20 00:00:00.000000000 Z
11
+ date: 2019-02-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ruby-ole
@@ -28,30 +28,36 @@ dependencies:
28
28
  name: rdoc
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '4.0'
34
+ - - "<"
35
+ - !ruby/object:Gem::Version
36
+ version: '7'
34
37
  type: :development
35
38
  prerelease: false
36
39
  version_requirements: !ruby/object:Gem::Requirement
37
40
  requirements:
38
- - - "~>"
41
+ - - ">="
39
42
  - !ruby/object:Gem::Version
40
43
  version: '4.0'
44
+ - - "<"
45
+ - !ruby/object:Gem::Version
46
+ version: '7'
41
47
  - !ruby/object:Gem::Dependency
42
48
  name: hoe
43
49
  requirement: !ruby/object:Gem::Requirement
44
50
  requirements:
45
51
  - - "~>"
46
52
  - !ruby/object:Gem::Version
47
- version: '3.14'
53
+ version: '3.17'
48
54
  type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
51
57
  requirements:
52
58
  - - "~>"
53
59
  - !ruby/object:Gem::Version
54
- version: '3.14'
60
+ version: '3.17'
55
61
  description: |-
56
62
  The Spreadsheet Library is designed to read and write Spreadsheet Documents.
57
63
  As of version 0.6.0, only Microsoft Excel compatible spreadsheets are