for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
module Hyalite::DOM
class Document
include Native
include Node
def create_element(tag)
Element.new `self.native.createElement(tag)`
end
def create_text(text)
Text.new `self.native.createTextNode(text)`
def body
Body.new `self.native.body`
def ready(&block)
`self.native.addEventListener('DOMContentLoaded', block)`
def self.singleton
@singleton ||= self.new(`window.document`)
def document?
true
def [](q)
elements = []
%x(
var nodeList = self.native.querySelectorAll(#{q});
for (var i = 0; i < nodeList.length; i++) {
elements.$push(nodeList.item(i));
}
)
elements.map!{|el| Element.new(el) }