Sha256: 954ec0f94786004646f2d10b4913a26761ab24ff66c61096e5a4a770ac30c8a1

Contents?: true

Size: 1.28 KB

Versions: 8

Compression:

Stored size: 1.28 KB

Contents

module Hyalite::DOM
  module Node

    def self.create(node)
      @classes ||= [nil, Element, nil, Text, nil, nil, nil, nil, nil, Document, nil, nil]

      if klass = @classes[`node.nodeType`]
        klass.new(node)
      else
        raise ArgumentError, 'cannot instantiate a non derived Node object'
      end
    end

    def document?
      false
    end

    def element?
      false
    end

    def text?
      false
    end

    def node_name
      `self.native.tagName`
    end

    def <<(child)
      `self.native.appendChild(child.native)`
    end

    def clear
      %x(
        var len = self.native.childNodes.length;
        for (var i = 0; i < len; i++) {
          self.native.childNodes[0].remove();
        }
      )
    end

    def parent
      if parent = `self.native.parentNode`
        Node.create(parent)
      end
    end

    def children
      Collection.new `self.native.childNodes`
    end

    def remove
      `self.native.remove()`
    end

    def next_sibling
      sib = `self.native.nextSibling`
      Node.create(sib) if sib
    end

    def on(name, &block)
      callback = Proc.new{|event| block.call(Event.create(event))}
      `self.native.addEventListener(name, callback)`
    end

    def ==(other)
      `self.native === other.native`
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
hyalite-0.2.5 lib/hyalite/dom/node.rb
hyalite-0.2.4 lib/hyalite/dom/node.rb
hyalite-0.2.3 lib/hyalite/dom/node.rb
hyalite-0.2.2 lib/hyalite/dom/node.rb
hyalite-0.2.1 lib/hyalite/dom/node.rb
hyalite-0.2.0 lib/hyalite/dom/node.rb
hyalite-0.1.1 client/hyalite/dom/node.rb
hyalite-0.1.0 client/hyalite/dom/node.rb