module ActiveAdmin::OptionalDisplay

def display_on?(action, render_context = nil)

def display_on?(action, render_context = nil)
  return false if @options[:only] && !@options[:only].include?(action.to_sym)
  return false if @options[:except] && @options[:except].include?(action.to_sym)
  if @options[:if]
    symbol_or_proc = @options[:if]
    return case symbol_or_proc
    when Symbol, String
      render_context ? render_context.send(symbol_or_proc) : self.send(symbol_or_proc)
    when Proc
        render_context ? render_context.instance_exec(&symbol_or_proc) : instance_exec(&symbol_or_proc)
    else symbol_or_proc
    end
  end
  true
end

def normalize_display_options!

def normalize_display_options!
  if @options[:only]
    @options[:only] = @options[:only].is_a?(Array) ? @options[:only] : [@options[:only]]
  end
  if @options[:except]
    @options[:except] = @options[:except].is_a?(Array) ? @options[:except] : [@options[:except]]
  end
end