cascade-rb 0.2.0 → 0.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
  SHA1:
3
- metadata.gz: b321e02345f0116d9def142e1ef8ece2dda722e4
4
- data.tar.gz: ae08c0071e7abf966764e3b2d8fc194428b28244
3
+ metadata.gz: d2165fc5c39a2e0e92ea8a3151c08d0dfe23b124
4
+ data.tar.gz: 436c06bdae41f289e2a73600eebff8f1b6d5f5db
5
5
  SHA512:
6
- metadata.gz: 0b6d62c7ed816ab434ed9a245e8a278753e73bbf3b031b899946b7afe095eeb1276e9760fbe7c6ef1381a76a2c12a8c2a439b92aa24c328129c2e5a8b9d1bae8
7
- data.tar.gz: 4604b3cd290fda7437b9e91dc4453d1e92800f4e8ea3f8cf5fef87973ccf42f235c60b598e247e34a7d9f5dbc3420dc88715ca3d4cbf65c60dc1fdbcf7f466b6
6
+ metadata.gz: 9259f30d5960e10b8f416729d64a0acf343f9f50a1df6d70e2076a198e03adb188be243bb3efb78b6e4d2215f80b9fadb0b82d83cf404fd5f6e8908fb3ae8d33
7
+ data.tar.gz: 585e311fa3ceec43cedbd7e6be9c7e2597c02a27a16b154fb1b0fe841fc541814a2754531c69795377ad6b4af01ddf9223d42748abdbb55bdaaf6307f2b03b9c
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # [Cascade]
2
2
 
3
- [![Codeship Status for ignat-zakrevsky/cascade](https://codeship.com/projects/d7590880-9943-0132-4aa6-1e41bc68e178/status?branch=master)](https://codeship.com/projects/63625) [![Code Climate](https://codeclimate.com/github/ignat-zakrevsky/cascade/badges/gpa.svg)](https://codeclimate.com/github/ignat-zakrevsky/cascade) [![Test Coverage](https://codeclimate.com/github/ignat-zakrevsky/cascade/badges/coverage.svg)](https://codeclimate.com/github/ignat-zakrevsky/cascade) [![Gem Version](https://badge.fury.io/rb/cascade-rb.svg)](http://badge.fury.io/rb/cascade-rb)
3
+ [![Codeship Status for ignat-zakrevsky/cascade](https://codeship.com/projects/d7590880-9943-0132-4aa6-1e41bc68e178/status?branch=master)](https://codeship.com/projects/63625) [![Code Climate](https://codeclimate.com/github/ignat-zakrevsky/cascade/badges/gpa.svg)](https://codeclimate.com/github/ignat-zakrevsky/cascade) [![Test Coverage](https://codeclimate.com/github/ignat-zakrevsky/cascade/badges/coverage.svg)](https://codeclimate.com/github/ignat-zakrevsky/cascade) [![Gem Version](https://badge.fury.io/rb/cascade-rb.svg)](http://badge.fury.io/rb/cascade-rb) [![Codacy Badge](https://api.codacy.com/project/badge/grade/3d27b4bc418341dcb4f704cafebffd4d)](https://www.codacy.com/app/iezakrevsky/cascade)
4
4
 
5
5
  The main aim of this gem is to provide some kind of template for parsing files.
6
6
  Usually, parsing file process contains next steps:
@@ -15,9 +15,9 @@ module Cascade
15
15
  # DataSaver
16
16
  #
17
17
  def call
18
- @data_provider.each do |row|
18
+ @data_provider.each_with_index do |row, row_number|
19
19
  @error_handler.with_errors_handling(row) do
20
- @data_saver.call @row_processor.call(row)
20
+ @data_saver.call @row_processor.call(row), row_number
21
21
  end
22
22
  end
23
23
  end
@@ -7,9 +7,9 @@ module Cascade
7
7
  define_setting :raise_parse_errors, false
8
8
 
9
9
  HANDLING_EXCEPTIONS = [IndexError]
10
- DEFAULT_ERROR_STORE = lambda do |row, reason|
10
+ DEFAULT_ERROR_STORE = lambda do |row, exception|
11
11
  @errors ||= []
12
- @errors << [row, reason]
12
+ @errors << [row, exception.to_s]
13
13
  end
14
14
 
15
15
  def initialize(options = {})
@@ -26,7 +26,7 @@ module Cascade
26
26
  def with_errors_handling(row)
27
27
  yield
28
28
  rescue *@handling_exceptions => exception
29
- @error_store.call(row, exception.to_s)
29
+ @error_store.call(row, exception)
30
30
  raise exception if self.class.raise_parse_errors
31
31
  end
32
32
  end
@@ -14,8 +14,8 @@ module Cascade
14
14
  define_setting :deafult_presenter, -> { DEFAULT_PROCESSOR }
15
15
 
16
16
  def initialize(options = {})
17
+ @options = options
17
18
  @columns_matching = options[:columns_matching] || ColumnsMatching.new
18
- @presenters = options.reverse_merge(defined_presenters)
19
19
  end
20
20
 
21
21
  # Iterates through object using columns values supported keys as keys for
@@ -33,19 +33,26 @@ module Cascade
33
33
 
34
34
  private
35
35
 
36
+ attr_reader :options
37
+
36
38
  def receive_presenter(column_name)
37
- presenter = @presenters[@columns_matching.column_type(column_name)]
39
+ presenter = presenters[@columns_matching.column_type(column_name)]
38
40
  if presenter.nil? && !self.class.use_default_presenter
39
41
  raise Cascade::UnknownPresenterType.new
40
42
  end
41
43
  presenter || self.class.deafult_presenter
42
44
  end
43
45
 
46
+ def presenters
47
+ @presenters ||= options.reverse_merge(defined_presenters)
48
+ end
49
+
44
50
  def defined_presenters
45
51
  {
46
52
  string: DEFAULT_PROCESSOR,
47
53
  currency: ComplexFields::Currency.new,
48
54
  boolean: ComplexFields::Boolean.new,
55
+ recursive: self.class.new(options)
49
56
  }
50
57
  end
51
58
  end
@@ -1,4 +1,4 @@
1
1
  module Cascade
2
2
  # current gem version
3
- VERSION = "0.2.0"
3
+ VERSION = "0.2.1"
4
4
  end
@@ -9,7 +9,7 @@ describe Cascade::ErrorHandler do
9
9
  let(:error_store) do
10
10
  lambda do |row, reason|
11
11
  @errors ||= []
12
- @errors << [row, reason]
12
+ @errors << [row, reason.to_s]
13
13
  end
14
14
  end
15
15
  let(:row) { Struct.new(:fields) }
@@ -34,7 +34,7 @@ describe Cascade::ErrorHandler do
34
34
  describe "DEFAULT_ERROR_STORE" do
35
35
  it "create new array and push row with reason" do
36
36
  result = Cascade::ErrorHandler::DEFAULT_ERROR_STORE.call(:row, :reason)
37
- assert_includes result, %i(row reason)
37
+ assert_includes result, [:row, "reason"]
38
38
  end
39
39
  end
40
40
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cascade-rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ignat Zakrevsky
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-23 00:00:00.000000000 Z
11
+ date: 2016-03-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler