Sha256: 3e3a291929e0909fcec5c3aa08b552cb609a6842d3a4ba15ca1a1be95f56ef67

Contents?: true

Size: 1.55 KB

Versions: 20

Compression:

Stored size: 1.55 KB

Contents

# This is the rendering context object you have access to in text processing...
class Comatose::ProcessingContext
  @@supported_methods = %w(page include)

  def initialize( page, locals={} )
    @locals = locals.stringify_keys if locals.respond_to? :stringify_keys
    @page = Comatose::PageWrapper.new(page, @locals)
  end

  def page
    @page
  end

  def include(path, locals={})
    begin
      page = ComatosePage.find_by_path(path)
      page.to_html( @locals.merge(locals) )
    rescue
      "<p>Page at <tt>#{path}</tt> could not be found.</p>"
    end
  end

  def find_by_path(path)
    begin
      page = ComatosePage.find_by_path(path)
      Comatose::PageWrapper.new(page, @locals)
    rescue
      "<p>Page at <tt>#{path}</tt> could not be found.</p>"
    end
  end

  def [](key)
    if key.to_s.downcase == 'page'
      @page
    elsif @locals.has_key? key
      @locals[key]
    elsif Comatose.registered_drops.has_key? key
      Comatose.registered_drops[key]
    end
  end

  def has_key?(key)
    @@supported_methods.include?(key) or @locals.has_key?(key) or Comatose.registered_drops.has_key?(key)
  end

  def to_liquid
    self
  end

  def get_binding
    binding
  end

  def method_missing(method_id, *args)
    method_name = method_id.to_s
    if @locals.has_key? method_name
      @locals[method_name]
    elsif Comatose.registered_drops.has_key? method_name
      Comatose.registered_drops[method_name].context = self
      Comatose.registered_drops[method_name]
    else
      "<!-- ProcessingContext: Couldn't find #{method_id} -->"
    end
  end

end



Version data entries

20 entries across 20 versions & 7 rubygems

Version Path
aslakjo-aslakjo-comatose-2.0.5.1 lib/comatose/processing_context.rb
aslakjo-comatose-2.0.5.2 lib/comatose/processing_context.rb
aslakjo-comatose-2.0.5.3 lib/comatose/processing_context.rb
darthapo-comatose-2.0.3 lib/comatose/processing_context.rb
darthapo-comatose-2.0.4 lib/comatose/processing_context.rb
darthapo-comatose-2.0.5 lib/comatose/processing_context.rb
darthapo-comatose-2.0 lib/comatose/processing_context.rb
jcnetdev-comatose-2.0.1 lib/comatose/processing_context.rb
staugaard-comatose-2.0.2 lib/comatose/processing_context.rb
staugaard-comatose-2.0.3 lib/comatose/processing_context.rb
comatose-2.0.5 lib/comatose/processing_context.rb
comatose-2.0.1 lib/comatose/processing_context.rb
aslakjo-comatose-2.0.5.12 lib/comatose/processing_context.rb
aslakjo-comatose-2.0.5.11 lib/comatose/processing_context.rb
aslakjo-comatose-2.0.5.10 lib/comatose/processing_context.rb
aslakjo-comatose-2.0.5.9 lib/comatose/processing_context.rb
aslakjo-comatose-2.0.5.8 lib/comatose/processing_context.rb
aslakjo-comatose-2.0.5.7 lib/comatose/processing_context.rb
merb_comatose-0.0.3 lib/comatose/processing_context.rb
merb_comatose-0.0.2 lib/comatose/processing_context.rb