etl-pipeline 0.0.1 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b7ee08fae3f04bb883999d5d148b02450bd2d343
4
- data.tar.gz: 52b96d82772b8133364d4c05c2e3f5df629f5e24
3
+ metadata.gz: 6c169809c6cb4a6a3e856a07cd1affd8720c2269
4
+ data.tar.gz: 01e4de2a75ed5c50a950b500618d533cfd38170a
5
5
  SHA512:
6
- metadata.gz: 32d24a01d74658926eb0b246469cf0e6fb1f280d6d64026dff8106d7b882b605c2669466b92fded44f93d4ea98cb9de7f53bc4dd3ce8b016dfde298004ccbe2a
7
- data.tar.gz: d14b103e47bdb6f096334fc39357dad4485d3bcc3a0dc413a2695b46da737209feb9a51782f82e33999266d89b237b0fdda3fa97fa951b5f0afbe0c350420ee9
6
+ metadata.gz: 1d4e50eae41efce5d232c7cfe9526fd81b4121c08a79c6be1db6f8a45ea754439ad38bf62db5553dc127557d929cd5eca988216ba51eaf0d9441a3493052d8ed
7
+ data.tar.gz: df4725bfd4597a0cef527fa1172e69240fd877af8e4fa7bfa86b73805e769c932c1f9841c5a4a755a512833174d3d8532440083db56c6bd414bc18fc6bee1ddd
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![Build Status](https://travis-ci.org/elijahc/etl-pipeline.svg?branch=master)](https://travis-ci.org/elijahc/etl-pipeline)
4
4
 
5
- <!---[![Gem Version](https://badge.fury.io/rb/sinderella.png)](http://badge.fury.io/rb/sinderella) --->
5
+ [![Gem Version](https://badge.fury.io/rb/etl-pipeline.svg)](http://badge.fury.io/rb/etl-pipeline)
6
6
 
7
7
  [![Coverage Status](https://coveralls.io/repos/elijahc/pipeline/badge.png)](https://coveralls.io/r/elijahc/pipeline)
8
8
 
@@ -2,17 +2,68 @@ require "etl-pipeline/version"
2
2
 
3
3
  module Pipeline
4
4
  module Parser
5
- class CSV
5
+ class Base
6
+ def parse
7
+ end
8
+ end
9
+
10
+ class CSVParser < Pipeline::Parser::Base
11
+ attr_accessor :attribute_matrix, :model, :items
12
+ def initialize
13
+ @attribute_matrix = Hash.new
14
+ @items = Array.new
15
+ end
16
+
17
+ def coerce(input, output)
18
+ @attribute_matrix.each do |attr, prok|
19
+ end
20
+ end
21
+
6
22
  def parse(file_path, options={})
7
23
  CSV.foreach(file_path, options) do |csv|
24
+ obj = @model.new
25
+ coerce csv, obj
8
26
  yield csv
9
27
  end
10
28
  end
29
+
30
+ def register_model(model)
31
+ self.model = model
32
+ end
33
+
34
+ def match(attribute, prok)
35
+ @attribute_matrix[attribute.to_sym] = prok
36
+ end
11
37
  end
12
38
  end
13
39
 
14
40
  module Model
15
41
  class Base
42
+
43
+ def attributes
44
+ attributes_hash = Hash.new
45
+ self.instance_variables.each do |attr|
46
+ attributes_hash.store(attr[1..-1].to_sym, instance_eval(attr.to_s))
47
+ end
48
+ attributes_hash
49
+ end
50
+
51
+ def format
52
+ end
53
+
54
+ def formatted_attributes
55
+ attr_hash = attributes
56
+ attr_hash.each do |k,v|
57
+ begin
58
+ attr_hash[k] = send("format_#{k}".to_sym, v)
59
+ rescue NoMethodError => e
60
+ # No formatter defined, use passed value as formatted value
61
+ attr_hash[k] = v.to_s
62
+ end
63
+ end
64
+
65
+ attr_hash
66
+ end
16
67
  end
17
68
  end
18
69
 
@@ -22,11 +73,20 @@ module Pipeline
22
73
  end
23
74
 
24
75
  class Base
25
- attr_accessor :model, :parser, :importer
76
+ attr_accessor :parser, :importer
77
+
78
+ def initialize
79
+ @parser = Pipeline::Parser::Base
80
+ @importer = Pipeline::Importer::Base
81
+ end
26
82
 
27
83
  def parse *args
28
84
  parser.parse *args
29
85
  end
30
86
 
87
+ def import *args
88
+ importer.import *args
89
+ end
90
+
31
91
  end
32
92
  end
@@ -1,3 +1,3 @@
1
1
  module Pipeline
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -0,0 +1,13 @@
1
+ require 'spec_helper'
2
+
3
+ describe CSVParser do
4
+ describe '#new' do
5
+ end
6
+
7
+ describe '#parse' do
8
+ end
9
+
10
+ describe '#match' do
11
+
12
+ end
13
+ end
@@ -0,0 +1,37 @@
1
+ require 'spec_helper'
2
+ class TestModel < Pipeline::Model::Base
3
+ attr_accessor :var
4
+
5
+ def format_var(var)
6
+ case var
7
+ when 'A'
8
+ return 'B'
9
+ when 'Y'
10
+ return 'Z'
11
+ end
12
+ end
13
+ end
14
+
15
+ describe Pipeline::Model::Base do
16
+ before :each do
17
+ @test_model = TestModel.new
18
+ end
19
+
20
+ describe '#attributes' do
21
+ it 'returns a hash version of the model' do
22
+ expect(@test_model.attributes).to be_instance_of Hash
23
+ end
24
+ end
25
+
26
+ describe '#formatted_attributes' do
27
+ before :each do
28
+ @test_model.var = 'A'
29
+ end
30
+
31
+ it 'iterates over its own attributes and returns a formatted attributes hash' do
32
+ expect(@test_model.formatted_attributes).to be_instance_of Hash
33
+ expect(@test_model.var).to eq('A')
34
+ expect(@test_model.formatted_attributes[:var]).to eq('B')
35
+ end
36
+ end
37
+ end
@@ -3,11 +3,15 @@ class TestPipeline < Pipeline::Base
3
3
  end
4
4
 
5
5
  describe Pipeline do
6
-
7
6
  it 'has a version number' do
8
7
  expect(Pipeline::VERSION).not_to be_nil
9
8
  expect(Pipeline::VERSION).to be_instance_of String
10
9
  end
10
+ describe '#new' do
11
+ it 'returns a new instance of Pipeline' do
12
+ expect(TestPipeline.new).to be_instance_of TestPipeline
13
+ end
14
+ end
11
15
 
12
16
 
13
17
  end
@@ -3,6 +3,7 @@ Coveralls.wear!
3
3
 
4
4
  require 'pry'
5
5
  require 'etl-pipeline'
6
+ include Pipeline::Parser
6
7
 
7
8
  RSpec.configure do |config|
8
9
  config.expect_with :rspec
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: etl-pipeline
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elijah Christensen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-21 00:00:00.000000000 Z
11
+ date: 2014-07-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -182,9 +182,10 @@ files:
182
182
  - Rakefile
183
183
  - etl-pipeline.gemspec
184
184
  - lib/etl-pipeline.rb
185
- - lib/etl-pipeline/csv_parser.rb
186
185
  - lib/etl-pipeline/version.rb
187
- - spec/etl-pipeline.rb
186
+ - spec/csv_parser_spec.rb
187
+ - spec/model_base_spec.rb
188
+ - spec/pipeline_spec.rb
188
189
  - spec/spec_helper.rb
189
190
  homepage: ''
190
191
  licenses:
@@ -211,5 +212,7 @@ signing_key:
211
212
  specification_version: 4
212
213
  summary: Pipeline is a modular specimen migration toolkit.
213
214
  test_files:
214
- - spec/etl-pipeline.rb
215
+ - spec/csv_parser_spec.rb
216
+ - spec/model_base_spec.rb
217
+ - spec/pipeline_spec.rb
215
218
  - spec/spec_helper.rb
@@ -1,6 +0,0 @@
1
- module Pipeline
2
- module Parser
3
- module CSV
4
- end
5
- end
6
- end