Sha256: 4e7f3141276cf2ad53bd2f1b692d9e9b9f7922b8b063fd97ed965f659712cb89

Contents?: true

Size: 1.25 KB

Versions: 2

Compression:

Stored size: 1.25 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.
module Volt
  class BaseBinding
    attr_accessor :target, :context, :binding_name, :volt_app

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

      @@binding_number ||= 10_000
    end

    def page
      @volt_app.page
    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
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
volt-0.9.3.pre3 lib/volt/page/bindings/base_binding.rb
volt-0.9.3.pre2 lib/volt/page/bindings/base_binding.rb