module Dome::ControllerClassMethods
Public Instance Methods
exhibit(*names, by: nil)
click to toggle source
exhibit(:one) exhibit(:one, :two, by: SomeEx)
# File lib/dome/controller_class_methods.rb, line 69 def exhibit(*names, by: nil) names.each do |name| klass = by || begin class_name = "#{name.to_s.camelize}Exhibit" klass = class_name.safe_constantize klass || raise( Dome::ExhibitClassNotFound, "Exhibit class '#{class_name}' for '#{name}' not found." ) end define_method name do instance_variable_get("@dome_#{name}_exhibit") || begin exhibited = klass.new(instance_variable_get("@#{name}")) exhibited.instance_variable_set("@view_context", self) instance_variable_set("@dome_#{name}_exhibit", exhibited) end end _helpers.send :define_method, name do instance_variable_get("@dome_#{name}_exhibit") || begin exhibited = klass.new(instance_variable_get("@#{name}")) exhibited.instance_variable_set("@view_context", self) instance_variable_set("@dome_#{name}_exhibit", exhibited) end end end end
exhibit_enum(*names, by: nil)
click to toggle source
exhibit_enum
(:ones) exhibit_enum
(:ones, :twos, by: SomeEx)
# File lib/dome/controller_class_methods.rb, line 99 def exhibit_enum(*names, by: nil) names.each do |name| klass = by || begin class_name = "#{name.to_s.singularize.camelize}Exhibit" klass = class_name.safe_constantize klass || raise( Dome::ExhibitClassNotFound, "Exhibit class '#{class_name}' for '#{name}' not found." ) end define_method name do instance_variable_get("@dome_#{name}_exhibit") || begin enum = instance_variable_get("@#{name}").to_a.map do |x| exhibited = klass.new(x) exhibited.instance_variable_set("@view_context", self) exhibited end instance_variable_set("@dome_#{name}_exhibit", enum) end end _helpers.send :define_method, name do instance_variable_get("@dome_#{name}_exhibit") || begin enum = instance_variable_get("@#{name}").to_a.map do |x| exhibited = klass.new(x) exhibited.instance_variable_set("@view_context", self) exhibited end instance_variable_set("@dome_#{name}_exhibit", enum) end end end end
Also aliased as: exhibit_enums
present(pairs, *vals)
click to toggle source
present(pair: [:one, :two], …)
# File lib/dome/controller_class_methods.rb, line 39 def present(pairs, *vals) pairs.each do |name, var_names| class_name = "#{name.to_s.camelize}Presenter" klass = class_name.safe_constantize klass || raise( Dome::ExhibitClassNotFound, "Exhibit class '#{class_name}' for '#{name}' not found." ) define_method name do instance_variable_get("@dome_#{name}_presenter") || begin things = var_names.map { |x| instance_variable_get("@#{x}") } presented = klass.new(*things) presented.instance_variable_set("@view_context", self) instance_variable_set("@dome_#{name}_presenter", presented) end end _helpers.send :define_method, name do instance_variable_get("@dome_#{name}_presenter") || begin things = var_names.map { |x| instance_variable_get("@#{x}") } presented = klass.new(*things) presented.instance_variable_set("@view_context", self) instance_variable_set("@dome_#{name}_presenter", presented) end end end end
view_model(name, &block)
click to toggle source
TODO: view_models view_model
(:dashboard) { UnitDashboard.new(@meeting) }
# File lib/dome/controller_class_methods.rb, line 12 def view_model(name, &block) if block_given? define_method name do instance_variable_get("@#{name}") || begin view_model = self.instance_eval &block view_model.instance_variable_set("@view_context", self) instance_variable_set("@#{name}", view_model) end end _helpers.send :define_method, name do instance_variable_get("@#{name}") || begin view_model = self.instance_eval &block view_model.instance_variable_set("@view_context", self) instance_variable_set("@#{name}", view_model) end end else define_method name do instance_variable_get("@#{name}") end _helpers.send :define_method, name do instance_variable_get("@#{name}") end end end