exporter 0.0.2 → 0.0.3
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 +4 -4
- data/.gitignore +1 -0
- data/Gemfile +5 -1
- data/README.md +5 -8
- data/exporter.gemspec +1 -2
- data/lib/exporter.rb +5 -1
- data/lib/exporter/configuration.rb +1 -1
- data/lib/exporter/document.rb +2 -2
- data/lib/exporter/documents/csv_document.rb +7 -0
- data/lib/exporter/exporter.rb +2 -2
- data/lib/exporter/exporters/csv_exporter.rb +25 -0
- data/lib/exporter/version.rb +1 -1
- data/spec/lib/exporter_spec.rb +10 -0
- data/spec/models/user.rb +4 -0
- data/spec/spec_helper.rb +21 -2
- metadata +7 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9b8edc0551e8c2615785995f42f8b534ad188c63
|
4
|
+
data.tar.gz: aad26a14494806cdca3274e96e0dd93c9f2d26e2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d443e04b11b5c3d96fddb7457282a48f86dc0bb628f1b6a42d0af0a0d24bebb4b0a4c2ec15b552603f9c9e1192a59e5db72daa9d2faed6a7277db2caed9d354a
|
7
|
+
data.tar.gz: dde08124573c9c8dd5b281b5afd8cf17446c9c9c223ad7a8c50da8b7646284bdc5bb557626fa4d6c0e87087fac1042246b89809ab1ef2bff7958a69363ab21a4
|
data/.gitignore
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,8 +1,13 @@
|
|
1
1
|
# Exporter
|
2
|
+
[](http://badge.fury.io/rb/exporter)
|
2
3
|
[](https://travis-ci.org/voanhduy1512/exporter)
|
3
4
|
[](https://codeclimate.com/github/voanhduy1512/exporter)
|
4
5
|
[](https://coveralls.io/r/voanhduy1512/exporter)
|
5
6
|
[](https://gemnasium.com/voanhduy1512/exporter)
|
7
|
+
|
8
|
+
|
9
|
+
|
10
|
+
|
6
11
|
## Installation
|
7
12
|
|
8
13
|
Add this line to your application's Gemfile:
|
@@ -20,11 +25,3 @@ Or install it yourself as:
|
|
20
25
|
## Usage
|
21
26
|
|
22
27
|
TODO: Write usage instructions here
|
23
|
-
|
24
|
-
## Contributing
|
25
|
-
|
26
|
-
1. Fork it
|
27
|
-
2. Create your feature branch (`git checkout -b my-new-feature`)
|
28
|
-
3. Commit your changes (`git commit -am 'Add some feature'`)
|
29
|
-
4. Push to the branch (`git push origin my-new-feature`)
|
30
|
-
5. Create new Pull Request
|
data/exporter.gemspec
CHANGED
@@ -20,6 +20,5 @@ Gem::Specification.new do |spec|
|
|
20
20
|
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.3"
|
22
22
|
spec.add_development_dependency "rake"
|
23
|
-
spec.add_development_dependency
|
24
|
-
spec.add_development_dependency 'coveralls'
|
23
|
+
spec.add_development_dependency 'sqlite3'
|
25
24
|
end
|
data/lib/exporter.rb
CHANGED
@@ -2,13 +2,15 @@ require "exporter/version"
|
|
2
2
|
require "exporter/configuration"
|
3
3
|
require "exporter/document"
|
4
4
|
require "exporter/exporter"
|
5
|
+
require "exporter/documents/csv_document"
|
6
|
+
require "exporter/exporters/csv_exporter"
|
5
7
|
|
6
8
|
module Exporter
|
7
9
|
def self.configuration
|
8
10
|
@configuration ||= Configuration.new
|
9
11
|
end
|
10
12
|
|
11
|
-
def self.export(data, export_type, options)
|
13
|
+
def self.export(data, export_type, options={})
|
12
14
|
exporter = @configuration.exporter(data.class, export_type)
|
13
15
|
if exporter
|
14
16
|
exporter.export(data, options)
|
@@ -17,3 +19,5 @@ module Exporter
|
|
17
19
|
end
|
18
20
|
end
|
19
21
|
end
|
22
|
+
|
23
|
+
Exporter.configuration.register(Array, :csv, Exporter::CsvExporter)
|
data/lib/exporter/document.rb
CHANGED
data/lib/exporter/exporter.rb
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
module Exporter
|
2
2
|
class Exporter
|
3
|
-
def export(data, options)
|
3
|
+
def self.export(data, options)
|
4
4
|
document = process(data, options)
|
5
5
|
raise TypeError.new('process method must return an Document object') unless document.kind_of? Document
|
6
6
|
document
|
7
7
|
end
|
8
8
|
|
9
9
|
protected
|
10
|
-
def process(data, options)
|
10
|
+
def self.process(data, options)
|
11
11
|
raise NotImplementedError.new("You must implement this process method.")
|
12
12
|
end
|
13
13
|
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'CSV'
|
2
|
+
module Exporter
|
3
|
+
class CsvExporter < Exporter
|
4
|
+
def self.process(data, options)
|
5
|
+
|
6
|
+
raise TypeError.new('data must be an array') unless data.class.eql? Array
|
7
|
+
raise TypeError.new('Data must be an ActiveRecord') unless data[0].kind_of? ActiveRecord::Base
|
8
|
+
|
9
|
+
if options[:columns]
|
10
|
+
columns = options[:columns]
|
11
|
+
else
|
12
|
+
columns = data[0].class.attribute_names
|
13
|
+
end
|
14
|
+
|
15
|
+
data = CSV.generate do |csv|
|
16
|
+
csv << columns
|
17
|
+
data.each do |d|
|
18
|
+
csv << d.attributes.values_at(*columns)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
CsvDocument.new(data)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/lib/exporter/version.rb
CHANGED
data/spec/lib/exporter_spec.rb
CHANGED
@@ -1,8 +1,18 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
describe Exporter do
|
4
|
+
let(:data){
|
5
|
+
[
|
6
|
+
Exporter::User.create(:name => 'aaa', :email => 'aaa@aaa.aaa'),
|
7
|
+
Exporter::User.create(:name => 'bbb', :email => 'bbb@bbb.bbb')
|
8
|
+
]
|
9
|
+
}
|
4
10
|
describe '.export' do
|
5
11
|
it 'return an Exporter::Document' do
|
12
|
+
document = Exporter.export(data, :csv)
|
13
|
+
puts document.kind_of? Exporter::Document
|
14
|
+
puts document.class
|
15
|
+
expect(document).to be_kind_of(Exporter::Document)
|
6
16
|
end
|
7
17
|
end
|
8
18
|
end
|
data/spec/models/user.rb
ADDED
data/spec/spec_helper.rb
CHANGED
@@ -4,10 +4,16 @@
|
|
4
4
|
# loaded once.
|
5
5
|
#
|
6
6
|
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
7
|
-
|
8
|
-
|
7
|
+
|
8
|
+
if ENV['TRAVIS']
|
9
|
+
require 'coveralls'
|
10
|
+
Coveralls.wear!
|
11
|
+
end
|
9
12
|
|
10
13
|
require "exporter"
|
14
|
+
require 'active_record'
|
15
|
+
require 'models/user'
|
16
|
+
|
11
17
|
RSpec.configure do |config|
|
12
18
|
config.treat_symbols_as_metadata_keys_with_true_values = true
|
13
19
|
config.run_all_when_everything_filtered = true
|
@@ -21,3 +27,16 @@ RSpec.configure do |config|
|
|
21
27
|
# --seed 1234
|
22
28
|
config.order = 'random'
|
23
29
|
end
|
30
|
+
|
31
|
+
ActiveRecord::Base.establish_connection(
|
32
|
+
:adapter => 'sqlite3',
|
33
|
+
:database => ':memory:'
|
34
|
+
)
|
35
|
+
ActiveRecord::Schema.define do
|
36
|
+
self.verbose = false
|
37
|
+
|
38
|
+
create_table :users, :force => true do |t|
|
39
|
+
t.string :name
|
40
|
+
t.string :email
|
41
|
+
end
|
42
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: exporter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Võ Anh Duy
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-09-
|
11
|
+
date: 2013-09-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -39,21 +39,7 @@ dependencies:
|
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - '>='
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - '>='
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: coveralls
|
42
|
+
name: sqlite3
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
58
44
|
requirements:
|
59
45
|
- - '>='
|
@@ -85,9 +71,12 @@ files:
|
|
85
71
|
- lib/exporter.rb
|
86
72
|
- lib/exporter/configuration.rb
|
87
73
|
- lib/exporter/document.rb
|
74
|
+
- lib/exporter/documents/csv_document.rb
|
88
75
|
- lib/exporter/exporter.rb
|
76
|
+
- lib/exporter/exporters/csv_exporter.rb
|
89
77
|
- lib/exporter/version.rb
|
90
78
|
- spec/lib/exporter_spec.rb
|
79
|
+
- spec/models/user.rb
|
91
80
|
- spec/spec_helper.rb
|
92
81
|
homepage: ''
|
93
82
|
licenses:
|
@@ -115,4 +104,5 @@ specification_version: 4
|
|
115
104
|
summary: A simple data exporter
|
116
105
|
test_files:
|
117
106
|
- spec/lib/exporter_spec.rb
|
107
|
+
- spec/models/user.rb
|
118
108
|
- spec/spec_helper.rb
|