handleit 0.0.1 → 1.1.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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/handle.rb +58 -0
  3. metadata +5 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e714807c41a808d38a08a66474cb00d23240cbd2d658e477c907e8ca650519d2
4
- data.tar.gz: 4243750e17a4cde6f0e43ff8a135c1214c6da4a8a498ed950f1ad1a5d1711323
3
+ metadata.gz: bc355df87f74ad63f9fffdcc5ffb9482fc5e3c7f5d5415cc0cd6dc58070f624e
4
+ data.tar.gz: c54dc82c7299f76dfd278d686cfd38defa4074483c534dbc79989974d0138f1b
5
5
  SHA512:
6
- metadata.gz: 64ee6d19aa97278038aa1918f9c3b7bde9c365d87f18d5ed622d99b66fd852fc382b091e83cb955fc96752bc647f184443031ae8385a1c7de93090dc16f5fa5e
7
- data.tar.gz: eedff7ff2a7b1c17484d874ba97c22d1630ae736505b0165b35236c2dce0290c90ce134d347184a6641a7ae338e66ee2b067bc97f8235f5fa08a70fe55cd237d
6
+ metadata.gz: 2033f523f28052c29b2dcbe014dc642cf2469163def8665d9ca311346139e146a1d4b83b5d2e2266aa0af1633fab325f1223d054a20927f2e6b3f1cf7595dbf9
7
+ data.tar.gz: 6bbae8d1827bdf6e579b9b388f6ee03754c55b8454caacf8b8e67b17d6d620b71c647aaf7ac74399a893fc3b96d99e89a70809bed93a90526ddf148b5c923b09
data/lib/handle.rb ADDED
@@ -0,0 +1,58 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Handle
4
+ NotValidError = Class.new(StandardError)
5
+
6
+ class << self
7
+ def it(options = {}, &block)
8
+ new.it(options, &block)
9
+ end
10
+ end
11
+
12
+ def it(options)
13
+ validate(options)
14
+
15
+ @result = OpenStruct.new return: yield, success: true, error: nil
16
+ self
17
+ rescue StandardError => e
18
+ error_handler(e)
19
+ end
20
+
21
+ def with
22
+ @result.return = yield(@result.return, **options = {}) if success?
23
+ self
24
+ rescue StandardError => e
25
+ error_handler(e)
26
+ end
27
+
28
+ def on_fail
29
+ yield(@result.error, **options = {}) unless success?
30
+ self
31
+ end
32
+
33
+ def result
34
+ @result.return
35
+ end
36
+
37
+ def success?
38
+ @result.success == true
39
+ end
40
+
41
+ def error
42
+ @result.error
43
+ end
44
+
45
+ private
46
+
47
+ def error_handler(err)
48
+ @result = OpenStruct.new return: nil, success: false, error: err
49
+ self
50
+ end
51
+
52
+ def validate(options)
53
+ condition = options[:when]
54
+ condition_error = options[:error] || 'Not Valid!'
55
+ good_to_go = condition&.respond_to?(:call) ? condition&.call : true
56
+ raise NotValidError, condition_error unless good_to_go
57
+ end
58
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: handleit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 1.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oleg Saltykov
@@ -15,7 +15,8 @@ email:
15
15
  executables: []
16
16
  extensions: []
17
17
  extra_rdoc_files: []
18
- files: []
18
+ files:
19
+ - lib/handle.rb
19
20
  homepage: https://github.com/nucleom42/handleit
20
21
  licenses:
21
22
  - MIT
@@ -38,5 +39,6 @@ requirements: []
38
39
  rubygems_version: 3.1.4
39
40
  signing_key:
40
41
  specification_version: 4
41
- summary: Handleit - promise like way of handling logic execution
42
+ summary: Handleit - promise like way of handling logic execution with ability of chaining
43
+ handlers like in Elexir pipelining approach
42
44
  test_files: []