method_struct 0.1.2 → 0.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.
- checksums.yaml +4 -4
- data/.travis.yml +1 -0
- data/CHANGELOG +3 -0
- data/README.md +42 -40
- data/lib/method_struct.rb +5 -0
- data/lib/method_struct/version.rb +1 -1
- data/spec/method_struct_spec.rb +10 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9f926384e2779bb5c2bd6859965c9438f59bc115
|
4
|
+
data.tar.gz: 246a7bc57b4a1abeef37da3f806a6d004d797a09
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: da994bde0ba1d141d94c0d4adc14bc205f8ef3d0ada6e0d98c6ca96796be733da66b954eb3ae9254c7591e4c21ba576118f314d58db6c8e2922ac080a710271a
|
7
|
+
data.tar.gz: 2f02d119ea328144bdb26a664775a27edcffafef83109af3e902aa7cc7ce29ed99f052353d1cecdc4aa8b003bec416b229c9b1a685ac1e68d3040a39f4c7d014
|
data/.travis.yml
CHANGED
data/CHANGELOG
CHANGED
data/README.md
CHANGED
@@ -25,56 +25,58 @@ Or install it yourself as:
|
|
25
25
|
Say you have this:
|
26
26
|
|
27
27
|
```ruby
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
28
|
+
class UsersController
|
29
|
+
def create
|
30
|
+
User.create(:email => params[:email], :name => params[:name])
|
31
|
+
Mailer.registration_email(params[:email]).deliver
|
32
|
+
end
|
33
|
+
end
|
34
34
|
```
|
35
35
|
|
36
36
|
You can change it into this:
|
37
37
|
|
38
38
|
```ruby
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
39
|
+
Registrator = MethodStruct.new(:email, :name) do
|
40
|
+
def call
|
41
|
+
create_user!
|
42
|
+
send_email!
|
43
|
+
end
|
44
|
+
|
45
|
+
private
|
46
|
+
def create_user!
|
47
|
+
User.create(:email => email, :name => name)
|
48
|
+
end
|
49
|
+
|
50
|
+
def send_email!
|
51
|
+
Mailer.registration_email(:email).deliver
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
class UsersController
|
56
|
+
def create
|
57
|
+
Registrator.call(params[:email], params[:name])
|
58
|
+
# Or
|
59
|
+
Registrator.call(:email => params[:email], :name => params[:name])
|
60
|
+
# Or - thanks to ruby changing [] into .call
|
61
|
+
Registrator[params[:email], params[:name]]
|
62
|
+
end
|
63
|
+
end
|
62
64
|
```
|
63
65
|
|
64
66
|
You can also specify a different method name like so:
|
65
67
|
|
66
68
|
```ruby
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
69
|
+
Registrator = MethodStruct.new(:email, :name, :method_name => :register) do
|
70
|
+
def register
|
71
|
+
# ...
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
class UsersController
|
76
|
+
def create
|
77
|
+
Registrator.register(params[:email], params[:name])
|
78
|
+
end
|
79
|
+
end
|
78
80
|
```
|
79
81
|
|
80
82
|
One hopes the benefits will be more obvious for more complex methods
|
data/lib/method_struct.rb
CHANGED
@@ -16,6 +16,11 @@ module MethodStruct
|
|
16
16
|
define_method(method_name) do |*field_values|
|
17
17
|
new(*field_values).send(method_name)
|
18
18
|
end
|
19
|
+
alias_method :[], method_name
|
20
|
+
end
|
21
|
+
|
22
|
+
define_method(:[]) do
|
23
|
+
send(method_name)
|
19
24
|
end
|
20
25
|
|
21
26
|
define_method(:initialize) do |*values|
|
data/spec/method_struct_spec.rb
CHANGED
@@ -26,6 +26,16 @@ describe MethodStruct do
|
|
26
26
|
create_poker(verifier).call(:x => argument1, :y => argument2)
|
27
27
|
end
|
28
28
|
|
29
|
+
it "creates a [] version of the call method" do
|
30
|
+
verifier.should_receive(:poke).with(argument1, argument2)
|
31
|
+
create_poker(verifier)[:x => argument1, :y => argument2]
|
32
|
+
end
|
33
|
+
|
34
|
+
it "creates a [] instance version of the call method" do
|
35
|
+
verifier.should_receive(:poke).with(argument1, argument2)
|
36
|
+
create_poker(verifier).new(:x => argument1, :y => argument2)[]
|
37
|
+
end
|
38
|
+
|
29
39
|
it "can change the name of the main method" do
|
30
40
|
verifier.should_receive(:poke).with(argument1, argument2)
|
31
41
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: method_struct
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Paweł Obrok
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-04-
|
11
|
+
date: 2014-04-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|