chainit 1.0.0 → 1.1.0

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: '01168d07cc80426d6f552a53c669e60bfaa496c2'
4
- data.tar.gz: 6d88b99bc3f384eb8c9d03445edde207d4887c1a
3
+ metadata.gz: 2c74ac4b8fd343c0102004f3c6f36b9e96a5d4e0
4
+ data.tar.gz: 6b5b8dca91e216e026b414d4efadfc2689acb9f2
5
5
  SHA512:
6
- metadata.gz: 5d2b4a9baf4f710d6972bf11a75181705f53ab303964e2d6c55fbb84823a1eb98642f8baf1f6faa1f880a605abb1034429d5d62ac4b9e75f63e6ed6e5e184b3e
7
- data.tar.gz: 4912261e137808838b79759dea153ce84e49cf546254ff7e6edd8627d65fcbb7e4dcb029a0411adea805d07247bdf3fe9c79a612dbce518fb14f11b358d44835
6
+ metadata.gz: 52ad71c4a97c6e1ce038b4d15eab7fe7a3c310cabb6bdc1c84d6b7a2b44751a316008a06b15b354ea4849f56b7533a5af73431ae05e321e2eb41ea1d38c5e8fd
7
+ data.tar.gz: 32fd4e691d7db94f937c2fa71f524f24070eb17917c1d43459434de47e1a52eb02bc1b8196d47ce6e40062ff855a2dd2dc001e14bfb5503354b6439d6f00584a
data/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  # ChainIt
2
- [![CircleCI](https://circleci.com/gh/spark-solutions/ChainIt/tree/master.svg?style=svg&circle-token=3bb16aef0dbcbe7fd18500376a110bd6cedf668a)](https://circleci.com/gh/spark-solutions/ChainIt/tree/master)
2
+ [![CircleCI](https://circleci.com/gh/spark-solutions/chain_it/tree/master.svg?style=svg&circle-token=3bb16aef0dbcbe7fd18500376a110bd6cedf668a)](https://circleci.com/gh/spark-solutions/ChainIt/tree/master)
3
3
 
4
4
  ## Description
5
5
  This provides the tool which is implementation of railway-oriented programming concept itself
@@ -1,3 +1,3 @@
1
1
  class ChainIt
2
- VERSION = '1.0.0'.freeze
2
+ VERSION = '1.1.0'.freeze
3
3
  end
data/lib/chain_it.rb CHANGED
@@ -1,4 +1,6 @@
1
1
  class ChainIt
2
+ INVALID_RESULT_MSG = "ChainIt#chain block must return both #value and #failure? aware object.\n Check documentation: https://github.com/spark-solutions/chain_it#usage"
3
+
2
4
  def chain
3
5
  if @skip_next
4
6
  @skip_next = false
@@ -7,20 +9,21 @@ class ChainIt
7
9
 
8
10
  return self if @skip
9
11
  @skip_next = false
10
- @result = yield @result&.value
11
- @skip = true if @result.failure?
12
+
13
+ @result = yield result_value
14
+ @skip = true if result_failure?
12
15
  self
13
16
  end
14
17
 
15
18
  def skip_next
16
19
  return self if @skip
17
- @skip_next = yield @result&.value
20
+ @skip_next = yield result_value
18
21
  self
19
22
  end
20
23
 
21
24
  def on_error
22
25
  return self unless @skip
23
- yield @result&.value
26
+ yield result_value
24
27
  @skip = false
25
28
  self
26
29
  end
@@ -28,6 +31,22 @@ class ChainIt
28
31
  def result
29
32
  @result
30
33
  end
34
+
35
+ private
36
+
37
+ def handle_wrong_result_api
38
+ yield
39
+ rescue NoMethodError
40
+ raise StandardError.new INVALID_RESULT_MSG
41
+ end
42
+
43
+ def result_value
44
+ handle_wrong_result_api { @result&.value }
45
+ end
46
+
47
+ def result_failure?
48
+ handle_wrong_result_api { @result.failure? }
49
+ end
31
50
  end
32
51
 
33
52
  require 'chain_it/version'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chainit
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - btolarz
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2018-08-03 00:00:00.000000000 Z
12
+ date: 2018-08-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler