MockDOM.js
115 lines
| 3.3 KiB
| application/javascript
|
JavascriptLexer
Brian E Granger
|
r1234 | /*** | ||
MochiKit.MockDOM 1.4 | ||||
See <http://mochikit.com/> for documentation, downloads, license, etc. | ||||
(c) 2005 Bob Ippolito. All rights Reserved. | ||||
***/ | ||||
if (typeof(MochiKit) == "undefined") { | ||||
MochiKit = {}; | ||||
} | ||||
if (typeof(MochiKit.MockDOM) == "undefined") { | ||||
MochiKit.MockDOM = {}; | ||||
} | ||||
MochiKit.MockDOM.NAME = "MochiKit.MockDOM"; | ||||
MochiKit.MockDOM.VERSION = "1.4"; | ||||
MochiKit.MockDOM.__repr__ = function () { | ||||
return "[" + this.NAME + " " + this.VERSION + "]"; | ||||
}; | ||||
/** @id MochiKit.MockDOM.toString */ | ||||
MochiKit.MockDOM.toString = function () { | ||||
return this.__repr__(); | ||||
}; | ||||
/** @id MochiKit.MockDOM.createDocument */ | ||||
MochiKit.MockDOM.createDocument = function () { | ||||
var doc = new MochiKit.MockDOM.MockElement("DOCUMENT"); | ||||
doc.body = doc.createElement("BODY"); | ||||
doc.appendChild(doc.body); | ||||
return doc; | ||||
}; | ||||
/** @id MochiKit.MockDOM.MockElement */ | ||||
MochiKit.MockDOM.MockElement = function (name, data, ownerDocument) { | ||||
this.tagName = this.nodeName = name.toUpperCase(); | ||||
this.ownerDocument = ownerDocument || null; | ||||
if (name == "DOCUMENT") { | ||||
this.nodeType = 9; | ||||
this.childNodes = []; | ||||
} else if (typeof(data) == "string") { | ||||
this.nodeValue = data; | ||||
this.nodeType = 3; | ||||
} else { | ||||
this.nodeType = 1; | ||||
this.childNodes = []; | ||||
} | ||||
if (name.substring(0, 1) == "<") { | ||||
var nameattr = name.substring( | ||||
name.indexOf('"') + 1, name.lastIndexOf('"')); | ||||
name = name.substring(1, name.indexOf(" ")); | ||||
this.tagName = this.nodeName = name.toUpperCase(); | ||||
this.setAttribute("name", nameattr); | ||||
} | ||||
}; | ||||
MochiKit.MockDOM.MockElement.prototype = { | ||||
/** @id MochiKit.MockDOM.MockElement.prototype.createElement */ | ||||
createElement: function (tagName) { | ||||
return new MochiKit.MockDOM.MockElement(tagName, null, this.nodeType == 9 ? this : this.ownerDocument); | ||||
}, | ||||
/** @id MochiKit.MockDOM.MockElement.prototype.createTextNode */ | ||||
createTextNode: function (text) { | ||||
return new MochiKit.MockDOM.MockElement("text", text, this.nodeType == 9 ? this : this.ownerDocument); | ||||
}, | ||||
/** @id MochiKit.MockDOM.MockElement.prototype.setAttribute */ | ||||
setAttribute: function (name, value) { | ||||
this[name] = value; | ||||
}, | ||||
/** @id MochiKit.MockDOM.MockElement.prototype.getAttribute */ | ||||
getAttribute: function (name) { | ||||
return this[name]; | ||||
}, | ||||
/** @id MochiKit.MockDOM.MockElement.prototype.appendChild */ | ||||
appendChild: function (child) { | ||||
this.childNodes.push(child); | ||||
}, | ||||
/** @id MochiKit.MockDOM.MockElement.prototype.toString */ | ||||
toString: function () { | ||||
return "MockElement(" + this.tagName + ")"; | ||||
}, | ||||
/** @id MochiKit.MockDOM.MockElement.prototype.getElementsByTagName */ | ||||
getElementsByTagName: function (tagName) { | ||||
var foundElements = []; | ||||
MochiKit.Base.nodeWalk(this, function(node){ | ||||
if (tagName == '*' || tagName == node.tagName) { | ||||
foundElements.push(node); | ||||
return node.childNodes; | ||||
} | ||||
}); | ||||
return foundElements; | ||||
} | ||||
}; | ||||
/** @id MochiKit.MockDOM.EXPORT_OK */ | ||||
MochiKit.MockDOM.EXPORT_OK = [ | ||||
"mockElement", | ||||
"createDocument" | ||||
]; | ||||
/** @id MochiKit.MockDOM.EXPORT */ | ||||
MochiKit.MockDOM.EXPORT = [ | ||||
"document" | ||||
]; | ||||
MochiKit.MockDOM.__new__ = function () { | ||||
this.document = this.createDocument(); | ||||
}; | ||||
MochiKit.MockDOM.__new__(); | ||||