simple_xlsx_reader 1.0.2 → 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.
data/test/test_helper.rb CHANGED
@@ -1,8 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  gem 'minitest'
2
4
  require 'minitest/autorun'
3
5
  require 'minitest/spec'
4
6
  require 'pry'
5
7
  require 'time'
8
+ require 'test_xlsx_builder'
6
9
 
7
- $:.unshift File.expand_path("lib")
10
+ $LOAD_PATH.unshift File.expand_path('lib')
8
11
  require 'simple_xlsx_reader'
@@ -0,0 +1,104 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'nokogiri'
4
+
5
+ TestXlsxBuilder = Struct.new(:shared_strings, :styles, :sheets, :workbook, :rels, keyword_init: true) do
6
+
7
+ DEFAULTS = {
8
+ workbook:
9
+ Nokogiri::XML(
10
+ <<-XML
11
+ <workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
12
+ <sheets>
13
+ <sheet name="Sheet1" sheetId="1" r:id="rId1"/>
14
+ </sheets>
15
+ </styleSheet>
16
+ XML
17
+ ).remove_namespaces!,
18
+
19
+ styles:
20
+ Nokogiri::XML(
21
+ <<-XML
22
+ <styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
23
+ <cellXfs count="1">
24
+ <xf numFmtId="0" />
25
+ </cellXfs>
26
+ </styleSheet>
27
+ XML
28
+ ).remove_namespaces!,
29
+
30
+ sheet:
31
+ Nokogiri::XML(
32
+ <<-XML
33
+ <worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
34
+ <dimension ref="A1:C1" />
35
+ <sheetData>
36
+ <row>
37
+ <c r='A1' s='0'>
38
+ <v>Cell A</v>
39
+ </c>
40
+ <c r='B1' s='0'>
41
+ <v>Cell B</v>
42
+ </c>
43
+ <c r='C1' s='0'>
44
+ <v>Cell C</v>
45
+ </c>
46
+ </row>
47
+ </sheetData>
48
+ </worksheet>
49
+ XML
50
+ ).remove_namespaces!
51
+ }
52
+
53
+ def initialize(*args)
54
+ super
55
+
56
+ self.workbook ||= DEFAULTS[:workbook]
57
+ self.styles ||= DEFAULTS[:styles]
58
+ self.sheets ||= [DEFAULTS[:sheet]]
59
+ self.rels ||= []
60
+ self.shared_strings ||= []
61
+ end
62
+
63
+ def archive
64
+ tmpfile = Tempfile.new(['workbook', '.xlsx'])
65
+ tmpfile.binmode
66
+ tmpfile.rewind
67
+
68
+ Zip::File.open(tmpfile.path, create: true) do |zip|
69
+ zip.mkdir('xl')
70
+
71
+ zip.get_output_stream('xl/workbook.xml') do |wb_file|
72
+ wb_file.write(workbook)
73
+ end
74
+
75
+ zip.get_output_stream('xl/styles.xml') do |styles_file|
76
+ styles_file.write(styles)
77
+ end
78
+
79
+ if shared_strings.any?
80
+ zip.get_output_stream('xl/sharedStrings.xml') do |ss_file|
81
+ ss_file.write(shared_strings)
82
+ end
83
+ end
84
+
85
+ zip.mkdir('xl/worksheets')
86
+
87
+ sheets.each_with_index do |sheet, i|
88
+ zip.get_output_stream("xl/worksheets/sheet#{i + 1}.xml") do |sf|
89
+ sf.write(sheet)
90
+ end
91
+
92
+ if rels[i]
93
+ zip.mkdir('xl/worksheets/_rels')
94
+ zip.get_output_stream("xl/worksheets/_rels/sheet#{i + 1}.xml.rels") do |rf|
95
+ rf.write(rels[i])
96
+ end
97
+ end
98
+ end
99
+ end
100
+
101
+ tmpfile
102
+ end
103
+ end
104
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_xlsx_reader
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Woody Peterson
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-24 00:00:00.000000000 Z
11
+ date: 2022-08-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '5.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: pry
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -68,24 +82,35 @@ dependencies:
68
82
  version: '0'
69
83
  description: Read xlsx data the Ruby way
70
84
  email:
71
- - woody@sigby.com
85
+ - woody.peterson@gmail.com
72
86
  executables: []
73
87
  extensions: []
74
88
  extra_rdoc_files: []
75
89
  files:
90
+ - ".github/workflows/ruby.yml"
76
91
  - ".gitignore"
92
+ - ".travis.yml"
77
93
  - CHANGELOG.md
78
94
  - Gemfile
79
95
  - LICENSE.txt
80
96
  - README.md
81
97
  - Rakefile
82
98
  - lib/simple_xlsx_reader.rb
99
+ - lib/simple_xlsx_reader/document.rb
100
+ - lib/simple_xlsx_reader/hyperlink.rb
101
+ - lib/simple_xlsx_reader/loader.rb
102
+ - lib/simple_xlsx_reader/loader/shared_strings_parser.rb
103
+ - lib/simple_xlsx_reader/loader/sheet_parser.rb
104
+ - lib/simple_xlsx_reader/loader/style_types_parser.rb
105
+ - lib/simple_xlsx_reader/loader/workbook_parser.rb
83
106
  - lib/simple_xlsx_reader/version.rb
84
107
  - simple_xlsx_reader.gemspec
85
108
  - test/date1904.xlsx
86
109
  - test/date1904_test.rb
87
110
  - test/datetime_test.rb
88
111
  - test/datetimes.xlsx
112
+ - test/gdocs_sheet.xlsx
113
+ - test/gdocs_sheet_test.rb
89
114
  - test/lower_case_sharedstrings.xlsx
90
115
  - test/lower_case_sharedstrings_test.rb
91
116
  - test/performance_test.rb
@@ -94,10 +119,12 @@ files:
94
119
  - test/simple_xlsx_reader_test.rb
95
120
  - test/styles.xml
96
121
  - test/test_helper.rb
122
+ - test/test_xlsx_builder.rb
97
123
  homepage: ''
98
- licenses: []
124
+ licenses:
125
+ - MIT
99
126
  metadata: {}
100
- post_install_message:
127
+ post_install_message:
101
128
  rdoc_options: []
102
129
  require_paths:
103
130
  - lib
@@ -112,9 +139,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
112
139
  - !ruby/object:Gem::Version
113
140
  version: '0'
114
141
  requirements: []
115
- rubyforge_project:
116
- rubygems_version: 2.2.2
117
- signing_key:
142
+ rubygems_version: 3.3.7
143
+ signing_key:
118
144
  specification_version: 4
119
145
  summary: Read xlsx data the Ruby way
120
146
  test_files:
@@ -122,6 +148,8 @@ test_files:
122
148
  - test/date1904_test.rb
123
149
  - test/datetime_test.rb
124
150
  - test/datetimes.xlsx
151
+ - test/gdocs_sheet.xlsx
152
+ - test/gdocs_sheet_test.rb
125
153
  - test/lower_case_sharedstrings.xlsx
126
154
  - test/lower_case_sharedstrings_test.rb
127
155
  - test/performance_test.rb
@@ -130,3 +158,4 @@ test_files:
130
158
  - test/simple_xlsx_reader_test.rb
131
159
  - test/styles.xml
132
160
  - test/test_helper.rb
161
+ - test/test_xlsx_builder.rb