active_method 1.1.0 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/README.md +21 -0
- data/lib/active_method/base.rb +3 -2
- data/lib/active_method/version.rb +1 -1
- data/lib/active_method.rb +13 -5
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0b23c787014f849b2af42c1c7df267235e94e4b15e85de7bfe8aca97a86f6c38
|
4
|
+
data.tar.gz: '02742652085c1b7dde6e0b02c416c1bd7a6be9713fe33f348e45bdb56ba01e06'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b99542a6f439c9758bcedcc024de0f079ddd95d43e0b71c5fd2aa88d9a02bdbbe4719cbed7bc2b6c096dda49686878c9cd3dfa41132dd1e51a7f367d2f5f9d9a
|
7
|
+
data.tar.gz: 45fd84df3b3c2a5d51dcfaf73b498a335ee9cc416788b881e526b01afdfad34d90da170167b440b2ffe7c9576b0167e2c6fea717940961f77cdb45eab82381da
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,13 @@
|
|
1
1
|
## [Unreleased]
|
2
2
|
|
3
|
+
## [1.2.0] - 2022-11-21
|
4
|
+
|
5
|
+
- Support `class_method`
|
6
|
+
|
7
|
+
## [1.1.1] - 2022-10-08
|
8
|
+
|
9
|
+
- Change owner method define from `self.calss.define_method` to `self.define_singleton_method`
|
10
|
+
|
3
11
|
## [1.1.0] - 2022-10-08
|
4
12
|
|
5
13
|
- Support `module_function`
|
data/README.md
CHANGED
@@ -108,6 +108,27 @@ Say.hi('John')
|
|
108
108
|
# => "Hi, John"
|
109
109
|
```
|
110
110
|
|
111
|
+
### Work as a class method
|
112
|
+
|
113
|
+
```ruby
|
114
|
+
class BuildARobot < ActiveMethod::Base
|
115
|
+
argument :name
|
116
|
+
|
117
|
+
def call
|
118
|
+
"#{robot_factory} build a robot called #{name}"
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
class RobotFactory
|
123
|
+
include ActiveMethod
|
124
|
+
|
125
|
+
active_method :build_a_robot, class_method: true
|
126
|
+
end
|
127
|
+
|
128
|
+
RobotFactory.build_a_robot
|
129
|
+
# => "RobotFactory build a robot called B-2"
|
130
|
+
```
|
131
|
+
|
111
132
|
## Development
|
112
133
|
|
113
134
|
```bash
|
data/lib/active_method/base.rb
CHANGED
@@ -104,8 +104,9 @@ module ActiveMethod
|
|
104
104
|
def __set_owner(owner)
|
105
105
|
@__method_owner = owner
|
106
106
|
|
107
|
-
|
108
|
-
|
107
|
+
klass = owner.is_a?(Class) ? owner : owner.class
|
108
|
+
instance_name = Util.snake_case(klass.name.split("::").last)
|
109
|
+
self.define_singleton_method instance_name do
|
109
110
|
@__method_owner
|
110
111
|
end
|
111
112
|
end
|
data/lib/active_method.rb
CHANGED
@@ -15,13 +15,21 @@ module ActiveMethod
|
|
15
15
|
def active_method(name, method_class = nil, **options)
|
16
16
|
method_class ||= Util.constantize self, Util.camel_case(name)
|
17
17
|
|
18
|
-
|
19
|
-
|
20
|
-
|
18
|
+
if options[:class_method]
|
19
|
+
define_singleton_method name do |*args|
|
20
|
+
method_class[self].call(*args)
|
21
|
+
end
|
22
|
+
|
23
|
+
else
|
24
|
+
define_method name do |*args|
|
25
|
+
method_class[self].call(*args)
|
26
|
+
end
|
21
27
|
|
22
|
-
|
23
|
-
|
28
|
+
if options[:module_function]
|
29
|
+
module_function name
|
30
|
+
end
|
24
31
|
end
|
32
|
+
|
25
33
|
end
|
26
34
|
end
|
27
35
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_method
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hopper Gee
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-11-21 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Refactor your obscure method to a method object
|
14
14
|
email:
|