1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- // 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;
- }
- });
- });
|