8000 Merge pull request #5146 from varyonic/feature/abstract-view-factory · stephancom/activeadmin@0df2df0 · GitHub
[go: up one dir, main page]

Skip to content

Commit 0df2df0

Browse files
authored
Merge pull request activeadmin#5146 from varyonic/feature/abstract-view-factory
Derive AbstractViewFactory from SettingsNode.
2 parents 8ae0ae4 + dbe65a7 commit 0df2df0

File tree

1 file changed

+6
-53
lines changed

1 file changed

+6
-53
lines changed
Lines changed: 6 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,12 @@
11
module ActiveAdmin
2-
class AbstractViewFactory
3-
@@default_views = {}
2+
class AbstractViewFactory < SettingsNode
43

54
def self.register(view_hash)
65
view_hash.each do |view_key, view_class|
7-
@@default_views[view_key] = view_class
6+
super view_key, view_class
87
end
98
end
109

11-
def initialize
12-
@views = {}
13-
end
14-
1510
# Register a new view key with the view factory
1611
#
1712
# eg:
@@ -25,61 +20,19 @@ def initialize
2520
# another_view: OtherViewClass
2621
#
2722
def register(view_hash)
28-
view_hash.each do |view_key, view_class|
29-
@views[view_key] = view_class
30-
end
23+
self.class.register view_hash
3124
end
3225

3326
def default_for(key)
34-
@@default_views[key.to_sym]
35-
end
36-
37-
def has_key?(key)
38-
@views.has_key?(key.to_sym) || @@default_views.has_key?(key.to_sym)
27+
self.class.send key
3928
end
4029

4130
def [](key)
42-
get_view_for_key(key)
31+
send key
4332
end
4433

4534
def []=(key, value)
46-
set_view_for_key(key, value)
47-
end
48-
49-
def respond_to_missing?(method, include_private)
50-
key = key_from_method_name(method)
51-
if has_key?(key)
52-
true
53-
else
54-
super
55-
end
56-
end
57-
58-
private
59-
60-
def method_missing(method, *args)
61-
key = key_from_method_name(method)
62-
if has_key?(key)
63-
if method.to_s.include?('=')
64-
set_view_for_key key, args.first
65-
else
66-
get_view_for_key key
67-
end
68-
else
69-
super
70-
end
71-
end
72-
73-
def key_from_method_name(method)
74-
method.to_s.tr('=', '').to_sym
75-
end
76-
77-
def get_view_for_key(key)
78-
@views[key.to_sym] || @@default_views[key.to_sym]
79-
end
80-
81-
def set_view_for_key(key, view)
82-
@views[key.to_sym] = view
35+
send "#{key}=", value
8336
end
8437
end
8538
end

0 commit comments

Comments
 (0)
0