do_blocks 0.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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/do_blocks.rb +33 -0
  3. metadata +58 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 8e191f5654fa705213de23652888c87103720f31d6dd96c29368d54fc8e6da20
4
+ data.tar.gz: 9a45a3a0c62db75a037539f8ad1d3756e34a63c5d6f801745d855887d626fe7d
5
+ SHA512:
6
+ metadata.gz: 002c4fcc509491e5f12ed8a602a6702e7e2b6f779944bc09a5a4880e3c1526760aa0f02f3d7d08df7805f3f3899a16e5a8ace32be95854fe8d3be0eeaeb911f2
7
+ data.tar.gz: 331115cef6bccbd5997eeb61c5917b7b092b0b85d124c57886abf85e6fe4cab0b26851ccd7f5ecbdc9adf4d39957e481671ec0683ae30d66e9dc19fb22b47779
data/lib/do_blocks.rb ADDED
@@ -0,0 +1,33 @@
1
+ module DoBlocks
2
+ def do_before(method_name, &block)
3
+ original_method = instance_method(method_name)
4
+
5
+ define_method(method_name) do |*args, **kwargs|
6
+ block.call(args, kwargs)
7
+ original_method.bind(self).call(*args, **kwargs)
8
+ end
9
+ end
10
+
11
+ def do_after(method_name, &block)
12
+ original_method = instance_method(method_name)
13
+
14
+ define_method(method_name) do |*args, **kwargs|
15
+ result = original_method.bind(self).call(*args, **kwargs)
16
+ block.call(args, kwargs, result)
17
+ result
18
+ end
19
+ end
20
+
21
+ def do_on_error(method_name, reraise: true, &block)
22
+ original_method = instance_method(method_name)
23
+
24
+ define_method(method_name) do |*args, **kwargs|
25
+ begin
26
+ original_method.bind(self).call(*args, **kwargs)
27
+ rescue => error
28
+ block.call(args, kwargs, error)
29
+ raise error if reraise
30
+ end
31
+ end
32
+ end
33
+ end
metadata ADDED
@@ -0,0 +1,58 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: do_blocks
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Matheus Portela
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2024-02-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.0'
27
+ description: This gem allows classes to easily define blocks that are executed before
28
+ a method run, after a method run, or when an error occurs during the method's execution.
29
+ email:
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - lib/do_blocks.rb
35
+ homepage: https://github.com/matheusportela/do_blocks
36
+ licenses:
37
+ - MIT
38
+ metadata: {}
39
+ post_install_message:
40
+ rdoc_options: []
41
+ require_paths:
42
+ - lib
43
+ required_ruby_version: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: 3.0.0
48
+ required_rubygems_version: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ requirements: []
54
+ rubygems_version: 3.5.6
55
+ signing_key:
56
+ specification_version: 4
57
+ summary: Useful before, after, and on error blocks for methods
58
+ test_files: []