You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
915 B
44 lines
915 B
// This object will be used as the prototype for Nodes when creating a |
|
// DOM-Level-1-compliant structure. |
|
var NodePrototype = module.exports = { |
|
get firstChild() { |
|
var children = this.children; |
|
return children && children[0] || null; |
|
}, |
|
get lastChild() { |
|
var children = this.children; |
|
return children && children[children.length - 1] || null; |
|
}, |
|
get nodeType() { |
|
return nodeTypes[this.type] || nodeTypes.element; |
|
} |
|
}; |
|
|
|
var domLvl1 = { |
|
tagName: "name", |
|
childNodes: "children", |
|
parentNode: "parent", |
|
previousSibling: "prev", |
|
nextSibling: "next", |
|
nodeValue: "data" |
|
}; |
|
|
|
var nodeTypes = { |
|
element: 1, |
|
text: 3, |
|
cdata: 4, |
|
comment: 8 |
|
}; |
|
|
|
Object.keys(domLvl1).forEach(function(key) { |
|
var shorthand = domLvl1[key]; |
|
Object.defineProperty(NodePrototype, key, { |
|
get: function() { |
|
return this[shorthand] || null; |
|
}, |
|
set: function(val) { |
|
this[shorthand] = val; |
|
return val; |
|
} |
|
}); |
|
});
|
|
|