simple_xlsx_reader 1.0.5 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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