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.
45 lines
915 B
45 lines
915 B
2 years ago
|
// 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;
|
||
|
}
|
||
|
});
|
||
|
});
|