module ContextExposer::BaseController::ClassMethods

Public Instance Methods

_exposure_storage() click to toggle source
# File lib/context_exposer/base_controller.rb, line 77
def _exposure_storage
  _exposure_hash[self.to_s] ||= {}
end
base_item_actions() click to toggle source
# File lib/context_exposer/base_controller.rb, line 44
def base_item_actions
  [:show, :new, :edit]
end
base_list_actions() click to toggle source
# File lib/context_exposer/base_controller.rb, line 40
def base_list_actions
  [:index]
end
context_expose(name, options = {}) click to toggle source
# File lib/context_exposer/base_controller.rb, line 71
def context_expose name, options = {}
  meth_name = "context_expose_#{name}"
  raise ArgumentError, "No such method #{meth_name}" unless respond_to? meth_name
  send meth_name, options
end
expose_cached(name, options = {}) click to toggle source
# File lib/context_exposer/base_controller.rb, line 30
def expose_cached name, options = {}, &block
  exposed name, options.merge(cached: true), &block
end
exposed(name, options = {}) click to toggle source
# File lib/context_exposer/base_controller.rb, line 26
def exposed name, options = {}, &block
  _exposure_storage[name.to_sym] = {options: options, proc: block}
end
integrate_with(*names) click to toggle source
# File lib/context_exposer/base_controller.rb, line 64
def integrate_with *names
  names.flatten.compact.each do |name|
    self.send :include, "ContextExposer::Integrations::With#{name.to_s.camelize}".constantize
  end
end
Also aliased as: integrates_with
integrates_with(*names)
Alias for: integrate_with
item_actions(*names) click to toggle source
# File lib/context_exposer/base_controller.rb, line 56
def item_actions *names
  return if names.blank?
  names = names.flatten.map(&:to_sym)
  (class << self; end).define_method :item_actions do
    names | base_item_actions
  end
end
list_actions(*names) click to toggle source
# File lib/context_exposer/base_controller.rb, line 48
def list_actions *names
  return if names.blank?
  names = names.flatten.map(&:to_sym)
  (class << self; end).define_method :list_actions do
    names | base_list_actions
  end
end
normalized_resource_name() click to toggle source
# File lib/context_exposer/base_controller.rb, line 22
def normalized_resource_name
  self.to_s.demodulize.sub(/Controller$/, '').underscore.singularize
end
view_ctx_class(name) click to toggle source
# File lib/context_exposer/base_controller.rb, line 34
def view_ctx_class name
  define_method :view_ctx_class do
    @view_ctx_class ||= name.kind_of?(Class) ? name : name.to_s.camelize.constantize
  end
end

Protected Instance Methods

_exposure_hash() click to toggle source
# File lib/context_exposer/base_controller.rb, line 101
def _exposure_hash
  @_exposure_hash ||= {}
end
expose_context(name) click to toggle source
# File lib/context_exposer/base_controller.rb, line 83
def expose_context name
  return if exposed_view_context?

  if ActionController::Base.instance_methods.include?(name.to_sym)
    Kernel.warn "[WARNING] You are exposing the `#{name}` method, " \
      "which overrides an existing ActionController method of the same name. " \
      "Consider a different exposure name\n" \
      "#{caller.first}"
  end    
  helper_method name
  hide_action name
  @_exposed_view_context = true
end
exposed_view_context?() click to toggle source
# File lib/context_exposer/base_controller.rb, line 97
def exposed_view_context?
  @_exposed_view_context == true
end