method_struct 0.2.1 → 0.2.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: faab59cbf9a78b593cae7f255ae43932fa51d829
4
- data.tar.gz: bb14949700c7b102b51fafbef4f85c403b0cc8a9
3
+ metadata.gz: 8b7d88eb4418b8f3a8e945ed14ccefafe4a23ed9
4
+ data.tar.gz: b24fd08162d52e7757de9c87dce5c2934cf6bb4b
5
5
  SHA512:
6
- metadata.gz: fdf24cfa6f0b92286a1414328853ef3f54c2b991d788a306a0fb3b048ae1052d90e3cef2067eee77cebd97448879ee33137ffb0e4360ec44ed3b43bf1c02713d
7
- data.tar.gz: 4d14e2c96eca0876d166a0e1e16caab4d607c2ef8bd256c3a9feec30facac3d2d9d07f8114aab2ddc545875fce44c316af0597b018d724cd85d7b4dd8e0f3458
6
+ metadata.gz: abeed89c934277a4b031a7358bbb5c7540eb5d87132d41eeaadb97fd28551529a6e70f2e38ace31307e06998ddb5dc7b2135a29f07cd13f6373ec438e219cafe
7
+ data.tar.gz: 77d9249b48bdf297d8f72b79ffbcfa64e76e77a74c6d1511323fc5f97c0ce118119b6f8be1b2175456273e2d930424876fafb95398a7b1087a56a86b4a4ceb64
data/CHANGELOG CHANGED
@@ -1,3 +1,7 @@
1
+ 0.2.2
2
+ ~ A MethodStruct class now implements #to_proc and so can be passed as a block
3
+ argument
4
+
1
5
  0.2.1
2
6
  ~ Fixes in how argument verification deals with hashes
3
7
 
data/README.md CHANGED
@@ -36,7 +36,7 @@ end
36
36
  You can change it into this:
37
37
 
38
38
  ```ruby
39
- Registrator = MethodStruct.new(:email, :name) do
39
+ class Registrator < MethodStruct.new(:email, :name)
40
40
  def call
41
41
  create_user!
42
42
  send_email!
@@ -66,7 +66,7 @@ end
66
66
  You can also specify a different method name like so:
67
67
 
68
68
  ```ruby
69
- Registrator = MethodStruct.new(:email, :name, :method_name => :register) do
69
+ class Registrator < MethodStruct.new(:email, :name, :method_name => :register)
70
70
  def register
71
71
  # ...
72
72
  end
@@ -90,6 +90,19 @@ MethodStruct::Defaults.set(
90
90
  )
91
91
  ```
92
92
 
93
+ Method struct currently also supports a `do` syntax, but it is discouraged (and may get depracated)
94
+ due to odd constant scoping. Example:
95
+
96
+ ```ruby
97
+ Registrator = MethodStruct.new(:email, :name) do
98
+ REGISTRATION_PATH = "/register" # this is now a top-level constant
99
+
100
+ def call
101
+ ...
102
+ end
103
+ end
104
+ ```
105
+
93
106
  ## Contributing
94
107
 
95
108
  1. Fork it
@@ -32,6 +32,10 @@ module MethodStruct
32
32
  define_method(:[]) do |*args|
33
33
  send(method_name, *args)
34
34
  end
35
+
36
+ define_method(:to_proc) do
37
+ Proc.new { |*args| send(method_name, *args) }
38
+ end
35
39
  end
36
40
 
37
41
  define_method(:[]) do |&blk|
@@ -1,3 +1,3 @@
1
1
  module MethodStruct
2
- VERSION = "0.2.1"
2
+ VERSION = "0.2.2"
3
3
  end
@@ -20,5 +20,5 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.3"
22
22
  spec.add_development_dependency "rake"
23
- spec.add_development_dependency "rspec"
23
+ spec.add_development_dependency "rspec", "~> 2.14.1"
24
24
  end
@@ -176,6 +176,18 @@ describe MethodStruct do
176
176
  end
177
177
  end
178
178
 
179
+ describe "#to_proc" do
180
+ it "is possible to pass one as a block argument" do
181
+ struct = MethodStruct.new(:x) do
182
+ def call
183
+ x.odd?
184
+ end
185
+ end
186
+
187
+ expect([1, 2, 3].select(&struct)).to eq([1,3])
188
+ end
189
+ end
190
+
179
191
  context "when arguments are hashes" do
180
192
  let(:argument1) { { :things => true } }
181
193
  let(:argument2) { { :stuff => true } }
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.2.1
4
+ version: 0.2.2
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-05-23 00:00:00.000000000 Z
11
+ date: 2014-10-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -42,16 +42,16 @@ dependencies:
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: 2.14.1
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: 2.14.1
55
55
  description: Facilitates extracting methods into separate objects
56
56
  email:
57
57
  - pawel.obrok@gmail.com