summaryrefslogtreecommitdiff
path: root/client/node_modules/domino/lib/DOMImplementation.js
diff options
context:
space:
mode:
Diffstat (limited to 'client/node_modules/domino/lib/DOMImplementation.js')
-rw-r--r--client/node_modules/domino/lib/DOMImplementation.js94
1 files changed, 94 insertions, 0 deletions
diff --git a/client/node_modules/domino/lib/DOMImplementation.js b/client/node_modules/domino/lib/DOMImplementation.js
new file mode 100644
index 0000000..675b687
--- /dev/null
+++ b/client/node_modules/domino/lib/DOMImplementation.js
@@ -0,0 +1,94 @@
+"use strict";
+module.exports = DOMImplementation;
+
+var Document = require('./Document');
+var DocumentType = require('./DocumentType');
+var HTMLParser = require('./HTMLParser');
+var utils = require('./utils');
+var xml = require('./xmlnames');
+
+// Each document must have its own instance of the domimplementation object
+function DOMImplementation(contextObject) {
+ this.contextObject = contextObject;
+}
+
+
+// Feature/version pairs that DOMImplementation.hasFeature() returns
+// true for. It returns false for anything else.
+var supportedFeatures = {
+ 'xml': { '': true, '1.0': true, '2.0': true }, // DOM Core
+ 'core': { '': true, '2.0': true }, // DOM Core
+ 'html': { '': true, '1.0': true, '2.0': true} , // HTML
+ 'xhtml': { '': true, '1.0': true, '2.0': true} , // HTML
+};
+
+DOMImplementation.prototype = {
+ hasFeature: function hasFeature(feature, version) {
+ var f = supportedFeatures[(feature || '').toLowerCase()];
+ return (f && f[version || '']) || false;
+ },
+
+ createDocumentType: function createDocumentType(qualifiedName, publicId, systemId) {
+ if (!xml.isValidQName(qualifiedName)) utils.InvalidCharacterError();
+
+ return new DocumentType(this.contextObject, qualifiedName, publicId, systemId);
+ },
+
+ createDocument: function createDocument(namespace, qualifiedName, doctype) {
+ //
+ // Note that the current DOMCore spec makes it impossible to
+ // create an HTML document with this function, even if the
+ // namespace and doctype are propertly set. See this thread:
+ // http://lists.w3.org/Archives/Public/www-dom/2011AprJun/0132.html
+ //
+ var d = new Document(false, null);
+ var e;
+
+ if (qualifiedName)
+ e = d.createElementNS(namespace, qualifiedName);
+ else
+ e = null;
+
+ if (doctype) {
+ d.appendChild(doctype);
+ }
+
+ if (e) d.appendChild(e);
+ if (namespace === utils.NAMESPACE.HTML) {
+ d._contentType = 'application/xhtml+xml';
+ } else if (namespace === utils.NAMESPACE.SVG) {
+ d._contentType = 'image/svg+xml';
+ } else {
+ d._contentType = 'application/xml';
+ }
+
+ return d;
+ },
+
+ createHTMLDocument: function createHTMLDocument(titleText) {
+ var d = new Document(true, null);
+ d.appendChild(new DocumentType(d, 'html'));
+ var html = d.createElement('html');
+ d.appendChild(html);
+ var head = d.createElement('head');
+ html.appendChild(head);
+ if (titleText !== undefined) {
+ var title = d.createElement('title');
+ head.appendChild(title);
+ title.appendChild(d.createTextNode(titleText));
+ }
+ html.appendChild(d.createElement('body'));
+ d.modclock = 1; // Start tracking modifications
+ return d;
+ },
+
+ mozSetOutputMutationHandler: function(doc, handler) {
+ doc.mutationHandler = handler;
+ },
+
+ mozGetInputMutationHandler: function(doc) {
+ utils.nyi();
+ },
+
+ mozHTMLParser: HTMLParser,
+};