module Snippr::ViewHelper

Public Instance Methods

snippr(*args) { |content| ... } click to toggle source

Returns a snippr specified via args.

# File lib/snippr/view_helper.rb, line 16
def snippr(*args)
  snip = Snip.new *add_view_to_snippr_args(args)
  content = snip.content.html_safe

  if block_given?
    if snip.missing? || snip.blank?
      concat content
    elsif content.strip.present?
      yield content
    end
    0
  else
    extend_snip_content(content, snip)
  end
end
snippr_with_path(*args, &block) click to toggle source
# File lib/snippr/view_helper.rb, line 32
def snippr_with_path(*args, &block)
  path = if controller_name == "pages"
    params[:id].split('/')
  else
    [controller_name, params[:action]]
  end.compact.map { |e| e.to_s.camelize(:lower).to_sym }
  snippr(*(path + args), &block)
end

Private Instance Methods

add_view_to_snippr_args(args) click to toggle source
# File lib/snippr/view_helper.rb, line 43
def add_view_to_snippr_args(args)
  variables = args.last.kind_of?(Hash) ? args.pop : {}
  variables[:view] = self
  args << variables
  args
end
extend_snip_content(content, snip) click to toggle source
# File lib/snippr/view_helper.rb, line 50
def extend_snip_content(content, snip)
  content.class_eval %(
    def missing?
      #{snip.missing?}
    end
    def exists?
      #{!snip.missing?}
    end
    def meta(key = nil)
      meta = #{snip.meta.inspect}
      key ? meta[key] : meta
    end
  )
  content
end