xsv 0.1.0 → 0.1.1

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