method_struct 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bf459f6ff17c9357b93c8f2fd12103553754c5a9
4
- data.tar.gz: 074b41ab7bcb1d0daa48d58d7d221f695d9d306e
3
+ metadata.gz: 9f926384e2779bb5c2bd6859965c9438f59bc115
4
+ data.tar.gz: 246a7bc57b4a1abeef37da3f806a6d004d797a09
5
5
  SHA512:
6
- metadata.gz: 4bcf42d73fc1c079f13b6ed44e881c6d03d54f4d34ff270da2959c6a9498614e86520dc2a87ea3dd48d283ab9b5061c47d2e4d5a9333ab72393e371a87c49d7f
7
- data.tar.gz: 3dfc15a76521de4d6417d9c9510edcd369fc77c3e9f59ebe7fe7b18f8de441cc0aa1e60ceefbff5190f735b8360d5d1025457494f0d166331ab2977fdbe740b8
6
+ metadata.gz: da994bde0ba1d141d94c0d4adc14bc205f8ef3d0ada6e0d98c6ca96796be733da66b954eb3ae9254c7591e4c21ba576118f314d58db6c8e2922ac080a710271a
7
+ data.tar.gz: 2f02d119ea328144bdb26a664775a27edcffafef83109af3e902aa7cc7ce29ed99f052353d1cecdc4aa8b003bec416b229c9b1a685ac1e68d3040a39f4c7d014
data/.travis.yml CHANGED
@@ -1,5 +1,6 @@
1
1
  language: ruby
2
2
  rvm:
3
+ - 2.1.1
3
4
  - 2.1.0
4
5
  - 2.0.0
5
6
  - 1.9.3
data/CHANGELOG CHANGED
@@ -1,3 +1,6 @@
1
+ 0.1.3
2
+ + Make it possible to call MethodStructs using [] like regular lambdas
3
+
1
4
  0.1.1
2
5
  + Implement #eql? in terms of #==
3
6
 
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
- 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
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
- class Registrator < MethodStruct.new(:email, :name)
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
- end
61
- end
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
- class Registrator < MethodStruct.new(:email, :name, :method_name => :register)
68
- def register
69
- # ...
70
- end
71
- end
72
-
73
- class UsersController
74
- def create
75
- Registrator.register(params[:email], params[:name])
76
- end
77
- end
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|
@@ -1,3 +1,3 @@
1
1
  module MethodStruct
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.3"
3
3
  end
@@ -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.2
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-14 00:00:00.000000000 Z
11
+ date: 2014-04-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler