hanging_methods 0.0.3 → 1.0.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 +7 -0
- data/README.md +6 -9
- data/hanging_methods.gemspec +2 -2
- data/lib/hanging_methods.rb +18 -12
- data/lib/hanging_methods/method_call_notifier.rb +2 -2
- data/lib/hanging_methods/version.rb +1 -1
- metadata +24 -18
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: fd6aa759c5ca36bb17d4fc8e64ccda3157e2209a
|
4
|
+
data.tar.gz: 369a4767b84b7d263db0c178290effb944326660
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: cfe4311ff4057781f7e91e6cf5bad998c9b4c46f09f85165e42c0acd70fcd087956fe2a6636711b15878a6ab6998fc9948071f4b11afb901c13cb65e33a877d6
|
7
|
+
data.tar.gz: 3ba97f154b64037749db7aa8e337e0e796dce8e3dca2956e3ef7b2c79df7805e7db5fb48b0f275742c41a5a35845d611a692fa4a789cb2906b6e92a51ac6ae05
|
data/README.md
CHANGED
@@ -14,12 +14,11 @@ See [Parallizer](https://github.com/michaelgpearce/parallizer) for an example.
|
|
14
14
|
Here's an example.
|
15
15
|
|
16
16
|
```ruby
|
17
|
-
require 'rubygems'
|
18
17
|
require 'hanging_methods'
|
19
18
|
|
20
19
|
class Interesting
|
21
20
|
include HangingMethods
|
22
|
-
|
21
|
+
|
23
22
|
add_hanging_method :add
|
24
23
|
end
|
25
24
|
|
@@ -37,25 +36,23 @@ puts interesting.hanging_method_invocations(:add)
|
|
37
36
|
You can be notified of method being hanged and specify its result.
|
38
37
|
|
39
38
|
```ruby
|
40
|
-
require 'rubygems'
|
41
39
|
require 'hanging_methods'
|
42
40
|
|
43
41
|
class Interesting
|
44
42
|
include HangingMethods
|
45
|
-
|
43
|
+
|
46
44
|
add_hanging_method :add, after_invocation: :added
|
47
45
|
|
48
46
|
private
|
49
47
|
|
50
|
-
def added(
|
51
|
-
|
52
|
-
return :very_interesting
|
48
|
+
def added(method_name, arg_1, arg_2, &block)
|
49
|
+
return "very_interesting: #{arg_1}, #{arg_2}, #{yield}"
|
53
50
|
end
|
54
51
|
end
|
55
52
|
|
56
53
|
interesting = Interesting.new
|
57
|
-
interesting.add.a_method(1, 2)
|
58
|
-
# returns :
|
54
|
+
interesting.add.a_method(1, 2) { 3 }
|
55
|
+
# returns "very_interesting: 1, 2, 3"
|
59
56
|
```
|
60
57
|
|
61
58
|
# Credits
|
data/hanging_methods.gemspec
CHANGED
@@ -19,6 +19,6 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
20
20
|
s.require_paths = ["lib"]
|
21
21
|
|
22
|
-
s.add_development_dependency 'rake'
|
23
|
-
s.add_development_dependency 'rspec', '~> 2.14.0'
|
22
|
+
s.add_development_dependency 'rake', '~> 0', '>= 0'
|
23
|
+
s.add_development_dependency 'rspec', '~> 2.14.0', '>= 2.14.0'
|
24
24
|
end
|
data/lib/hanging_methods.rb
CHANGED
@@ -6,41 +6,47 @@ module HangingMethods
|
|
6
6
|
def add_hanging_method(hanging_method_name, options = {})
|
7
7
|
unknown_keys = options.keys - [:after_invocation]
|
8
8
|
raise ArgumentError, "Unknown keys: #{unknown_keys.join(',')}" unless unknown_keys.empty?
|
9
|
-
|
9
|
+
|
10
10
|
add_hanging_method_options(hanging_method_name, options)
|
11
|
-
|
11
|
+
|
12
12
|
define_method(hanging_method_name) do
|
13
|
-
::HangingMethods::MethodCallNotifier.new do |*method_name_and_args|
|
14
|
-
|
13
|
+
::HangingMethods::MethodCallNotifier.new do |*method_name_and_args, &block|
|
14
|
+
add_hanging_method_invocation(hanging_method_name, method_name_and_args, block)
|
15
15
|
end
|
16
16
|
end
|
17
17
|
end
|
18
|
-
|
18
|
+
|
19
19
|
def add_hanging_method_options(hanging_method_name, options)
|
20
20
|
hanging_method_options(hanging_method_name).merge!(options)
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
def hanging_method_options(hanging_method_name)
|
24
24
|
@hanging_method_options ||= {}
|
25
25
|
@hanging_method_options[hanging_method_name] ||= {}
|
26
26
|
end
|
27
27
|
end
|
28
|
-
|
28
|
+
|
29
29
|
module InstanceMethods
|
30
|
-
def
|
30
|
+
def add_hanging_method_invocation(hanging_method_name, method_name_and_args, block)
|
31
31
|
hanging_method_invocations(hanging_method_name) << method_name_and_args
|
32
|
-
|
32
|
+
hanging_method_blocks(hanging_method_name) << block
|
33
|
+
|
33
34
|
ret = if after_invocation = self.method(hanging_method_name).owner.hanging_method_options(hanging_method_name)[:after_invocation]
|
34
|
-
send(after_invocation, method_name_and_args)
|
35
|
+
send(after_invocation, method_name_and_args[0], *method_name_and_args[1..-1], &block)
|
35
36
|
end
|
36
37
|
end
|
37
|
-
|
38
|
+
|
38
39
|
def hanging_method_invocations(hanging_method_name)
|
39
40
|
@hanging_method_invocations ||= {}
|
40
41
|
@hanging_method_invocations[hanging_method_name] ||= []
|
41
42
|
end
|
43
|
+
|
44
|
+
def hanging_method_blocks(hanging_method_name)
|
45
|
+
@hanging_method_blocks ||= {}
|
46
|
+
@hanging_method_blocks[hanging_method_name] ||= []
|
47
|
+
end
|
42
48
|
end
|
43
|
-
|
49
|
+
|
44
50
|
def self.included(base)
|
45
51
|
base.send(:include, InstanceMethods)
|
46
52
|
base.send(:extend, ClassMethods)
|
metadata
CHANGED
@@ -1,46 +1,53 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hanging_methods
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Michael Pearce
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2017-05-03 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rake
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
- - ">="
|
20
21
|
- !ruby/object:Gem::Version
|
21
22
|
version: '0'
|
22
23
|
type: :development
|
23
24
|
prerelease: false
|
24
25
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
26
|
requirements:
|
27
|
-
- -
|
27
|
+
- - "~>"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- - ">="
|
28
31
|
- !ruby/object:Gem::Version
|
29
32
|
version: '0'
|
30
33
|
- !ruby/object:Gem::Dependency
|
31
34
|
name: rspec
|
32
35
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
36
|
requirements:
|
35
|
-
- - ~>
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: 2.14.0
|
40
|
+
- - ">="
|
36
41
|
- !ruby/object:Gem::Version
|
37
42
|
version: 2.14.0
|
38
43
|
type: :development
|
39
44
|
prerelease: false
|
40
45
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
46
|
requirements:
|
43
|
-
- - ~>
|
47
|
+
- - "~>"
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: 2.14.0
|
50
|
+
- - ">="
|
44
51
|
- !ruby/object:Gem::Version
|
45
52
|
version: 2.14.0
|
46
53
|
description: Add a method that you can hang other methods.
|
@@ -50,7 +57,7 @@ executables: []
|
|
50
57
|
extensions: []
|
51
58
|
extra_rdoc_files: []
|
52
59
|
files:
|
53
|
-
- .gitignore
|
60
|
+
- ".gitignore"
|
54
61
|
- Gemfile
|
55
62
|
- Gemfile.lock
|
56
63
|
- LICENSE.txt
|
@@ -66,27 +73,26 @@ files:
|
|
66
73
|
homepage: http://github.com/michaelgpearce/hanging_methods
|
67
74
|
licenses:
|
68
75
|
- MIT
|
76
|
+
metadata: {}
|
69
77
|
post_install_message:
|
70
78
|
rdoc_options: []
|
71
79
|
require_paths:
|
72
80
|
- lib
|
73
81
|
required_ruby_version: !ruby/object:Gem::Requirement
|
74
|
-
none: false
|
75
82
|
requirements:
|
76
|
-
- -
|
83
|
+
- - ">="
|
77
84
|
- !ruby/object:Gem::Version
|
78
85
|
version: '0'
|
79
86
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
80
|
-
none: false
|
81
87
|
requirements:
|
82
|
-
- -
|
88
|
+
- - ">="
|
83
89
|
- !ruby/object:Gem::Version
|
84
90
|
version: '0'
|
85
91
|
requirements: []
|
86
92
|
rubyforge_project: hanging_methods
|
87
|
-
rubygems_version:
|
93
|
+
rubygems_version: 2.4.8
|
88
94
|
signing_key:
|
89
|
-
specification_version:
|
95
|
+
specification_version: 4
|
90
96
|
summary: Add a method that you can hang other methods
|
91
97
|
test_files:
|
92
98
|
- spec/hanging_methods/method_call_notifier_spec.rb
|