cases 1.0.0 → 1.0.1
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/README.md +4 -4
- data/lib/cases/case.rb +4 -4
- data/lib/cases/caseable.rb +19 -20
- data/lib/cases/version.rb +1 -1
- data/lib/cases.rb +16 -20
- 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: adf9c289386b87ace3d0f17b7eebc933cbccfbf1
|
4
|
+
data.tar.gz: cbcc803fb733d19c427d7d2d988ad03bb6dbf762
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 77a44291c3382c283e21771ef13b960c88e3af55b3a45d68081b947b65f8648a112973d4681e3066c9c3516f1df5e00e3f8d25d3c4f7961b19f394f2272b41ed
|
7
|
+
data.tar.gz: 3df9092cde054df3786bc60db2d2f3b473759da2b979829806245fe0c38b6582ff5f199d0a7e654c5b3ed5477beef35e4e92d1cb355532f753945d5cc9da4855
|
data/README.md
CHANGED
@@ -88,8 +88,8 @@ end
|
|
88
88
|
> test_case.test_without_block
|
89
89
|
=> "success message from cased object"
|
90
90
|
> test_case.test_caseable do |on|
|
91
|
-
on.success? { |response| "#{response.success_message} through caseable"
|
92
|
-
on.failed? { |response| "#{response.failed_message} through caseable"
|
91
|
+
on.success? { |response| "#{response.success_message} through caseable" }
|
92
|
+
on.failed? { |response| "#{response.failed_message} through caseable" }
|
93
93
|
end
|
94
94
|
=> "success message from test response through caseable"
|
95
95
|
>
|
@@ -101,8 +101,8 @@ end
|
|
101
101
|
> test_case.test_without_block
|
102
102
|
=> "failed message from cased object"
|
103
103
|
> test_case.test_caseable do |on|
|
104
|
-
on.success? { |response| "#{response.success_message} through caseable"
|
105
|
-
on.failed? { |response| "#{response.failed_message} through caseable"
|
104
|
+
on.success? { |response| "#{response.success_message} through caseable" }
|
105
|
+
on.failed? { |response| "#{response.failed_message} through caseable" }
|
106
106
|
end
|
107
107
|
=> "failed message from test response through caseable"
|
108
108
|
```
|
data/lib/cases/case.rb
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
module Cases
|
2
2
|
class Case
|
3
3
|
attr_accessor :result
|
4
|
-
attr_reader :method, :event, :options, :
|
4
|
+
attr_reader :method, :event, :options, :action_block
|
5
5
|
|
6
6
|
def self.all
|
7
7
|
@_all ||= {}
|
8
8
|
end
|
9
9
|
|
10
|
-
def initialize(method, event, options = {}, &
|
10
|
+
def initialize(method, event, options = {}, &action_block)
|
11
11
|
@method = method
|
12
12
|
@event = event
|
13
|
-
@block = block
|
14
13
|
@options = options
|
14
|
+
@action_block = action_block
|
15
15
|
|
16
16
|
register
|
17
17
|
end
|
@@ -24,7 +24,7 @@ module Cases
|
|
24
24
|
def execute(object, result)
|
25
25
|
return if !result.send(event)
|
26
26
|
|
27
|
-
self.result =
|
27
|
+
self.result = action_block.call(options[:on_self] ? object : result)
|
28
28
|
end
|
29
29
|
|
30
30
|
private
|
data/lib/cases/caseable.rb
CHANGED
@@ -1,27 +1,26 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
module Cases
|
2
|
+
class Caseable
|
3
|
+
attr_reader :object, :runtime_block
|
3
4
|
|
4
|
-
|
5
|
-
|
6
|
-
|
5
|
+
def initialize(object, &runtime_block)
|
6
|
+
@object = object
|
7
|
+
@runtime_block = runtime_block
|
8
|
+
end
|
7
9
|
|
8
|
-
|
9
|
-
|
10
|
-
|
10
|
+
def execute
|
11
|
+
runtime_block.call(self)
|
12
|
+
case_blocks.reduce(object) { |result, case_block| case_block.call(result) }
|
13
|
+
end
|
11
14
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
def method_missing(method, &block)
|
18
|
-
case_blocks << block if object.send(method)
|
19
|
-
case_blocks
|
20
|
-
end
|
15
|
+
def method_missing(method, &case_block)
|
16
|
+
case_blocks << case_block if object.send(method)
|
17
|
+
case_blocks
|
18
|
+
end
|
21
19
|
|
22
|
-
|
20
|
+
private
|
23
21
|
|
24
|
-
|
25
|
-
|
22
|
+
def case_blocks
|
23
|
+
@_case_blocks ||= []
|
24
|
+
end
|
26
25
|
end
|
27
26
|
end
|
data/lib/cases/version.rb
CHANGED
data/lib/cases.rb
CHANGED
@@ -10,38 +10,34 @@ module Cases
|
|
10
10
|
end
|
11
11
|
|
12
12
|
module ClassMethods
|
13
|
-
def define_case(method,
|
14
|
-
|
15
|
-
define_case_with_block(method, cases, &Proc.new)
|
16
|
-
else
|
17
|
-
cases.each_pair do |event, action|
|
18
|
-
Case.new(method, event, { on_self: true }, &Proc.new { |object| object.send(action) })
|
19
|
-
end
|
20
|
-
end
|
13
|
+
def define_case(method, kase)
|
14
|
+
block_given? ? __cases_define_with_block(method, kase, &Proc.new) : __cases_define_without_block(method, kase)
|
21
15
|
|
22
|
-
|
16
|
+
__cases_define_execute_cases(method)
|
23
17
|
end
|
24
18
|
|
25
19
|
def define_caseable(method)
|
26
|
-
proxy_result(method) { |result, &
|
27
|
-
end
|
28
|
-
|
29
|
-
def cases
|
30
|
-
Case.all
|
20
|
+
proxy_result(method) { |result, &runtime_block| Cases::Caseable.new(result, &runtime_block).execute }
|
31
21
|
end
|
32
22
|
|
33
23
|
private
|
34
24
|
|
35
|
-
def
|
36
|
-
Case.new(method, event, &
|
25
|
+
def __cases_define_with_block(method, *events, &action_block)
|
26
|
+
events.each { |event| Cases::Case.new(method, event, &action_block) }
|
27
|
+
end
|
28
|
+
|
29
|
+
def __cases_define_without_block(method, kase)
|
30
|
+
kase.each_pair do |event, action|
|
31
|
+
Cases::Case.new(method, event, { on_self: true }, &Proc.new { |object| object.send(action) })
|
32
|
+
end
|
37
33
|
end
|
38
34
|
|
39
|
-
def
|
40
|
-
define_method "
|
41
|
-
|
35
|
+
def __cases_define_execute_cases(method)
|
36
|
+
define_method "__cases_execute_#{method}_cases" do |&block|
|
37
|
+
Cases::Case.all[method].find { |kase| kase.execute(self, block.call) }.result
|
42
38
|
end
|
43
39
|
|
44
|
-
around_method(method, "
|
40
|
+
around_method(method, "__cases_execute_#{method}_cases")
|
45
41
|
end
|
46
42
|
end
|
47
43
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cases
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Morgan Showman
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-06-
|
11
|
+
date: 2014-06-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
version_requirements: !ruby/object:Gem::Requirement
|