spreadsheet 1.2.0 → 1.2.6

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: 153daf0819e113f6da9726a43b23494e30497ae3
4
- data.tar.gz: 811ecec4ac2a63d3c431ed6dc324ff69c9a189ca
3
+ metadata.gz: c8aa45d407cf5aeadbf8af753a674fdf12dab84c
4
+ data.tar.gz: 32a18ad8a2d79f9eb5df62f435560502c05bfbb8
5
5
  SHA512:
6
- metadata.gz: 3bc43a69c6d5817d2132f05a9544546b070e5512c19c002aa7280ab2879a8b3f0297890f9bea890efe6a082b69a59a226313f4df47e4b5e65e7a08fb81ed894b
7
- data.tar.gz: 2ea734d18f429276707f0823f2703cda52fcc057d6aa04eea4b065db1f08299c3f2a94fc4fb1b61fde2080d5a63fe479ecf857bc14d47d92fa7b1a1331537c02
6
+ metadata.gz: 97f97bf780ece2ac6f25906106b1f62c1cb681cb91740620321875de8fcd2489dc97c592a4d143c52f1cd78c6f737e2b12a33fe3d6a0715ecd4f390461ffa713
7
+ data.tar.gz: ddb5ee3babe8492581be775a760db74dd4f392f75773386c6a204682e051f20b56d004091741653691eba09f7e8433588945b266784747d95b5cfae4f0836180
data/.gitignore CHANGED
@@ -1,2 +1,3 @@
1
1
  tags
2
2
  *.swp
3
+ /Gemfile.lock
@@ -1,14 +1,20 @@
1
1
  language: ruby
2
+ dist: trusty
2
3
  sudo: false
3
4
  cache: bundler
4
5
  before_install:
5
- - gem install bundler -v 1.17.3 --no-document
6
+ - "if $(ruby -e 'exit(RUBY_VERSION >= \"2.3.0\")'); then env -u RUBYOPT gem update --system; fi"
7
+ - "if $(ruby -e 'exit(RUBY_VERSION >= \"2.3.0\")'); then env -u RUBYOPT gem install bundler --no-document; fi"
8
+ - "if $(ruby -e 'exit(RUBY_VERSION < \"2.3.0\")'); then gem install bundler -v 1.17.3 --no-document; fi"
6
9
  bundler_args: --binstubs
7
10
  script: "bundle exec ruby test/suite.rb"
8
11
  rvm:
9
12
  - ruby-head
10
- - 2.3.3
11
- - 2.2.6
13
+ - 2.6.3
14
+ - 2.5.5
15
+ - 2.4.5
16
+ - 2.3.8
17
+ - 2.2.10
12
18
  - 2.1.10
13
19
  - 2.0.0
14
20
  - 1.9.3
@@ -21,6 +27,13 @@ rvm:
21
27
  - jruby-18mode
22
28
  - ree
23
29
  matrix:
30
+ include:
31
+ - rvm: 2.4.5
32
+ env: RUBYOPT='--enable-frozen-string-literal --debug-frozen-string-literal' USE_LATEST_RUBY_OLE=yes
33
+ - rvm: 2.5.5
34
+ env: RUBYOPT='--enable-frozen-string-literal --debug-frozen-string-literal' USE_LATEST_RUBY_OLE=yes
35
+ - rvm: 2.6.3
36
+ env: RUBYOPT='--enable-frozen-string-literal --debug-frozen-string-literal' USE_LATEST_RUBY_OLE=yes
24
37
  allow_failures:
25
38
  - rvm: ruby-head
26
39
  - rvm: rbx-19mode
@@ -29,8 +42,5 @@ matrix:
29
42
  - rvm: jruby-19mode
30
43
  - rvm: jruby-18mode
31
44
  - rvm: ree
32
- notifications:
33
- email:
34
- recipients:
35
- - yasaka@ywesee.com
36
- - zdavatz@ywesee.com
45
+ email:
46
+ false
data/Gemfile CHANGED
@@ -1,5 +1,6 @@
1
1
  source "https://rubygems.org"
2
- gem 'ruby-ole'
2
+
3
+ gem 'ruby-ole', '>= 1.2.12.2'
3
4
 
4
5
  if RUBY_VERSION.to_f > 2.0
5
6
  gem 'test-unit'
@@ -3,11 +3,11 @@ GEM
3
3
  specs:
4
4
  hoe (3.17.1)
5
5
  rake (>= 0.8, < 13.0)
6
- minitest (5.8.2)
7
- power_assert (0.2.4)
8
- rake (10.5.0)
9
- ruby-ole (1.2.12.1)
10
- test-unit (3.1.5)
6
+ minitest (5.10.1)
7
+ power_assert (1.0.1)
8
+ rake (12.3.0)
9
+ ruby-ole (1.2.12.2)
10
+ test-unit (3.2.3)
11
11
  power_assert
12
12
 
13
13
  PLATFORMS
@@ -16,8 +16,8 @@ PLATFORMS
16
16
  DEPENDENCIES
17
17
  hoe (>= 3.4)
18
18
  minitest
19
- ruby-ole
19
+ ruby-ole (>= 1.2.12.2)
20
20
  test-unit
21
21
 
22
22
  BUNDLED WITH
23
- 1.17.2
23
+ 1.14.6
data/History.md CHANGED
@@ -1,3 +1,45 @@
1
+ ### 1.2.6 22.1.2020
2
+ Author: tetsuya-ogawa <tetsuya.ogawa87@gmail.com>
3
+ Date: Wed Jan 22 15:18:00 2020 +0900
4
+
5
+ * add instance method "<<" to Spreadsheet::Worksheet
6
+
7
+ ### 1.2.5 23.10.2019
8
+ Author: Jesús Manuel García Muñoz <jesus@bebanjo.com>
9
+ Date: Wed Oct 23 20:26:01 2019 +0200
10
+
11
+ * Fixes unrecognized date format
12
+
13
+ ### 1.2.4 24.05.2019
14
+ Author: Cyril Champier <cyril.champier@doctolib.com>
15
+ Date: Fri May 24 12:56:52 2019 +0200
16
+
17
+ * correct ruby version check
18
+ * can read frozen string io
19
+
20
+ ### 1.2.3 12.03.2019
21
+ Author: taichi <taichi730@gmail.com>
22
+ Date: Tue Mar 12 22:29:12 2019 +0900
23
+
24
+ * Remove workaround for ruby-ole gem
25
+
26
+ ### 1.2.2 01.03.2019
27
+ Author: taichi <taichi730@gmail.com>
28
+ Date: Fri Mar 1 13:00:28 2019 +0900
29
+
30
+ * fixed unit test errors caused by frozen-string-literal
31
+ * removed ruby 2.3.8 with frozen-string-literal from CI regression
32
+ (It seems that standard libraries for this version does not support the
33
+ feature enough.)
34
+ * enable '--enable-frozen-string-literal' option on CI test
35
+
36
+ ### 1.2.1 28.02.2019
37
+ Author: taichi <taichi730@gmail.com>
38
+ Date: Thu Feb 28 10:30:46 2019 +0900
39
+
40
+ * Merge pull request #231 from taichi-ishitani/separated_version_file
41
+ * Merge pull request #230 from taichi-ishitani/frozen_string_literal_support
42
+
1
43
  ### 1.2.0 17.2.2019
2
44
  Author: James McLaren <jamesmclaren555@gmail.com>
3
45
  * spreadsheet-1.2.0.gem released
@@ -49,6 +49,7 @@ lib/spreadsheet/link.rb
49
49
  lib/spreadsheet/note.rb
50
50
  lib/spreadsheet/noteObject.rb
51
51
  lib/spreadsheet/row.rb
52
+ lib/spreadsheet/version.rb
52
53
  lib/spreadsheet/workbook.rb
53
54
  lib/spreadsheet/worksheet.rb
54
55
  lib/spreadsheet/writer.rb
data/README.md CHANGED
@@ -29,9 +29,10 @@ Hannes Wyss. Spreadsheet can read, write and modify Spreadsheet Documents.
29
29
 
30
30
  ## Notes from Users
31
31
 
32
- Alfred: a@boxbot.org: I think it should be noted in the README file that the library doesn't
33
- recognize cell formats in Excel created documents, which results in
34
- Floats returned for any number.
32
+ * [Alfred](mailto:a@boxbot.org): The library doesn't recognize cell formats in Excel
33
+ created documents, which results in Floats returned for any number.
34
+ * [Tom](https://github.com/tom-lord): This library *only* supports XLS format;
35
+ it does **not** support XLSX format.
35
36
 
36
37
  ## What's new?
37
38
 
@@ -50,7 +51,7 @@ Floats returned for any number.
50
51
  * Write-Support: BIFF5
51
52
  * Remove backward compatibility code
52
53
 
53
- Note: Spreadsheet supports Ruby 1.8.6, 1.8.7, 1.9.2, 1.9.3, 2.0.0, 2.1.1, 2.2.2
54
+ Note: Spreadsheet is tested against all minor ruby versions through: 1.8.7 - 2.6.3
54
55
 
55
56
  You will get a deprecated warning about iconv when using spreadsheet with Ruby
56
57
  1.9.3. So replacing iconv is on the Roadmap as well ;).
@@ -109,5 +110,5 @@ Copyright (c) 2010 ywesee GmbH (mhatakeyama@ywesee.com, zdavatz@ywesee.com)
109
110
  ## License
110
111
 
111
112
  This library is distributed under the GPLv3.
112
- Please see the [LICENSE] (https://github.com/zdavatz/spreadsheet/blob/master/LICENSE.txt) file.
113
+ Please see the [LICENSE](https://github.com/zdavatz/spreadsheet/blob/master/LICENSE.txt) file.
113
114
 
@@ -25,6 +25,7 @@
25
25
  # 8006 Zürich
26
26
  ### Switzerland
27
27
 
28
+ require 'spreadsheet/version'
28
29
  require 'spreadsheet/errors'
29
30
 
30
31
  require 'spreadsheet/excel/workbook'
@@ -44,10 +45,6 @@ require 'spreadsheet/excel/rgb'
44
45
  # sheet.each do |row| puts row[0] end
45
46
  module Spreadsheet
46
47
 
47
- ##
48
- # The version of Spreadsheet you are using.
49
- VERSION = '1.2.0'
50
-
51
48
  ##
52
49
  # Default client Encoding. Change this value if your application uses a
53
50
  # different Encoding:
@@ -56,7 +56,7 @@ class Reader
56
56
  ## remove two bits
57
57
  integer, = work.unpack 'V'
58
58
  integer &= 0xfffffffc
59
- value, = ("\0\0\0\0" << [integer].pack('V')).unpack EIGHT_BYTE_DOUBLE
59
+ value, = ("\0\0\0\0" + [integer].pack('V')).unpack EIGHT_BYTE_DOUBLE
60
60
  else
61
61
  ## I can't find a format for unpacking a little endian signed integer.
62
62
  # 'V' works for packing, but not for unpacking. But the following works
@@ -1275,11 +1275,11 @@ class Reader
1275
1275
  end
1276
1276
  def setup io
1277
1277
  ## Reading from StringIO fails without forced encoding
1278
- if io.respond_to?(:string) && (str = io.string) \
1279
- && str.respond_to?(:force_encoding)
1280
- str.force_encoding 'ASCII-8BIT'
1278
+ if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.3.0')
1279
+ io.set_encoding('ASCII-8BIT')
1280
+ elsif io.respond_to?(:string) && (str = io.string) && str.respond_to?(:force_encoding)
1281
+ str.force_encoding('ASCII-8BIT')
1281
1282
  end
1282
- ##
1283
1283
  io.rewind
1284
1284
  @ole = Ole::Storage.open io
1285
1285
  @workbook = Workbook.new io, {}
@@ -196,7 +196,7 @@ module Biff8
196
196
  ##
197
197
  # Insert null-characters into a compressed UTF-16 string
198
198
  def wide string
199
- data = ''
199
+ data = ''.dup
200
200
  string.each_byte do |byte| data << byte.chr << 0.chr end
201
201
  data
202
202
  end
@@ -209,7 +209,7 @@ class Workbook < Spreadsheet::Writer
209
209
  oldoffset = positions.min - len
210
210
  lastpos = pos + len
211
211
  bytechange = 0
212
- buffer = StringIO.new ''
212
+ buffer = StringIO.new ''.dup
213
213
  if tuple = workbook.offsets[:sst]
214
214
  write_sst_changes workbook, buffer, writer.pos,
215
215
  sst_total, sst_strings
@@ -396,7 +396,7 @@ class Workbook < Spreadsheet::Writer
396
396
  sanitize_worksheets workbook.worksheets
397
397
  collect_formats workbook
398
398
  sheets = worksheets workbook
399
- buffer1 = StringIO.new ''
399
+ buffer1 = StringIO.new ''.dup
400
400
  # ● BOF Type = workbook globals (➜ 6.8)
401
401
  write_bof workbook, buffer1, :globals
402
402
  # ○ File Protection Block ➜ 4.19
@@ -441,7 +441,7 @@ class Workbook < Spreadsheet::Writer
441
441
  # ○ USESELFS ➜ 5.106
442
442
  buffer1.rewind
443
443
  # ●● BOUNDSHEET ➜ 5.95
444
- buffer2 = StringIO.new ''
444
+ buffer2 = StringIO.new ''.dup
445
445
  # ○ COUNTRY ➜ 5.22
446
446
  # ○ Link Table ➜ 4.10.3
447
447
  # ○○ NAME ➜ 6.66
@@ -20,7 +20,7 @@ class Worksheet
20
20
  def initialize workbook, worksheet
21
21
  @workbook = workbook
22
22
  @worksheet = worksheet
23
- @io = StringIO.new ''
23
+ @io = StringIO.new ''.dup
24
24
  @biff_version = 0x0600
25
25
  @bof = 0x0809
26
26
  @build_id = 3515
@@ -642,7 +642,7 @@ and minimal code that generates this warning. Thanks!
642
642
  ##
643
643
  # Write multiple consecutive cells with RK values (see #write_rk)
644
644
  def write_mulrk row, idx, multiples
645
- fmt = 'v2'
645
+ fmt = ['v2']
646
646
  data = [
647
647
  row.idx, # Index to row
648
648
  idx, # Index to first column (fc)
@@ -655,7 +655,7 @@ and minimal code that generates this warning. Thanks!
655
655
  end
656
656
  # Index to last column (lc)
657
657
  data.push idx + multiples.size - 1
658
- write_op opcode(:mulrk), data.pack(fmt << 'v')
658
+ write_op opcode(:mulrk), data.pack((fmt << 'v').join)
659
659
  end
660
660
  def write_multiples row, idx, multiples
661
661
  case multiples.last
@@ -101,12 +101,12 @@ module Spreadsheet
101
101
  @pattern_fg_color = :border
102
102
  @pattern_bg_color = :pattern_bg
103
103
  @regexes = {
104
- :date => Regexp.new(client("[YMD]", 'UTF-8')),
104
+ :date => Regexp.new(client("[YMD]|d{2}|m{3}|y{2}", 'UTF-8')),
105
105
  :date_or_time => Regexp.new(client("[hmsYMD]", 'UTF-8')),
106
106
  :datetime => Regexp.new(client("([YMD].*[HS])|([HS].*[YMD])", 'UTF-8')),
107
107
  :time => Regexp.new(client("[hms]", 'UTF-8')),
108
108
  :number => Regexp.new(client("([\#]|0+)", 'UTF-8')),
109
- :locale => Regexp.new(client(/\A\[\$\-\d+\]/.to_s, 'UTF-8')),
109
+ :locale => Regexp.new(client(/\A\[\$\-\S+\]/.to_s, 'UTF-8')),
110
110
  }
111
111
 
112
112
  # Temp code to prevent merged formats in non-merged cells.
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spreadsheet
4
+ ##
5
+ # The version of Spreadsheet you are using.
6
+ VERSION = '1.2.6'
7
+ end
@@ -76,7 +76,7 @@ module Spreadsheet
76
76
  # Returns the count of total worksheets present.
77
77
  # Takes no arguments. Just returns the length of @worksheets array.
78
78
  def sheet_count
79
- @worksheets.length
79
+ @worksheets.length
80
80
  end
81
81
  ##
82
82
  # The Font at _idx_
@@ -232,6 +232,9 @@ module Spreadsheet
232
232
  updated_from idx
233
233
  res
234
234
  end
235
+ def << cells=[]
236
+ insert_row last_row_index + 1, cells
237
+ end
235
238
  def inspect
236
239
  names = instance_variables
237
240
  names.delete '@rows'
@@ -1,7 +1,7 @@
1
1
  # require File.join(File.dirname(__FILE__), 'lib', 'spreadsheet')
2
2
  lib = File.expand_path('../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'spreadsheet'
4
+ require 'spreadsheet/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "spreadsheet"
@@ -25,6 +25,19 @@ module Spreadsheet
25
25
  reader.setup not_empty_io
26
26
  end
27
27
  end
28
+
29
+ def test_not_frozen_stream_error_on_setup
30
+ return if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.3.0')
31
+
32
+ reader = Spreadsheet::Excel::Reader.new
33
+ data = File.expand_path File.join('test', 'data')
34
+ path = File.join data, 'test_empty.xls'
35
+ content_string = File.read path
36
+ frozen_io = StringIO.new(content_string.freeze)
37
+ assert_nothing_thrown do
38
+ reader.setup(frozen_io)
39
+ end
40
+ end
28
41
  end
29
42
  end
30
43
  end
@@ -25,6 +25,8 @@ module Spreadsheet
25
25
  assert_equal false, @format.date?
26
26
  @format.number_format = "0.00;[RED]\\-0.00"
27
27
  assert_equal false, @format.date?
28
+ @format.number_format = "[$-C0A]dd\\-mmm\\-yy"
29
+ assert_equal true, @format.date?
28
30
  end
29
31
  def test_date_or_time?
30
32
  assert_equal false, @format.date_or_time?
@@ -36,7 +36,7 @@ module Spreadsheet
36
36
  end
37
37
  def teardown
38
38
  Spreadsheet.client_encoding = 'UTF-8'
39
- FileUtils.rm_r @var
39
+ FileUtils.rm_rf @var
40
40
  end
41
41
  def test_copy__identical__file_paths
42
42
  path = File.join @data, 'test_copy.xls'
@@ -506,7 +506,7 @@ module Spreadsheet
506
506
  assert_equal 3, sheets.size
507
507
  sheet = book.worksheet 0
508
508
  assert_instance_of Excel::Worksheet, sheet
509
- str = "S\000h\000e\000e\000t\0001\000"
509
+ str = "S\000h\000e\000e\000t\0001\000".dup
510
510
  if RUBY_VERSION >= '1.9'
511
511
  str.force_encoding 'UTF-16LE' if str.respond_to?(:force_encoding)
512
512
  end
@@ -730,7 +730,7 @@ module Spreadsheet
730
730
  book = Spreadsheet::Excel::Workbook.new
731
731
  sheet = book.create_worksheet :name => 'My Worksheet'
732
732
  sheet[0,0] = 'my cell'
733
- data = StringIO.new ''
733
+ data = StringIO.new ''.dup
734
734
  assert_nothing_raised do
735
735
  book.write data
736
736
  end
@@ -829,7 +829,7 @@ module Spreadsheet
829
829
  assert_equal 2, book.worksheets.size
830
830
  sheet = book.worksheets.first
831
831
  assert_instance_of Spreadsheet::Excel::Worksheet, sheet
832
- name = "W\000o\000r\000k\000s\000h\000e\000e\000t\0001\000"
832
+ name = "W\000o\000r\000k\000s\000h\000e\000e\000t\0001\000".dup
833
833
  name.force_encoding 'UTF-16LE' if name.respond_to?(:force_encoding)
834
834
  assert_equal name, sheet.name
835
835
  assert_not_nil sheet.offset
@@ -926,7 +926,7 @@ module Spreadsheet
926
926
  assert_equal 40, sheet1.row(11).height
927
927
  assert_instance_of Spreadsheet::Excel::Worksheet, sheet
928
928
  sheet = book.worksheets.last
929
- name = "m\000y\000 \000n\000a\000m\000e\000"
929
+ name = "m\000y\000 \000n\000a\000m\000e\000".dup
930
930
  name.force_encoding 'UTF-16LE' if name.respond_to?(:force_encoding)
931
931
  assert_equal name, sheet.name
932
932
  assert_not_nil sheet.offset
@@ -1212,7 +1212,7 @@ module Spreadsheet
1212
1212
  sheet = book.create_worksheet
1213
1213
  (0..200).each { |i| sheet.row(i).push "ëçáéíóú" }
1214
1214
  assert_nothing_raised do
1215
- book.write StringIO.new("", "w+")
1215
+ book.write StringIO.new("".dup, "w+")
1216
1216
  end
1217
1217
  end
1218
1218
 
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.2.0
4
+ version: 1.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hannes F. Wyss, Masaomi Hatakeyama, Zeno R.R. Davatz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-02-17 00:00:00.000000000 Z
11
+ date: 2020-01-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ruby-ole
@@ -126,6 +126,7 @@ files:
126
126
  - lib/spreadsheet/note.rb
127
127
  - lib/spreadsheet/noteObject.rb
128
128
  - lib/spreadsheet/row.rb
129
+ - lib/spreadsheet/version.rb
129
130
  - lib/spreadsheet/workbook.rb
130
131
  - lib/spreadsheet/worksheet.rb
131
132
  - lib/spreadsheet/writer.rb