active_report 5.1.0 → 5.2.0

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: 62f3910d3aa4740c3e5bc3bad0f0aef0dcc206b383111a47a5cfaeb56b90f2c2
4
- data.tar.gz: 0abfb5b3f2c2d39611e6a596bda3d82c7f2767cdfb9fa970215575cad2a9a2f0
3
+ metadata.gz: 9248db55a8c0da20b43723561304941333dfacf0deb7b5cc4ed65a0659bf66c4
4
+ data.tar.gz: f6e1b36abe1fb1d2795961603f82eafed5bf2d8ba062226906e6290003287a45
5
5
  SHA512:
6
- metadata.gz: c70f6edc36e88b5b7fa670985af6d8ecdb4416fc4f2f94712ba803649028bc61f72d84cf5e5f81aff510c18a1a630628a1bb890e21151fa100779e302666fb81
7
- data.tar.gz: b9d850afcadc91dca8a7fa4529c6317d8ca373f61606b8b69cfc22b3e39783109bbfac89cf114c0c9824eda7787e03e6a804e94069957786d21d3ce60c66eb09
6
+ metadata.gz: 6d71166d364d08cb17e080fd9e8902d88a4f3fb284d34283d017f94dcfbbde918bc92d672e62629506edd988486de7eb4f631dc4be2c37f4302be111b67bee2d
7
+ data.tar.gz: ecf4a0724128f3a7db634e32c05422066b65d5af0dfd60cf1f875a3222f52df41379a6bc81f7167562920c6ad06ccf38d907a5f4b5d05478ff7ec91a6084f77d
data/.reek CHANGED
@@ -28,6 +28,7 @@ TooManyStatements:
28
28
  exclude:
29
29
  - 'ActiveReport::Base#metamorph'
30
30
  - 'ActiveReport::Hash#import'
31
+ - 'ActiveReport::Record#export'
31
32
  - 'ActiveReport::Record#import'
32
33
  UncommunicativeMethodName:
33
34
  exclude:
data/README.md CHANGED
@@ -50,6 +50,7 @@ end
50
50
  **Options:**
51
51
  * headers: column titles of CSV data
52
52
  * options: CSV options to be use on generation
53
+ * stream: generate an enumerator
53
54
 
54
55
  ```ruby
55
56
  @list = [
@@ -82,6 +83,7 @@ ActiveReport::Array.import('sample.csv', headers: ['ID', 'Task', 'Completed'], o
82
83
  * except: keys of pairs not to be used on generation
83
84
  * headers: column titles of CSV data
84
85
  * options: CSV options to be use on generation
86
+ * stream: generate an enumerator
85
87
 
86
88
  ```ruby
87
89
  @list = [
@@ -116,6 +118,7 @@ ActiveReport::Hash.import('sample.csv', except: :completed, headers: ['ID', 'Tas
116
118
  * except: columns not to be used on generation
117
119
  * headers: column titles of CSV data
118
120
  * options: CSV options to be use on generation
121
+ * stream: generate an enumerator
119
122
 
120
123
  ```ruby
121
124
  @list = [
@@ -1,8 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # coding: utf-8
4
-
5
- lib = File.expand_path('../lib', __FILE__)
3
+ lib = File.expand_path('lib', __dir__)
6
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
7
5
  require 'active_report/version'
8
6
 
@@ -28,12 +26,12 @@ Gem::Specification.new do |spec|
28
26
  spec.add_runtime_dependency 'activerecord-import'
29
27
 
30
28
  spec.add_development_dependency 'bundler'
31
- spec.add_development_dependency 'rake'
32
- spec.add_development_dependency 'rspec'
33
- spec.add_development_dependency 'sqlite3'
34
29
  spec.add_development_dependency 'database_cleaner'
35
- spec.add_development_dependency 'generator_spec'
36
30
  spec.add_development_dependency 'fasterer'
31
+ spec.add_development_dependency 'generator_spec'
32
+ spec.add_development_dependency 'rake'
37
33
  spec.add_development_dependency 'reek'
34
+ spec.add_development_dependency 'rspec'
38
35
  spec.add_development_dependency 'rubocop'
36
+ spec.add_development_dependency 'sqlite3'
39
37
  end
@@ -2,37 +2,43 @@
2
2
 
3
3
  class ActiveReport::Array < ActiveReport::Base
4
4
 
5
- attr_accessor :data, :headers, :options
6
-
7
- def initialize(data, headers: nil, options: {})
8
- @data = data
5
+ def initialize(datum, headers: nil, options: {}, stream: false)
6
+ @datum = datum
9
7
  @headers = headers
10
8
  @options = csv_options.merge(options)
9
+ @stream = stream
11
10
  end
12
11
 
13
- def self.export(data, headers: nil, options: {})
14
- klass = new(data, headers: headers, options: options)
12
+ def self.export(datum, headers: nil, options: {}, stream: false)
13
+ klass = new(datum, headers: headers, options: options, stream: stream)
15
14
  klass.export
16
15
  end
17
16
 
18
- def self.import(data, headers: nil, options: {})
19
- klass = new(data, headers: headers, options: options)
17
+ def self.import(datum, headers: nil, options: {})
18
+ klass = new(datum, headers: headers, options: options)
20
19
  klass.import
21
20
  end
22
21
 
23
22
  def export
24
- @data = munge_first(@data)
25
-
26
- CSV.generate(@options) do |csv|
27
- csv << @headers unless @headers.nil?
28
- @data.lazy.each { |cell| csv << cell }
23
+ @datum = munge_first(@datum)
24
+
25
+ if @stream == true
26
+ Enumerator.new do |csv|
27
+ csv << @headers unless @headers.nil?
28
+ @datum.each { |row| csv << row }
29
+ end
30
+ else
31
+ CSV.generate(@options) do |csv|
32
+ csv << @headers unless @headers.nil?
33
+ @datum.each { |row| csv << row }
34
+ end
29
35
  end
30
36
  end
31
37
 
32
38
  def import
33
39
  array = merge(@headers)
34
40
 
35
- CSV.foreach(@data, @options) do |row|
41
+ CSV.foreach(@datum, @options) do |row|
36
42
  row = encode_to_utf8(row) if csv_force_encoding?
37
43
  array.push(row)
38
44
  end
@@ -72,7 +72,7 @@ class ActiveReport::Base
72
72
  end
73
73
 
74
74
  def metaform_hash(datum)
75
- datum.lazy.each { |key, val| datum[key] = metaform(val) }
75
+ datum.each { |key, val| datum[key] = metaform(val) }
76
76
  end
77
77
 
78
78
  def metamorph_array(datum)
@@ -2,20 +2,21 @@
2
2
 
3
3
  class ActiveReport::Hash < ActiveReport::Base
4
4
 
5
- attr_accessor :datum, :only, :except, :headers, :options
6
-
7
- def initialize(datum, only: nil, except: nil, headers: nil, options: {})
5
+ def initialize(datum, only: nil, except: nil, headers: nil, options: {}, stream: false)
8
6
  @datum = datum
9
7
  @only = munge(only)
10
8
  @except = munge(except)
11
9
  @headers = headers
12
10
  @options = csv_options.merge(options)
11
+ @stream = stream
13
12
  end
14
13
 
15
- def self.export(datum, only: nil, except: nil, headers: nil, options: {})
16
- klass = new(datum, only: only, except: except, headers: headers, options: options)
14
+ # rubocop:disable Metrics/LineLength
15
+ def self.export(datum, only: nil, except: nil, headers: nil, options: {}, stream: false)
16
+ klass = new(datum, only: only, except: except, headers: headers, options: options, stream: stream)
17
17
  klass.export
18
18
  end
19
+ # rubocop:enable Metrics/LineLength
19
20
 
20
21
  def self.import(datum, only: nil, except: nil, headers: nil, options: {})
21
22
  klass = new(datum, only: only, except: except, headers: headers, options: options)
@@ -24,10 +25,18 @@ class ActiveReport::Hash < ActiveReport::Base
24
25
 
25
26
  def export
26
27
  @datum = munge(@datum)
28
+ @headers = (@headers || filter_humanize_keys(@datum))
27
29
 
28
- CSV.generate(@options) do |csv|
29
- csv << (@headers || filter_humanize_keys(@datum))
30
- @datum.lazy.each { |data| csv << filter_values(data) }
30
+ if @stream == true
31
+ Enumerator.new do |csv|
32
+ csv << @headers
33
+ @data.each { |row| csv << filter_values(row) }
34
+ end
35
+ else
36
+ CSV.generate(@options) do |csv|
37
+ csv << @headers
38
+ @datum.each { |row| csv << filter_values(row) }
39
+ end
31
40
  end
32
41
  end
33
42
 
@@ -42,7 +51,7 @@ class ActiveReport::Hash < ActiveReport::Base
42
51
  @headers = data
43
52
  else
44
53
  subdata = {}
45
- @headers.lazy.each_with_index { |header, idx| subdata[header.to_s] = data[idx] }
54
+ @headers.each_with_index { |header, idx| subdata[header.to_s] = data[idx] }
46
55
  filter(subdata)
47
56
  array.push(subdata)
48
57
  end
@@ -9,19 +9,22 @@ class ActiveReport::Record < ActiveReport::Base
9
9
 
10
10
  attr_accessor :datum, :model, :only, :except, :headers, :options
11
11
 
12
- def initialize(datum, model: nil, only: nil, except: nil, headers: nil, options: {})
12
+ # rubocop:disable Metrics/LineLength
13
+ def initialize(datum, model: nil, only: nil, except: nil, headers: nil, options: {}, stream: false)
13
14
  @datum = datum
14
15
  @model = model
15
16
  @only = munge(only)
16
17
  @except = munge(except)
17
18
  @headers = headers
18
19
  @options = csv_options.merge(options)
20
+ @stream = stream
19
21
  end
20
22
 
21
- def self.export(datum, only: nil, except: nil, headers: nil, options: {})
22
- klass = new(datum, only: only, except: except, headers: headers, options: options)
23
+ def self.export(datum, only: nil, except: nil, headers: nil, options: {}, stream: false)
24
+ klass = new(datum, only: only, except: except, headers: headers, options: options, stream: stream)
23
25
  klass.export
24
26
  end
27
+ # rubocop:enable Metrics/LineLength
25
28
 
26
29
  def self.import(datum, only: nil, except: nil, headers: nil, options: {}, model: nil)
27
30
  klass = new(datum, only: only, except: except, headers: headers, options: options, model: model)
@@ -37,10 +40,18 @@ class ActiveReport::Record < ActiveReport::Base
37
40
 
38
41
  @only.map!(&:to_s)
39
42
  @except.map!(&:to_s)
43
+ @headers = (@headers || filter_humanize_keys(@datum))
40
44
 
41
- CSV.generate(@options) do |csv|
42
- csv << (@headers || filter_humanize_keys(@datum))
43
- @datum.lazy.each { |data| csv << filter_values(data) }
45
+ if @stream == true
46
+ Enumerator.new do |csv|
47
+ csv << @headers
48
+ @data.each { |row| csv << filter_values(row) }
49
+ end
50
+ else
51
+ CSV.generate(@options) do |csv|
52
+ csv << @headers
53
+ @datum.each { |row| csv << filter_values(row) }
54
+ end
44
55
  end
45
56
  end
46
57
 
@@ -54,10 +65,10 @@ class ActiveReport::Record < ActiveReport::Base
54
65
  @datum = munge(@datum)
55
66
 
56
67
  records = []
57
- @datum.lazy.each do |data|
68
+ @datum.each do |data|
58
69
  params = {}
59
70
 
60
- data.lazy.each do |key, value|
71
+ data.each do |key, value|
61
72
  key = key.to_s.downcase.gsub(/ |-/, '_').to_sym
62
73
  params[key] = value
63
74
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActiveReport
4
- VERSION ||= '5.1.0'
4
+ VERSION ||= '5.2.0'
5
5
  end
@@ -3,7 +3,7 @@
3
3
  require 'rails/generators'
4
4
 
5
5
  class ActiveReport::InstallGenerator < Rails::Generators::Base
6
- source_root File.expand_path('../templates', __FILE__)
6
+ source_root File.expand_path('templates', __dir__)
7
7
 
8
8
  def copy_initializer_file
9
9
  copy_file('install.rb', 'config/initializers/active_report.rb')
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_report
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.1.0
4
+ version: 5.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juan Gomez
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-12-05 00:00:00.000000000 Z
11
+ date: 2018-05-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -53,7 +53,7 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: rake
56
+ name: database_cleaner
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
@@ -67,7 +67,7 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: rspec
70
+ name: fasterer
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ">="
@@ -81,7 +81,7 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: sqlite3
84
+ name: generator_spec
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ">="
@@ -95,7 +95,7 @@ dependencies:
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: database_cleaner
98
+ name: rake
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - ">="
@@ -109,7 +109,7 @@ dependencies:
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
- name: generator_spec
112
+ name: reek
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - ">="
@@ -123,7 +123,7 @@ dependencies:
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
- name: fasterer
126
+ name: rspec
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - ">="
@@ -137,7 +137,7 @@ dependencies:
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  - !ruby/object:Gem::Dependency
140
- name: reek
140
+ name: rubocop
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - ">="
@@ -151,7 +151,7 @@ dependencies:
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
153
  - !ruby/object:Gem::Dependency
154
- name: rubocop
154
+ name: sqlite3
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
157
  - - ">="
@@ -218,7 +218,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
218
218
  version: '0'
219
219
  requirements: []
220
220
  rubyforge_project:
221
- rubygems_version: 2.7.3
221
+ rubygems_version: 2.7.6
222
222
  signing_key:
223
223
  specification_version: 4
224
224
  summary: Gem for exporting/importing ruby objects to flat files vice versa.