ntq_excelsior 1.1.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: cb00b94aaef4ffb70a15389a97c245b70b990bc13b98bbdeff8d776ffe38ed18
4
- data.tar.gz: c458cdc7bb84106d2a2d4c64ca93bb66cfce7e7592487fdcfedc04933c5cfe9a
3
+ metadata.gz: d7623610b856ec03f9eb51aee437b8e7d1357f6cf2a0cf0e28277fe5aca5adb9
4
+ data.tar.gz: db0984b6a3545570b9d44a24b2e53570b3b2fe15c445488619fee1d9fef07716
5
5
  SHA512:
6
- metadata.gz: 3b441b018a18cc207f5afac705fd7eb3ee2a1cf42c1dd7066be4f8b59d374c66e477da93cd9e5efa5d67b32d11cae29e33d229260551eedbf8e573502f875c5a
7
- data.tar.gz: ce1a262a95ebe529b5c65fd5cb4680699cd3f602cfffbf970cb785d8a9f673869440b71a2819e30aedb096dea32920435fc5d80bf6a9bc17a42f2607b00e819a
6
+ metadata.gz: 21ea936bacb155d5da8cf1785bb45a3ed2054a871cbcc7797f90ef979954a5e1fb806027527fb130b453cbbee2a32465a4793fb458aa048e280f8ec2e9ce3905
7
+ data.tar.gz: dcc68660a9802823c1333634fda1d9ca9e41640c3b24af44a1ccb5f08a72f94a79631f435a7a22ac2295d54953686ea26152ac1449f315ea595715a096d74db1
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ntq_excelsior (1.1.0)
4
+ ntq_excelsior (1.2.1)
5
5
  caxlsx (< 4)
6
6
  roo (< 3)
7
7
 
@@ -29,7 +29,7 @@ GEM
29
29
  rake (13.0.6)
30
30
  regexp_parser (2.8.1)
31
31
  rexml (3.2.5)
32
- roo (2.10.0)
32
+ roo (2.8.3)
33
33
  nokogiri (~> 1)
34
34
  rubyzip (>= 1.3.0, < 3.0.0)
35
35
  rspec (3.11.0)
@@ -72,4 +72,4 @@ DEPENDENCIES
72
72
  rubocop (~> 1.21)
73
73
 
74
74
  BUNDLED WITH
75
- 2.4.14
75
+ 2.3.8
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # NtqExcelsior
2
2
 
3
+ [![Maintainability](https://api.codeclimate.com/v1/badges/8bc43b15a0a8bfc5d660/maintainability)](https://codeclimate.com/github/9troisquarts/ntq-excelsior/maintainability)
4
+
3
5
  Ntq excelsior simplifie l'import et l'export de vos données.
4
6
 
5
7
  ## Installation
@@ -79,15 +81,34 @@ exporter.context = { current_user: current_user }
79
81
  stream = exporter.export.to_stream.read
80
82
 
81
83
  # In ruby file
82
- File.open("export.xlsx", "w") do |tpm|
83
- tpm.binmode
84
- tpm.write(stream)
84
+ File.open("export.xlsx", "w") do |tmp|
85
+ tmp.binmode
86
+ tmp.write(stream)
85
87
  end
86
88
 
87
89
  # In Controller action
88
90
  send_data stream, type: 'application/xlsx', filename: "filename.xlsx"
89
91
  ```
90
92
 
93
+ ### Multiple workbooks export
94
+
95
+ ```ruby
96
+ user_exporter = UserExporter.new(@user_data)
97
+ product_exporter = ProductExporter.new(@product_data)
98
+
99
+ exporter = NtqExcelsior::MultiWorkbookExporter.new([user_exporter, product_exporter])
100
+ stream = exporter.export.to_stream.read
101
+
102
+ # In ruby file
103
+ File.open("export.xlsx", "w") do |tmp|
104
+ tmp.binmode
105
+ tmp.write(stream)
106
+ end
107
+
108
+ # In Controller action
109
+ send_data stream, type: 'application/xlsx', filename: "filename.xlsx"
110
+ ```
111
+
91
112
  ### Import
92
113
 
93
114
  ```ruby
@@ -132,6 +132,8 @@ module NtqExcelsior
132
132
  v = value
133
133
  return v unless accessors && accessors.length > 0
134
134
 
135
+ return v.dig(*accessors) if v.is_a?(Hash)
136
+
135
137
  v = v.send(accessors[0])
136
138
  return v if accessors.length == 1
137
139
  return dig_value(v, accessors.slice(1..-1))
@@ -76,7 +76,11 @@ module NtqExcelsior
76
76
  transform_header_to_regexp(get_column_header(column)) == header_missing_regex
77
77
  end
78
78
  if header_found && header_found.is_a?(Hash)
79
- missing_headers << header_found[:header].is_a?(String) ? header_found[:header] : (header_found[:humanized_header] || header_missing)
79
+ if header_found[:header].is_a?(String)
80
+ missing_headers << header_found[:header]
81
+ else
82
+ missing_headers << (header_found[:humanized_header] || header_missing)
83
+ end
80
84
  elsif header_found&.is_a?(String)
81
85
  missing_headers << header_found
82
86
  else
@@ -0,0 +1,28 @@
1
+ require 'caxlsx'
2
+
3
+ module NtqExcelsior
4
+ class MultiWorkbookExporter
5
+
6
+ attr_accessor :exporters
7
+
8
+ def initialize(exporters = [])
9
+ @exporters = exporters
10
+ end
11
+
12
+ def export
13
+ exports = exporters
14
+ exports = [exporters] if exporters && !exporters.is_a?(Array)
15
+
16
+ package = Axlsx::Package.new
17
+ wb = package.workbook
18
+ wb_styles = wb.styles
19
+
20
+ exports.each do |exporter|
21
+ exporter.generate_workbook(wb, wb_styles)
22
+ end
23
+
24
+ package
25
+ end
26
+
27
+ end
28
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module NtqExcelsior
4
- VERSION = "1.1.0"
4
+ VERSION = "1.2.1"
5
5
  end
data/lib/ntq_excelsior.rb CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  require_relative "ntq_excelsior/version"
4
4
  require 'ntq_excelsior/exporter'
5
+ require 'ntq_excelsior/multi_workbook_exporter'
5
6
  require 'ntq_excelsior/importer'
6
7
  module NtqExcelsior
7
8
  class Error < StandardError; end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ntq_excelsior
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-07-21 00:00:00.000000000 Z
11
+ date: 2023-10-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: caxlsx
@@ -58,6 +58,7 @@ files:
58
58
  - lib/ntq_excelsior.rb
59
59
  - lib/ntq_excelsior/exporter.rb
60
60
  - lib/ntq_excelsior/importer.rb
61
+ - lib/ntq_excelsior/multi_workbook_exporter.rb
61
62
  - lib/ntq_excelsior/version.rb
62
63
  - sig/ntq_excelsior.rbs
63
64
  homepage: https://github.com/9troisquarts/ntq-excelsior