revealer 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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: