simple_xlsx_reader 1.0.5 → 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.5
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: 2022-05-19 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
@@ -87,6 +87,7 @@ executables: []
87
87
  extensions: []
88
88
  extra_rdoc_files: []
89
89
  files:
90
+ - ".github/workflows/ruby.yml"
90
91
  - ".gitignore"
91
92
  - ".travis.yml"
92
93
  - CHANGELOG.md
@@ -95,6 +96,13 @@ files:
95
96
  - README.md
96
97
  - Rakefile
97
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
98
106
  - lib/simple_xlsx_reader/version.rb
99
107
  - simple_xlsx_reader.gemspec
100
108
  - test/date1904.xlsx
@@ -111,11 +119,12 @@ files:
111
119
  - test/simple_xlsx_reader_test.rb
112
120
  - test/styles.xml
113
121
  - test/test_helper.rb
122
+ - test/test_xlsx_builder.rb
114
123
  homepage: ''
115
124
  licenses:
116
125
  - MIT
117
126
  metadata: {}
118
- post_install_message:
127
+ post_install_message:
119
128
  rdoc_options: []
120
129
  require_paths:
121
130
  - lib
@@ -130,8 +139,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
130
139
  - !ruby/object:Gem::Version
131
140
  version: '0'
132
141
  requirements: []
133
- rubygems_version: 3.1.6
134
- signing_key:
142
+ rubygems_version: 3.3.7
143
+ signing_key:
135
144
  specification_version: 4
136
145
  summary: Read xlsx data the Ruby way
137
146
  test_files:
@@ -149,3 +158,4 @@ test_files:
149
158
  - test/simple_xlsx_reader_test.rb
150
159
  - test/styles.xml
151
160
  - test/test_helper.rb
161
+ - test/test_xlsx_builder.rb