exporter 0.0.2 → 0.0.3

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
  SHA1:
3
- metadata.gz: 54d0c5d2182a7f626aaf086115972ee69a59a703
4
- data.tar.gz: 50105309abf883eb09c562b24a97872eabc136bb
3
+ metadata.gz: 9b8edc0551e8c2615785995f42f8b534ad188c63
4
+ data.tar.gz: aad26a14494806cdca3274e96e0dd93c9f2d26e2
5
5
  SHA512:
6
- metadata.gz: ab1442f9da308cf03f68ae7449dec7dae6f1492419c5445a7465c383793fb05898138efe9cf7de00c857fad510eecefb68046c1c23493b0e37b02429f83709d3
7
- data.tar.gz: 4af2065a2f20a3fcdc997313b798079a50b39a00b9080675b847c3199afee0a2f3cfeb04d136592266bd13cb672e09001716042857fd5532555dc8dfb2ade0d8
6
+ metadata.gz: d443e04b11b5c3d96fddb7457282a48f86dc0bb628f1b6a42d0af0a0d24bebb4b0a4c2ec15b552603f9c9e1192a59e5db72daa9d2faed6a7277db2caed9d354a
7
+ data.tar.gz: dde08124573c9c8dd5b281b5afd8cf17446c9c9c223ad7a8c50da8b7646284bdc5bb557626fa4d6c0e87087fac1042246b89809ab1ef2bff7958a69363ab21a4
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
+ .DS_Store
1
2
  *.gem
2
3
  *.rbc
3
4
  .bundle
data/Gemfile CHANGED
@@ -2,4 +2,8 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in exporter.gemspec
4
4
  gemspec
5
- gem 'coveralls', require: false
5
+ gem 'activerecord'
6
+ group :test do
7
+ gem 'rspec'
8
+ gem 'coveralls', require: false
9
+ end
data/README.md CHANGED
@@ -1,8 +1,13 @@
1
1
  # Exporter
2
+ [![Gem Version](https://badge.fury.io/rb/exporter.png)](http://badge.fury.io/rb/exporter)
2
3
  [![Build Status](https://travis-ci.org/voanhduy1512/exporter.png?branch=master)](https://travis-ci.org/voanhduy1512/exporter)
3
4
  [![Code Climate](https://codeclimate.com/github/voanhduy1512/exporter.png)](https://codeclimate.com/github/voanhduy1512/exporter)
4
5
  [![Coverage Status](https://coveralls.io/repos/voanhduy1512/exporter/badge.png)](https://coveralls.io/r/voanhduy1512/exporter)
5
6
  [![Dependency Status](https://gemnasium.com/voanhduy1512/exporter.png)](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 "rspec"
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)
@@ -9,7 +9,7 @@ module Exporter
9
9
  end
10
10
 
11
11
  def can_export?(data_type, export_type)
12
- (@exporters[data_type] && @exporters[data_type][export_type]) ? true : false
12
+ @exporters[data_type] && @exporters[data_type][export_type]
13
13
  end
14
14
 
15
15
  def exporter(data_type, export_type)
@@ -5,9 +5,9 @@ module Exporter
5
5
  def initialize(data)
6
6
  @data = data
7
7
  end
8
-
8
+
9
9
  def to_file(path)
10
- raise NotImplementedError.new("You must implement this to_file method.")
10
+ File.open(path, 'w') {|f| f.write(@data) }
11
11
  end
12
12
  end
13
13
  end
@@ -0,0 +1,7 @@
1
+ module Exporter
2
+ class CsvDocument < Document
3
+ def to_file(path)
4
+ File.open(path, 'w') {|f| f.write(@data) }
5
+ end
6
+ end
7
+ end
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Exporter
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -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
@@ -0,0 +1,4 @@
1
+ module Exporter
2
+ class User < ActiveRecord::Base
3
+ end
4
+ end
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
- require 'coveralls'
8
- Coveralls.wear!
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.2
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-15 00:00:00.000000000 Z
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: rspec
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