roo-xls 1.2.0 → 2.0.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
  SHA256:
3
- metadata.gz: 5497f8b6a9779fc588a2a111be208b15b161980a742db7aa51bf493a1aa97cd6
4
- data.tar.gz: 40589a5d46b9134aa6dfe7fd8e93fc38d1409e1c318fef7d93cd958ff95b8cbf
3
+ metadata.gz: 7b4b59a55cac5820c24bfd0ccf4bfb0edd18e88cc46516ea84157b8d92d9d399
4
+ data.tar.gz: 2c97afde22e182df8921f4435efd18ecaa63c6ab37d600fd4e5c88b1d34afffb
5
5
  SHA512:
6
- metadata.gz: 7024a683484e5a679df01b9a4d7a4a62eb6a11a826e68fe51e9ab0ef3019e103349d1d097a52d51cf188fcb78ad67acad7fa827cdf7c4f7e58615c052f6c9d8f
7
- data.tar.gz: b3d528dee5ea5771d1f394701bee2fc305f5064c688a1f5df4595fd4c811c2d3568a5e2d10a2b0558432bc03191edd5f6a6c1a67de74e9a3bd6ac563740f4edb
6
+ metadata.gz: 2c776ca11c9f604871b78e9a6ea45c09314de98ec662ebefd47922ec6f366458c685094004fcfd14e7b99138c010fd5893d6ce10f6c1d6941a55f77a0d119254
7
+ data.tar.gz: 37f20fc518a273c1adf7f81e137d2d99b679670b69898dd4caf368716eebca6245252ca275eadf750ddacf7ba01a42eab3235723f841b76ede9aeb848f31e525
@@ -0,0 +1,16 @@
1
+ Thanks for filing an issue. Following these instructions will help us solve your problem sooner.
2
+
3
+ ### Steps to reproduce
4
+
5
+ 1. Create an executable test case for this issue ([sample test case](https://gist.github.com/tgturner/4e2b590e0218d3b261269aa662b6a7cb))
6
+ 2. You can share your executable test case as a [gist](https://gist.github.com), or simply paste the content into the issue description.
7
+ - You can execute the test case by running `ruby the_file.rb` in your terminal. If all goes well, you should see your test case failing.
8
+ 3. Please provide a stripped down version of the offending spreadsheet.
9
+
10
+ ### Issue
11
+ Describe the issue
12
+
13
+ ### System configuration
14
+ **Roo::Xls version**:
15
+
16
+ **Ruby version**:
@@ -0,0 +1,14 @@
1
+ ### Summary
2
+
3
+ Provide a general description of the code changes in your pull
4
+ request... were there any bugs you had fixed? If so, mention them. If
5
+ these bugs have open GitHub issues, be sure to tag them here as well,
6
+ to keep the conversation linked together.
7
+
8
+ ### Other Information
9
+
10
+ If there's anything else that's important and relevant to your pull
11
+ request, mention that information here. This could include
12
+ benchmarks, or other information.
13
+
14
+ Thanks for contributing to Roo!
@@ -0,0 +1,52 @@
1
+ name: Release Please
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - master
7
+
8
+ concurrency:
9
+ group: ${{ github.workflow }}-${{ github.ref }}
10
+ cancel-in-progress: true
11
+
12
+ jobs:
13
+ release-please:
14
+ runs-on: ubuntu-latest
15
+ outputs:
16
+ release_created: ${{ steps.release.outputs.release_created }}
17
+ tag_name: ${{ steps.release.outputs.tag_name }}
18
+ steps:
19
+ - uses: googleapis/release-please-action@v4
20
+ id: release
21
+ with:
22
+ config-file: release-please-config.json
23
+ manifest-file: .release-please-manifest.json
24
+
25
+ publish:
26
+ needs: release-please
27
+ if: ${{ needs.release-please.outputs.release_created }}
28
+ runs-on: ubuntu-latest
29
+ environment: PUBLISH
30
+ permissions:
31
+ contents: write
32
+ id-token: write
33
+ steps:
34
+ - name: Checkout repository
35
+ uses: actions/checkout@v4
36
+ with:
37
+ ref: ${{ needs.release-please.outputs.tag_name }}
38
+ fetch-tags: true
39
+
40
+ - name: Set up Ruby
41
+ uses: ruby/setup-ruby@v1
42
+ with:
43
+ ruby-version: '3.4'
44
+ bundler-cache: true
45
+
46
+ - name: Publish to RubyGems
47
+ uses: rubygems/release-gem@v1
48
+
49
+ - name: Upload Gem to GitHub Release
50
+ env:
51
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
52
+ run: gh release upload ${{ needs.release-please.outputs.tag_name }} ./*.gem --clobber
@@ -0,0 +1,40 @@
1
+ name: Ruby
2
+ on:
3
+ push:
4
+ branches:
5
+ - master
6
+ pull_request:
7
+ branches:
8
+ - master
9
+
10
+ concurrency:
11
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
12
+ cancel-in-progress: true
13
+
14
+ jobs:
15
+ build:
16
+ runs-on: ubuntu-latest
17
+ strategy:
18
+ fail-fast: false
19
+ matrix:
20
+ ruby:
21
+ - '3.1'
22
+ - '3.2'
23
+ - '3.3'
24
+ - '3.4'
25
+ - '4.0'
26
+ - ruby-head
27
+ - jruby-9.4.10.0
28
+ include:
29
+ - ruby: ruby-head
30
+ env:
31
+ RUBYOPT: '--jit'
32
+ steps:
33
+ - uses: actions/checkout@v4
34
+ - uses: ruby/setup-ruby@v1
35
+ with:
36
+ ruby-version: ${{ matrix.ruby }}
37
+ bundler-cache: true
38
+ - run: bundle exec rake
39
+ env:
40
+ LONG_RUN: true
data/.gitignore CHANGED
@@ -14,3 +14,7 @@
14
14
  mkmf.log
15
15
  .idea
16
16
  .DS_Store
17
+
18
+ # Appraisal
19
+ /gemfiles/.bundle/
20
+ /gemfiles/*.gemfile.lock
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "2.0.0"
3
+ }
data/CHANGELOG.md ADDED
@@ -0,0 +1,8 @@
1
+ # Changelog
2
+
3
+ ## [2.0.0](https://github.com/roo-rb/roo-xls/compare/v1.2.0...v2.0.0) (2026-01-05)
4
+
5
+
6
+ ### Miscellaneous Chores
7
+
8
+ * release 2.0.0 ([7e85b93](https://github.com/roo-rb/roo-xls/commit/7e85b93f27573351edb90ce9c480ec36b23eb6af))
data/Gemfile CHANGED
@@ -3,21 +3,20 @@ source 'https://rubygems.org'
3
3
  # Specify your gem's dependencies in roo-xls.gemspec
4
4
  gemspec
5
5
 
6
- if ENV['TRAVIS']
6
+ if ENV['CI']
7
7
  gem 'roo', '>= 2.0.0beta1', git: 'https://github.com/roo-rb/roo.git'
8
8
  else
9
- gem 'roo', '>= 2.0.0beta1', path: ::File.expand_path('../../roo', __FILE__)
9
+ gem 'roo', '>= 2.0.0beta1', '< 3'
10
10
  end
11
11
 
12
- gem 'activesupport', '~> 4.2.0' if RUBY_VERSION < '2.2'
13
-
14
12
  group :test do
15
13
  # additional testing libs
16
14
  gem 'webmock'
17
15
  gem 'shoulda'
18
16
  gem 'rspec', '>= 3.0.0'
19
- gem 'simplecov', '>= 0.9.0', :require => false
20
- gem 'coveralls', :require => false
17
+ gem 'simplecov', '>= 0.21', require: false
18
+ gem 'simplecov-lcov', '>= 0.8', require: false
19
+ gem 'coveralls', require: false
21
20
  end
22
21
 
23
22
  group :local_development do
@@ -28,5 +27,4 @@ group :local_development do
28
27
  gem 'guard-rubocop', require: false
29
28
  gem 'guard-reek', git: 'https://github.com/pericles/guard-reek', require: false
30
29
  gem 'pry'
31
- gem 'transpec'
32
30
  end
data/Rakefile CHANGED
@@ -18,6 +18,12 @@ RSpec::Core::RakeTask.new(:spec)
18
18
  Coveralls::RakeTask.new
19
19
 
20
20
  default_task = [:test, :spec]
21
- default_task << 'coveralls:push' if ENV['TRAVIS']
21
+ default_task << 'coveralls:push' if ENV['CI']
22
22
 
23
- task default: default_task
23
+ if !ENV["APPRAISAL_INITIALIZED"] && !ENV['CI']
24
+ task :default do
25
+ sh "appraisal install && appraisal rake"
26
+ end
27
+ else
28
+ task default: default_task
29
+ end
data/lib/roo/xls/excel.rb CHANGED
@@ -48,8 +48,6 @@ module Roo
48
48
  @fonts = {}
49
49
  end
50
50
 
51
- attr_reader :workbook
52
-
53
51
  def worksheets
54
52
  @worksheets ||= workbook.worksheets
55
53
  end
@@ -285,7 +283,7 @@ module Roo
285
283
  format = row.format(idx)
286
284
  if format.date_or_time?
287
285
  cell = read_cell_content(row, idx)
288
- true if Float(cell) > 0 rescue false
286
+ true if (Float(cell, exception: false) || 0) > 0
289
287
  else
290
288
  false
291
289
  end
@@ -309,7 +307,13 @@ module Roo
309
307
  else
310
308
  datetime =
311
309
  if row.at(idx).class == ::Spreadsheet::Formula
312
- row.send(:_datetime, cell)
310
+ if row.respond_to?(:set_datetime, true)
311
+ # 1.3.4+
312
+ row.send(:set_datetime, cell)
313
+ else
314
+ # 1.3.3-
315
+ row.send(:_datetime, cell)
316
+ end
313
317
  else
314
318
  row.datetime(idx)
315
319
  end
@@ -322,7 +326,13 @@ module Roo
322
326
  value_type = :date
323
327
  value =
324
328
  if row.at(idx).class == ::Spreadsheet::Formula
325
- row.send(:_date, cell)
329
+ if row.respond_to?(:set_date, true)
330
+ # 1.3.4+
331
+ row.send(:set_date, cell)
332
+ else
333
+ # 1.3.3-
334
+ row.send(:_date, cell)
335
+ end
326
336
  else
327
337
  row.date(idx)
328
338
  end
@@ -1,5 +1,5 @@
1
1
  module Roo
2
2
  module Xls
3
- VERSION = '1.2.0'
3
+ VERSION = '2.0.0'
4
4
  end
5
5
  end
@@ -0,0 +1,12 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json",
3
+ "packages": {
4
+ ".": {
5
+ "version-file": "lib/roo/xls/version.rb",
6
+ "release-type": "ruby",
7
+ "changelog-path": "CHANGELOG.md",
8
+ "include-component-in-tag": false,
9
+ "include-v-in-tag": true
10
+ }
11
+ }
12
+ }
data/roo-xls.gemspec CHANGED
@@ -10,22 +10,25 @@ Gem::Specification.new do |spec|
10
10
  spec.email = ["ruby.ruby.ruby.roo@gmail.com"]
11
11
  spec.summary = "Roo::Excel can access the contents of classic xls files."
12
12
  spec.description = "Roo can access the contents of various spreadsheet files. It can handle\n* OpenOffice\n* Excel\n* Google spreadsheets\n* Excelx\n* LibreOffice\n* CSV"
13
+ spec.homepage = "https://github.com/roo-rb/roo-xls"
13
14
  spec.license = "MIT"
15
+ spec.metadata["changelog_uri"] = spec.homepage + '/blob/master/CHANGELOG.md'
14
16
 
15
17
  spec.files = `git ls-files -z`.split("\x0")
16
18
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
19
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
20
  spec.require_paths = ["lib"]
19
21
 
20
- spec.add_dependency "roo", ">= 2.0.0", "< 3"
21
- spec.add_dependency "spreadsheet", "> 0.9.0"
22
+ spec.required_ruby_version = ">= 3.1.0"
22
23
 
23
- if RUBY_VERSION >= '2.1'
24
- spec.add_dependency "nokogiri"
25
- else
26
- spec.add_dependency "nokogiri", "~> 1.6.0"
27
- end
24
+ spec.add_dependency "roo", ">= 2.0.0", "< 4"
25
+ spec.add_dependency "spreadsheet", ">= 1.3.4", "< 2"
26
+ spec.add_dependency "csv"
27
+
28
+ spec.add_dependency "nokogiri"
28
29
 
29
30
  spec.add_development_dependency "bundler", ">= 1.7"
30
31
  spec.add_development_dependency "rake", ">= 10.0"
32
+ spec.add_development_dependency "minitest", ">= 5.19.0"
33
+ spec.add_development_dependency "matrix"
31
34
  end
@@ -1,6 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
- class TestRooExcel < MiniTest::Test
3
+ class TestExcel2013XML < Minitest::Test
4
4
  def with_xml_spreadsheet(name)
5
5
  yield ::Roo::Excel2003XML.new(File.join(TESTDIR, "#{name}.xml"))
6
6
  end
@@ -25,15 +25,15 @@ class TestRooExcel < MiniTest::Test
25
25
  # This test just checks for that exception to make sure it's not raised in this case
26
26
  def test_date_to_float_conversion
27
27
  with_xml_spreadsheet('datetime_floatconv') do |oo|
28
- assert_nothing_raised(NoMethodError) do
29
- oo.cell('a', 1)
30
- oo.cell('a', 2)
31
- end
28
+ oo.default_sheet = oo.sheets.first
29
+ assert oo.cell('a', 1)
30
+ assert oo.cell('a', 2)
32
31
  end
33
32
  end
34
33
 
35
34
  def test_ruby_spreadsheet_formula_bug
36
35
  with_xml_spreadsheet('formula_parse_error') do |oo|
36
+ oo.default_sheet = oo.sheets.first
37
37
  assert_equal '5026', oo.cell(2, 3)
38
38
  assert_equal '5026', oo.cell(3, 3)
39
39
  end
@@ -2,7 +2,7 @@
2
2
  require 'test_helper'
3
3
  require 'stringio'
4
4
 
5
- class TestRooExcel < MiniTest::Test
5
+ class TestRooExcel < Minitest::Test
6
6
  def with_spreadsheet(name)
7
7
  yield ::Roo::Spreadsheet.open(File.join(TESTDIR, "#{name}.xls"))
8
8
  end
@@ -628,14 +628,14 @@ Sheet 3:
628
628
  def test_bug_to_xml_with_empty_sheets
629
629
  with_spreadsheet('emptysheets') do |oo|
630
630
  oo.sheets.each do |sheet|
631
- assert_equal nil, oo.first_row, "first_row not nil in sheet #{sheet}"
632
- assert_equal nil, oo.last_row, "last_row not nil in sheet #{sheet}"
633
- assert_equal nil, oo.first_column, "first_column not nil in sheet #{sheet}"
634
- assert_equal nil, oo.last_column, "last_column not nil in sheet #{sheet}"
635
- assert_equal nil, oo.first_row(sheet), "first_row not nil in sheet #{sheet}"
636
- assert_equal nil, oo.last_row(sheet), "last_row not nil in sheet #{sheet}"
637
- assert_equal nil, oo.first_column(sheet), "first_column not nil in sheet #{sheet}"
638
- assert_equal nil, oo.last_column(sheet), "last_column not nil in sheet #{sheet}"
631
+ assert_nil oo.first_row, "first_row not nil in sheet #{sheet}"
632
+ assert_nil oo.last_row, "last_row not nil in sheet #{sheet}"
633
+ assert_nil oo.first_column, "first_column not nil in sheet #{sheet}"
634
+ assert_nil oo.last_column, "last_column not nil in sheet #{sheet}"
635
+ assert_nil oo.first_row(sheet), "first_row not nil in sheet #{sheet}"
636
+ assert_nil oo.last_row(sheet), "last_row not nil in sheet #{sheet}"
637
+ assert_nil oo.first_column(sheet), "first_column not nil in sheet #{sheet}"
638
+ assert_nil oo.last_column(sheet), "last_column not nil in sheet #{sheet}"
639
639
  end
640
640
  oo.to_xml
641
641
  end
metadata CHANGED
@@ -1,16 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: roo-xls
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Preymesser
8
8
  - Hugh McGowan
9
9
  - Ben Woosley
10
- autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2018-02-26 00:00:00.000000000 Z
12
+ date: 1980-01-02 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: roo
@@ -21,7 +20,7 @@ dependencies:
21
20
  version: 2.0.0
22
21
  - - "<"
23
22
  - !ruby/object:Gem::Version
24
- version: '3'
23
+ version: '4'
25
24
  type: :runtime
26
25
  prerelease: false
27
26
  version_requirements: !ruby/object:Gem::Requirement
@@ -31,21 +30,41 @@ dependencies:
31
30
  version: 2.0.0
32
31
  - - "<"
33
32
  - !ruby/object:Gem::Version
34
- version: '3'
33
+ version: '4'
35
34
  - !ruby/object:Gem::Dependency
36
35
  name: spreadsheet
37
36
  requirement: !ruby/object:Gem::Requirement
38
37
  requirements:
39
- - - ">"
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 1.3.4
41
+ - - "<"
42
+ - !ruby/object:Gem::Version
43
+ version: '2'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: 1.3.4
51
+ - - "<"
40
52
  - !ruby/object:Gem::Version
41
- version: 0.9.0
53
+ version: '2'
54
+ - !ruby/object:Gem::Dependency
55
+ name: csv
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
42
61
  type: :runtime
43
62
  prerelease: false
44
63
  version_requirements: !ruby/object:Gem::Requirement
45
64
  requirements:
46
- - - ">"
65
+ - - ">="
47
66
  - !ruby/object:Gem::Version
48
- version: 0.9.0
67
+ version: '0'
49
68
  - !ruby/object:Gem::Dependency
50
69
  name: nokogiri
51
70
  requirement: !ruby/object:Gem::Requirement
@@ -88,6 +107,34 @@ dependencies:
88
107
  - - ">="
89
108
  - !ruby/object:Gem::Version
90
109
  version: '10.0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: minitest
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: 5.19.0
117
+ type: :development
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: 5.19.0
124
+ - !ruby/object:Gem::Dependency
125
+ name: matrix
126
+ requirement: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
131
+ type: :development
132
+ prerelease: false
133
+ version_requirements: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
91
138
  description: |-
92
139
  Roo can access the contents of various spreadsheet files. It can handle
93
140
  * OpenOffice
@@ -102,10 +149,15 @@ executables: []
102
149
  extensions: []
103
150
  extra_rdoc_files: []
104
151
  files:
152
+ - ".github/issue_template.md"
153
+ - ".github/pull_request_template.md"
154
+ - ".github/workflows/release-please.yml"
155
+ - ".github/workflows/ruby.yml"
105
156
  - ".gitignore"
157
+ - ".release-please-manifest.json"
106
158
  - ".rubocop.yml"
107
159
  - ".simplecov"
108
- - ".travis.yml"
160
+ - CHANGELOG.md
109
161
  - Gemfile
110
162
  - LICENSE.txt
111
163
  - README.md
@@ -116,6 +168,7 @@ files:
116
168
  - lib/roo/xls/excel_2003_xml.rb
117
169
  - lib/roo/xls/spreadsheet_extensions.rb
118
170
  - lib/roo/xls/version.rb
171
+ - release-please-config.json
119
172
  - roo-xls.gemspec
120
173
  - spec/lib/roo/xls/excel2003xml_spec.rb
121
174
  - spec/lib/roo/xls/excel_spec.rb
@@ -186,11 +239,11 @@ files:
186
239
  - test/test_excel_2003_xml.rb
187
240
  - test/test_helper.rb
188
241
  - test/test_roo_excel.rb
189
- homepage:
242
+ homepage: https://github.com/roo-rb/roo-xls
190
243
  licenses:
191
244
  - MIT
192
- metadata: {}
193
- post_install_message:
245
+ metadata:
246
+ changelog_uri: https://github.com/roo-rb/roo-xls/blob/master/CHANGELOG.md
194
247
  rdoc_options: []
195
248
  require_paths:
196
249
  - lib
@@ -198,16 +251,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
198
251
  requirements:
199
252
  - - ">="
200
253
  - !ruby/object:Gem::Version
201
- version: '0'
254
+ version: 3.1.0
202
255
  required_rubygems_version: !ruby/object:Gem::Requirement
203
256
  requirements:
204
257
  - - ">="
205
258
  - !ruby/object:Gem::Version
206
259
  version: '0'
207
260
  requirements: []
208
- rubyforge_project:
209
- rubygems_version: 2.7.6
210
- signing_key:
261
+ rubygems_version: 3.6.9
211
262
  specification_version: 4
212
263
  summary: Roo::Excel can access the contents of classic xls files.
213
264
  test_files:
data/.travis.yml DELETED
@@ -1,16 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.0
4
- - 2.1
5
- - 2.2
6
- - 2.3
7
- - 2.4
8
- - 2.5
9
- - ruby-head
10
- - jruby-19mode # JRuby in 1.9 mode
11
- - rbx-2
12
- matrix:
13
- allow_failures:
14
- - rvm: ruby-head
15
- - rvm: rbx-2
16
- bundler_args: --without local_development