xsv 0.1.0 → 0.1.1

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: 9a277b15ef0d08bd690fad89ee2fde1d0e884d62aacd4f6ee1dc61863939ed17
4
- data.tar.gz: 7f2b8583392bef4741108c843700e1f8f52dec66fc4ec3f046c5725e0ebd63ff
3
+ metadata.gz: cd294b7a34e4551d8d86fce762b4c632a2b6b0906665b321b4e0bf586880f0a9
4
+ data.tar.gz: 204862fa72e99e0cb67c3bc54c21e0e652e6028070d81dd993d5df012e264ca5
5
5
  SHA512:
6
- metadata.gz: 0a5d416c0c18876aef6473c8b6f181048ec04f892edd4eff6e8d02728bbb6fcf4251048abca8d80f6af342d4e266ba6167f0b5046b31b95c70866c0abe273dd4
7
- data.tar.gz: 5d331bb4501e262fbd17391b949ba28678224fb738601c79c514f1eae9274286c38f75ab7b824e235d12fae6f20c8e11df5b002638191af783ec9b45ef2cc535
6
+ metadata.gz: 6f4063b90b0d9c30586fa4ac9cecda89fbd2f6bf6ef2ab8ba379039c32cff0d0d2072946b598accc64f05cb3949c6039bae0848a1119180902e0561448153d4b
7
+ data.tar.gz: '01932836f664fb61d285edd4d6b88ca84a5141ac2c20c09b177d30e15a039e406311505fc0c111f9fdcd0be18da8a0e0baf020d3a4c0a748e8384485ad25c91c'
data/Gemfile.lock CHANGED
@@ -2,8 +2,8 @@ PATH
2
2
  remote: .
3
3
  specs:
4
4
  xsv (0.1.0)
5
- nokogiri (~> 1.10.8)
6
- rubyzip (~> 2.2.0)
5
+ nokogiri (~> 1.10)
6
+ rubyzip (~> 2.2)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
data/lib/xsv/file.rb CHANGED
@@ -17,6 +17,11 @@ module Xsv
17
17
  "#<#{self.class.name}:#{self.object_id}>"
18
18
  end
19
19
 
20
+ def close
21
+ # FIXME @sheets.each { |s| s.xml.close }
22
+ @zip.close
23
+ end
24
+
20
25
  private
21
26
 
22
27
  def fetch_shared_strings
data/lib/xsv/sheet.rb CHANGED
@@ -2,16 +2,20 @@ module Xsv
2
2
  class Sheet
3
3
  attr_reader :xml
4
4
 
5
- def initialize(sheet, xml)
6
- @sheet = sheet
5
+ def initialize(workbook, xml)
6
+ @workbook = workbook
7
7
  @xml = xml
8
8
  @headers = []
9
9
  end
10
10
 
11
+ def inspect
12
+ "#<#{self.class.name}:#{self.object_id}>"
13
+ end
14
+
15
+ # Iterate over rows. Returns an array if read_headers is false, or a hash
16
+ # with first row values as keys if read_headers is true
11
17
  def each_row(read_headers: false)
12
- if read_headers
13
- @headers = parse_row(@xml.css("sheetData row").first)
14
- end
18
+ @parse_headers if read_headers
15
19
 
16
20
  @xml.css("sheetData row").each do |row_xml|
17
21
  yield(parse_row(row_xml))
@@ -20,8 +24,25 @@ module Xsv
20
24
  true
21
25
  end
22
26
 
27
+ # Get row by number, starting at 0
28
+ def [](number)
29
+ parse_row(@xml.css("sheetData row:nth-child(#{number + 1})").first)
30
+ end
31
+
32
+ # Load headers in the top row of the worksheet. After parsing of headers
33
+ # all methods return hashes instead of arrays
34
+ def parse_headers!
35
+ parse_headers
36
+
37
+ true
38
+ end
39
+
23
40
  private
24
41
 
42
+ def parse_headers
43
+ @headers = parse_row(@xml.css("sheetData row").first)
44
+ end
45
+
25
46
  def parse_row(xml)
26
47
  if @headers.any?
27
48
  row = {}
@@ -34,7 +55,7 @@ module Xsv
34
55
 
35
56
  value = case c_xml["t"]
36
57
  when "s"
37
- @sheet.shared_strings[c_xml.css("v").inner_text.to_i]
58
+ @workbook.shared_strings[c_xml.css("v").inner_text.to_i]
38
59
  when "str"
39
60
  c_xml.css("v").inner_text
40
61
  when "e" # N/A
data/lib/xsv/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Xsv
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
data/xsv.gemspec CHANGED
@@ -31,8 +31,10 @@ Gem::Specification.new do |spec|
31
31
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
32
32
  spec.require_paths = ["lib"]
33
33
 
34
- spec.add_dependency "rubyzip", "~> 2.2.0"
35
- spec.add_dependency "nokogiri", "~> 1.10.8"
34
+ spec.required_ruby_version = '~> 2.6'
35
+
36
+ spec.add_dependency "rubyzip", "~> 2.2"
37
+ spec.add_dependency "nokogiri", "~> 1.10"
36
38
 
37
39
  spec.add_development_dependency "bundler", "~> 1.17"
38
40
  spec.add_development_dependency "rake", "~> 10.0"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xsv
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martijn Storck
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 2.2.0
19
+ version: '2.2'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 2.2.0
26
+ version: '2.2'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: nokogiri
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 1.10.8
33
+ version: '1.10'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 1.10.8
40
+ version: '1.10'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -114,9 +114,9 @@ require_paths:
114
114
  - lib
115
115
  required_ruby_version: !ruby/object:Gem::Requirement
116
116
  requirements:
117
- - - ">="
117
+ - - "~>"
118
118
  - !ruby/object:Gem::Version
119
- version: '0'
119
+ version: '2.6'
120
120
  required_rubygems_version: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - ">="