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 +4 -4
- data/README.md +1 -1
- data/lib/cascade/data_parser.rb +2 -2
- data/lib/cascade/error_handler.rb +3 -3
- data/lib/cascade/row_processor.rb +9 -2
- data/lib/cascade/version.rb +1 -1
- data/spec/lib/error_handler_spec.rb +2 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d2165fc5c39a2e0e92ea8a3151c08d0dfe23b124
|
4
|
+
data.tar.gz: 436c06bdae41f289e2a73600eebff8f1b6d5f5db
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9259f30d5960e10b8f416729d64a0acf343f9f50a1df6d70e2076a198e03adb188be243bb3efb78b6e4d2215f80b9fadb0b82d83cf404fd5f6e8908fb3ae8d33
|
7
|
+
data.tar.gz: 585e311fa3ceec43cedbd7e6be9c7e2597c02a27a16b154fb1b0fe841fc541814a2754531c69795377ad6b4af01ddf9223d42748abdbb55bdaaf6307f2b03b9c
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# [Cascade]
|
2
2
|
|
3
|
-
[](https://codeship.com/projects/63625) [](https://codeclimate.com/github/ignat-zakrevsky/cascade) [](https://codeclimate.com/github/ignat-zakrevsky/cascade) [](http://badge.fury.io/rb/cascade-rb)
|
3
|
+
[](https://codeship.com/projects/63625) [](https://codeclimate.com/github/ignat-zakrevsky/cascade) [](https://codeclimate.com/github/ignat-zakrevsky/cascade) [](http://badge.fury.io/rb/cascade-rb) [](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:
|
data/lib/cascade/data_parser.rb
CHANGED
@@ -15,9 +15,9 @@ module Cascade
|
|
15
15
|
# DataSaver
|
16
16
|
#
|
17
17
|
def call
|
18
|
-
@data_provider.
|
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,
|
10
|
+
DEFAULT_ERROR_STORE = lambda do |row, exception|
|
11
11
|
@errors ||= []
|
12
|
-
@errors << [row,
|
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
|
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 =
|
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
|
data/lib/cascade/version.rb
CHANGED
@@ -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,
|
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.
|
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:
|
11
|
+
date: 2016-03-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|