class ActiveAdmin::AbstractViewFactory

Public Class Methods

new() click to toggle source
# File lib/active_admin/abstract_view_factory.rb, line 11
def initialize
  @views = {}
end
register(view_hash) click to toggle source
# File lib/active_admin/abstract_view_factory.rb, line 5
def self.register(view_hash)
  view_hash.each do |view_key, view_class|
    @@default_views[view_key] = view_class
  end
end

Public Instance Methods

[](key) click to toggle source
# File lib/active_admin/abstract_view_factory.rb, line 41
def [](key)
  get_view_for_key(key)
end
[]=(key, value) click to toggle source
# File lib/active_admin/abstract_view_factory.rb, line 45
def []=(key, value)
  set_view_for_key(key, value)
end
default_for(key) click to toggle source
# File lib/active_admin/abstract_view_factory.rb, line 33
def default_for(key)
  @@default_views[key.to_sym]
end
has_key?(key) click to toggle source
# File lib/active_admin/abstract_view_factory.rb, line 37
def has_key?(key)
  @views.has_key?(key.to_sym) || @@default_views.has_key?(key.to_sym)
end
register(view_hash) click to toggle source

Register a new view key with the view factory

eg:

factory = AbstractViewFactory.new
factory.register :my_view => SomeViewClass

You can setup many at the same time:

factory.register  :my_view => SomeClass,
                  :another_view => OtherViewClass
# File lib/active_admin/abstract_view_factory.rb, line 27
def register(view_hash)
  view_hash.each do |view_key, view_class|
    @views[view_key] = view_class
  end
end
respond_to?(method) click to toggle source

Override respond to to include keys

Calls superclass method
# File lib/active_admin/abstract_view_factory.rb, line 50
def respond_to?(method)
  key = key_from_method_name(method)
  if has_key?(key)
    true
  else
    super
  end
end

Private Instance Methods

get_view_for_key(key) click to toggle source
# File lib/active_admin/abstract_view_factory.rb, line 87
def get_view_for_key(key)
  @views[key.to_sym] || @@default_views[key.to_sym]
end
key_from_method_name(method) click to toggle source
# File lib/active_admin/abstract_view_factory.rb, line 83
def key_from_method_name(method)
  method.to_s.gsub('=', '').to_sym
end
method_missing(method, *args) click to toggle source
Calls superclass method
# File lib/active_admin/abstract_view_factory.rb, line 61
    def method_missing(method, *args)
      key = key_from_method_name(method)
      if has_key?(key)
        if method.to_s.include?('=')
          self.class_eval <<-EOS
            def #{key}=(value)
              set_view_for_key(:#{key}, value)
            end
          EOS
        else
          self.class_eval <<-EOS
            def #{key}
              get_view_for_key(:#{key})
            end
          EOS
        end
        self.send(method, *args)
      else
        super
      end
    end
set_view_for_key(key, view) click to toggle source
# File lib/active_admin/abstract_view_factory.rb, line 91
def set_view_for_key(key, view)
  @views[key.to_sym] = view
end