1
1
module ActiveAdmin
2
- class AbstractViewFactory
3
- @@default_views = { }
2
+ class AbstractViewFactory < SettingsNode
4
3
5
4
def self . register ( view_hash )
6
5
view_hash . each do |view_key , view_class |
7
- @@default_views [ view_key ] = view_class
6
+ super view_key , view_class
8
7
end
9
8
end
10
9
11
- def initialize
12
- @views = { }
13
- end
14
-
15
10
# Register a new view key with the view factory
16
11
#
17
12
# eg:
@@ -25,61 +20,19 @@ def initialize
25
20
# another_view: OtherViewClass
26
21
#
27
22
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
31
24
end
32
25
33
26
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
39
28
end
40
29
41
30
def []( key )
42
- get_view_for_key ( key )
31
+ send key
43
32
end
44
33
45
34
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
83
36
end
84
37
end
85
38
end
0 commit comments