xsv 1.2.0 → 1.2.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: 58e5d405e39f42d0e5287d47dd65c65b39a0ab5a2fc7fde3fd85c7211469e6e1
4
- data.tar.gz: 7100a73ce192536f81a34ffbb1b431a793edf9cb71c1612a547a64a686a8330f
3
+ metadata.gz: 5ba17dfa73b0bb77884f1f95bac715291316aa415c512b5a60b230250395f87d
4
+ data.tar.gz: d5c9ce6ac4b64dc854f6dd133fb139fae13b343b9e08465712d6b0e0189a6628
5
5
  SHA512:
6
- metadata.gz: 3b8fcbab2e2aa1f02dc0b51051a9b60dd2518b18b72007c2f3e77fa99248e864069d54b0bb43d783f8bb6ef79b6c2504c8cd05c244a2e9c85cddb882de224556
7
- data.tar.gz: 3ec5120d8b6e365996985c75f4c291e3f4805e9876fd93ae2dfe071c5bd69ad751677cf71121ac23f6e9bed75ab80296b12346d79696cb6105974345d289bb7e
6
+ metadata.gz: ec2f2bfd10455002aa2ebe8fe661a2b347e5831fde513d57a08fa43a58ea24a8105a2b308d504d5e65f30a5ac5a5c029daf0a6c2ac9c81ca722d6ff456d512ac
7
+ data.tar.gz: 232238fb39c14a4a9fb7d080b0817bd83620f9caeecd812f3058cc473d97506d8b8fbfd5ef74fc25afaf2c46674d230f2292e9b2e1b8e89b2734bb8b1540c679
@@ -19,10 +19,10 @@ jobs:
19
19
  runs-on: ubuntu-latest
20
20
  strategy:
21
21
  matrix:
22
- ruby-version: ['2.6', '2.7', '3.0', '3.1', 'jruby', 'truffleruby']
22
+ ruby-version: ['2.6', '2.7', '3.0', '3.1', '3.2', 'jruby', 'truffleruby']
23
23
 
24
24
  steps:
25
- - uses: actions/checkout@v2
25
+ - uses: actions/checkout@v3
26
26
  - name: Set up Ruby
27
27
  uses: ruby/setup-ruby@v1
28
28
  with:
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Xsv Changelog
2
2
 
3
+ ## 1.2.1 2023-05-09
4
+
5
+ - Handle columns without `r` attribute (issue #48)
6
+ - Access sheets by UTF-8 name (thanks @sebikeller)
7
+
3
8
  ## 1.2.0 2023-01-01
4
9
 
5
10
  **This release contains the following minor breaking changes**
@@ -17,6 +17,7 @@ module Xsv
17
17
  @store_characters = false
18
18
 
19
19
  @row_index = 0
20
+ @col_index = 0
20
21
  @current_row = {}
21
22
  @current_row_number = 0
22
23
  @current_cell = {}
@@ -33,7 +34,7 @@ module Xsv
33
34
  when "v", "is", "t"
34
35
  @store_characters = true
35
36
  when "row"
36
- @current_row = @empty_row.dup
37
+ @current_row = @mode == :array ? [] : @empty_row.dup
37
38
  @current_row_number = attrs[:r].to_i
38
39
  end
39
40
  end
@@ -47,19 +48,22 @@ module Xsv
47
48
  when "v", "is", "t"
48
49
  @store_characters = false
49
50
  when "c"
50
- col_index = column_index(@current_cell[:r])
51
+ col_index = @current_cell[:r] ? column_index(@current_cell[:r]) : @col_index
51
52
 
52
53
  if @mode == :array
53
54
  @current_row[col_index] = format_cell
54
55
  else
55
56
  @current_row[@headers[col_index]] = format_cell
56
57
  end
58
+
59
+ @col_index += 1
57
60
  when "row"
58
61
  return if @current_row_number <= @row_skip
59
62
 
60
63
  adjusted_row_number = @current_row_number - @row_skip
61
64
 
62
65
  @row_index += 1
66
+ @col_index = 0
63
67
 
64
68
  # Skip first row if we're in hash mode
65
69
  return if adjusted_row_number == 1 && @mode == :hash
@@ -72,7 +76,14 @@ module Xsv
72
76
  end
73
77
 
74
78
  # Do not return empty trailing rows
75
- @block.call(@current_row) unless @row_index > @last_row
79
+ return if @row_index > @last_row
80
+
81
+ # Add trailing empty columns
82
+ if @mode == :array && @current_row.length < @empty_row.length
83
+ @block.call(@current_row + @empty_row[@current_row.length..])
84
+ else
85
+ @block.call(@current_row)
86
+ end
76
87
  end
77
88
  end
78
89
 
@@ -9,7 +9,9 @@ module Xsv
9
9
 
10
10
  new { |sheet_ids| sheets_ids << sheet_ids }.parse(io)
11
11
 
12
- sheets_ids
12
+ sheets_ids.each do |sheet|
13
+ sheet[:name].force_encoding(Encoding::UTF_8)
14
+ end
13
15
  end
14
16
 
15
17
  def initialize(&block)
data/lib/xsv/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Xsv
4
- VERSION = "1.2.0"
4
+ VERSION = "1.2.1"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xsv
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martijn Storck
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-01-01 00:00:00.000000000 Z
11
+ date: 2023-05-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip