module Card::Set::Format::AbstractFormat::ViewDefinition

handles definition of view methods

Private Instance Methods

alias_view_block(view, alias_to, mod=nil) click to toggle source
# File lib/card/set/format/abstract_format/view_definition.rb, line 53
def alias_view_block view, alias_to, mod=nil
  mod ||= self
  if block_given?
    raise Card::Error::ServerError, "no blocks allowed in aliased views"
  end

  views[mod][alias_to] || begin
    raise "cannot find #{alias_to} view in #{mod}; " \
            "failed to alias #{view} from #{self}"
  end
end
define_async_view_method(view, &block) click to toggle source
# File lib/card/set/format/abstract_format/view_definition.rb, line 23
def define_async_view_method view, &block
  # This case makes only sense for HtmlFormat
  # but I don't see an easy way to override class methods for a specific
  # format. All formats are extended with this general module. So
  # a HtmlFormat.view method would be overridden by AbstractFormat.view
  # We need something like AbstractHtmlFormat for that.

  view_content = "#{view}_async_content"
  define_standard_view_method view_content, &block
  define_standard_view_method view do
    %(<card-view-placeholder data-url="#{path view: view_content}" />)
  end
end
define_standard_view_method(view, &block) click to toggle source
# File lib/card/set/format/abstract_format/view_definition.rb, line 18
def define_standard_view_method view, &block
  views[self][view] = block
  define_method Card::Set::Format.view_method_name(view), &block
end
define_view_method(view, def_opts, &block) click to toggle source
# File lib/card/set/format/abstract_format/view_definition.rb, line 12
def define_view_method view, def_opts, &block
  view_block = view_block view, def_opts, &block
  view_type = def_opts[:async] ? :async : :standard
  send "define_#{view_type}_view_method", view, &view_block
end
template_view_block(view, template, &block) click to toggle source
# File lib/card/set/format/abstract_format/view_definition.rb, line 47
def template_view_block view, template, &block
  return haml_view_block(view, &block) if template == :haml

  raise Card::Error::ServerError, "unknown view template: #{template}"
end
view_block(view, def_opts, &block) click to toggle source
# File lib/card/set/format/abstract_format/view_definition.rb, line 37
def view_block view, def_opts, &block
  if (template = def_opts[:template])
    template_view_block view, template, &block
  elsif (alias_to = def_opts[:alias_to])
    alias_view_block view, alias_to, def_opts[:mod], &block
  else
    block
  end
end