revealer 0.0.1 → 0.0.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.
Files changed (3) hide show
  1. data/lib/revealer/version.rb +1 -1
  2. data/lib/revealer.rb +39 -33
  3. metadata +14 -13
@@ -1,3 +1,3 @@
1
1
  module Revealer
2
- VERSION = '0.0.1'
2
+ VERSION = '0.0.2'
3
3
  end
data/lib/revealer.rb CHANGED
@@ -6,52 +6,58 @@ require 'revealer/version'
6
6
 
7
7
  module Revealer
8
8
  extend ActiveSupport::Concern
9
-
9
+
10
10
  module ClassMethods
11
- def reveal(name, options = {}, &block)
12
- klass, decorator = options[:class], options[:decorator]
13
-
11
+
12
+ def decorate(reveal)
13
+ reveals = Array(reveal).map do |reveal|
14
+ "#{reveal.class.name}Decorator".constantize.new(reveal)
15
+ end
16
+
17
+ reveals.many? ? reveals : reveals.first
18
+ rescue NameError
19
+ reveal
20
+ end
21
+
22
+ def reveal(name, &block)
23
+ _name = "_#{name}"
24
+
14
25
  default_reveal = proc do |name|
15
- unless klass
16
- collection = name.to_s.pluralize
17
-
18
- if respond_to?(collection) && collection != name.to_s && send(collection).respond_to?(:scoped)
19
- klass = send(collection)
20
- else
21
- klass = name.to_s.classify.constantize
22
- end
23
- end
24
-
25
- reveal = if id = params[:"#{name}_id"] || params[:id]
26
- klass.find(id)
26
+ collection = name.to_s.pluralize
27
+
28
+ if respond_to?(collection) && collection != name.to_s && (collection = send(collection)).respond_to?(:scoped)
29
+ proxy = collection
27
30
  else
28
- klass.new
31
+ proxy = name.to_s.classify.constantize
29
32
  end
30
-
31
- reveal.attributes = params[name] unless request.get?
32
-
33
- reveal = case decorator
34
- when Class
35
- decorator.new(reveal)
36
- when true
37
- "#{reveal.class.name}Decorator".constantize.new(reveal)
33
+
34
+ if id = params[:"#{name}_id"] || params[:id]
35
+ proxy.find(id)
36
+ else
37
+ proxy.new
38
+ end.tap do |reveal|
39
+ reveal.attributes = params[name] unless request.get?
38
40
  end
39
-
40
- reveal
41
41
  end
42
-
42
+
43
43
  define_method(name) do
44
44
  @_reveals ||= {}
45
-
46
- @_reveals[name] ||= if block_given?
45
+ @_reveals[name] ||= self.class.decorate(send(_name))
46
+ end
47
+
48
+ define_method(_name) do
49
+ @_reveals ||= {}
50
+ @_reveals[_name] ||= if block_given?
47
51
  instance_eval(&block)
48
52
  else
49
53
  instance_exec(name, &default_reveal)
50
54
  end
51
55
  end
52
-
53
- hide_action(name)
56
+
54
57
  helper_method(name)
58
+ helper_method(_name)
59
+ hide_action(name)
60
+ hide_action(_name)
55
61
  end
56
62
  end
57
- end
63
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: revealer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-25 00:00:00.000000000Z
12
+ date: 2012-01-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: draper
16
- requirement: &70248559080680 !ruby/object:Gem::Requirement
16
+ requirement: &70200642086760 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70248559080680
24
+ version_requirements: *70200642086760
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: action_controller
27
- requirement: &70248559080260 !ruby/object:Gem::Requirement
27
+ requirement: &70200642107420 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70248559080260
35
+ version_requirements: *70200642107420
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: minitest
38
- requirement: &70248559079840 !ruby/object:Gem::Requirement
38
+ requirement: &70200642105020 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70248559079840
46
+ version_requirements: *70200642105020
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: purdytest
49
- requirement: &70248559079420 !ruby/object:Gem::Requirement
49
+ requirement: &70200642101480 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70248559079420
57
+ version_requirements: *70200642101480
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rake
60
- requirement: &70248559078960 !ruby/object:Gem::Requirement
60
+ requirement: &70200642119480 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70248559078960
68
+ version_requirements: *70200642119480
69
69
  description: The better decent_exposure.
70
70
  email: uher.mario@gmail.com
71
71
  executables: []
@@ -95,8 +95,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
95
95
  version: '0'
96
96
  requirements: []
97
97
  rubyforge_project:
98
- rubygems_version: 1.8.10
98
+ rubygems_version: 1.8.13
99
99
  signing_key:
100
100
  specification_version: 3
101
101
  summary: The better decent_exposure.
102
102
  test_files: []
103
+ has_rdoc: