spreadsheet 1.1.5 → 1.2.0

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: 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