simple_xlsx_reader 1.0.2 → 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.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