Sha256: 182ff0d861c759335812c11600025721cdfed54f8e50d12799311a50226981ae

Contents?: true

Size: 1.36 KB

Versions: 10

Compression:

Stored size: 1.36 KB

Contents

# The BaseBinding class is the base for all bindings.  It takes
# 4 arguments that should be passed up from the children (via super)
#
# 1. page - this class instance should provide:
#            - a #templates methods that returns a hash for templates
#            - an #events methods that returns an instance of DocumentEvents
# 2. target -  an DomTarget or AttributeTarget
# 3. context - the context object the binding will be evaluated in
# 4. binding_name - the id for the comment (or id for attributes) where the
#                   binding will be inserted.
class BaseBinding
  attr_accessor :target, :context, :binding_name

  def initialize(page, target, context, binding_name)
    @page = page
    @target = target
    @context = context
    @binding_name = binding_name

    @@binding_number ||= 10000
  end

  def dom_section
    @dom_section ||= target.dom_section(@binding_name)
  end

  def remove
    @dom_section.remove if @dom_section

    # Clear any references
    @target = nil
    @context = nil
    @dom_section = nil
  end

  def remove_anchors
    @dom_section.remove_anchors if @dom_section
  end

  def queue_update
    if Volt.server?
      # Run right away
      update
    else
      @page.draw_cycle.queue(self)
    end
  end

  def value_from_getter(getter)
    # Evaluate the getter proc in the context
    return @context.instance_eval(&getter)
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
volt-0.7.23 lib/volt/page/bindings/base_binding.rb
volt-0.7.22 lib/volt/page/bindings/base_binding.rb
volt-0.7.21 lib/volt/page/bindings/base_binding.rb
volt-0.7.20 lib/volt/page/bindings/base_binding.rb
volt-0.7.19 lib/volt/page/bindings/base_binding.rb
volt-0.7.18 lib/volt/page/bindings/base_binding.rb
volt-0.7.17 lib/volt/page/bindings/base_binding.rb
volt-0.7.16 lib/volt/page/bindings/base_binding.rb
volt-0.7.15 lib/volt/page/bindings/base_binding.rb
volt-0.7.14 lib/volt/page/bindings/base_binding.rb