283 lines
8.9 KiB
JavaScript
283 lines
8.9 KiB
JavaScript
// Generated by CoffeeScript 2.4.1
|
|
(function() {
|
|
var NodeType, XMLDOMConfiguration, XMLDOMImplementation, XMLDocument, XMLNode, XMLStringWriter, XMLStringifier, isPlainObject;
|
|
|
|
({isPlainObject} = require('./Utility'));
|
|
|
|
XMLDOMImplementation = require('./XMLDOMImplementation');
|
|
|
|
XMLDOMConfiguration = require('./XMLDOMConfiguration');
|
|
|
|
XMLNode = require('./XMLNode');
|
|
|
|
NodeType = require('./NodeType');
|
|
|
|
XMLStringifier = require('./XMLStringifier');
|
|
|
|
XMLStringWriter = require('./XMLStringWriter');
|
|
|
|
// Represents an XML builder
|
|
module.exports = XMLDocument = (function() {
|
|
class XMLDocument extends XMLNode {
|
|
// Initializes a new instance of `XMLDocument`
|
|
|
|
// `options.keepNullNodes` whether nodes with null values will be kept
|
|
// or ignored: true or false
|
|
// `options.keepNullAttributes` whether attributes with null values will be
|
|
// kept or ignored: true or false
|
|
// `options.ignoreDecorators` whether decorator strings will be ignored when
|
|
// converting JS objects: true or false
|
|
// `options.separateArrayItems` whether array items are created as separate
|
|
// nodes when passed as an object value: true or false
|
|
// `options.noDoubleEncoding` whether existing html entities are encoded:
|
|
// true or false
|
|
// `options.stringify` a set of functions to use for converting values to
|
|
// strings
|
|
// `options.writer` the default XML writer to use for converting nodes to
|
|
// string. If the default writer is not set, the built-in XMLStringWriter
|
|
// will be used instead.
|
|
constructor(options) {
|
|
super(null);
|
|
this.name = "#document";
|
|
this.type = NodeType.Document;
|
|
this.documentURI = null;
|
|
this.domConfig = new XMLDOMConfiguration();
|
|
options || (options = {});
|
|
if (!options.writer) {
|
|
options.writer = new XMLStringWriter();
|
|
}
|
|
this.options = options;
|
|
this.stringify = new XMLStringifier(options);
|
|
}
|
|
|
|
// Ends the document and passes it to the given XML writer
|
|
|
|
// `writer` is either an XML writer or a plain object to pass to the
|
|
// constructor of the default XML writer. The default writer is assigned when
|
|
// creating the XML document. Following flags are recognized by the
|
|
// built-in XMLStringWriter:
|
|
// `writer.pretty` pretty prints the result
|
|
// `writer.indent` indentation for pretty print
|
|
// `writer.offset` how many indentations to add to every line for pretty print
|
|
// `writer.newline` newline sequence for pretty print
|
|
end(writer) {
|
|
var writerOptions;
|
|
writerOptions = {};
|
|
if (!writer) {
|
|
writer = this.options.writer;
|
|
} else if (isPlainObject(writer)) {
|
|
writerOptions = writer;
|
|
writer = this.options.writer;
|
|
}
|
|
return writer.document(this, writer.filterOptions(writerOptions));
|
|
}
|
|
|
|
// Converts the XML document to string
|
|
|
|
// `options.pretty` pretty prints the result
|
|
// `options.indent` indentation for pretty print
|
|
// `options.offset` how many indentations to add to every line for pretty print
|
|
// `options.newline` newline sequence for pretty print
|
|
toString(options) {
|
|
return this.options.writer.document(this, this.options.writer.filterOptions(options));
|
|
}
|
|
|
|
// DOM level 1 functions to be implemented later
|
|
createElement(tagName) {
|
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
|
}
|
|
|
|
createDocumentFragment() {
|
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
|
}
|
|
|
|
createTextNode(data) {
|
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
|
}
|
|
|
|
createComment(data) {
|
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
|
}
|
|
|
|
createCDATASection(data) {
|
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
|
}
|
|
|
|
createProcessingInstruction(target, data) {
|
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
|
}
|
|
|
|
createAttribute(name) {
|
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
|
}
|
|
|
|
createEntityReference(name) {
|
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
|
}
|
|
|
|
getElementsByTagName(tagname) {
|
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
|
}
|
|
|
|
// DOM level 2 functions to be implemented later
|
|
importNode(importedNode, deep) {
|
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
|
}
|
|
|
|
createElementNS(namespaceURI, qualifiedName) {
|
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
|
}
|
|
|
|
createAttributeNS(namespaceURI, qualifiedName) {
|
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
|
}
|
|
|
|
getElementsByTagNameNS(namespaceURI, localName) {
|
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
|
}
|
|
|
|
getElementById(elementId) {
|
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
|
}
|
|
|
|
// DOM level 3 functions to be implemented later
|
|
adoptNode(source) {
|
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
|
}
|
|
|
|
normalizeDocument() {
|
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
|
}
|
|
|
|
renameNode(node, namespaceURI, qualifiedName) {
|
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
|
}
|
|
|
|
// DOM level 4 functions to be implemented later
|
|
getElementsByClassName(classNames) {
|
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
|
}
|
|
|
|
createEvent(eventInterface) {
|
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
|
}
|
|
|
|
createRange() {
|
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
|
}
|
|
|
|
createNodeIterator(root, whatToShow, filter) {
|
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
|
}
|
|
|
|
createTreeWalker(root, whatToShow, filter) {
|
|
throw new Error("This DOM method is not implemented." + this.debugInfo());
|
|
}
|
|
|
|
};
|
|
|
|
// DOM level 1
|
|
Object.defineProperty(XMLDocument.prototype, 'implementation', {
|
|
value: new XMLDOMImplementation()
|
|
});
|
|
|
|
Object.defineProperty(XMLDocument.prototype, 'doctype', {
|
|
get: function() {
|
|
var child, i, len, ref;
|
|
ref = this.children;
|
|
for (i = 0, len = ref.length; i < len; i++) {
|
|
child = ref[i];
|
|
if (child.type === NodeType.DocType) {
|
|
return child;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
});
|
|
|
|
Object.defineProperty(XMLDocument.prototype, 'documentElement', {
|
|
get: function() {
|
|
return this.rootObject || null;
|
|
}
|
|
});
|
|
|
|
// DOM level 3
|
|
Object.defineProperty(XMLDocument.prototype, 'inputEncoding', {
|
|
get: function() {
|
|
return null;
|
|
}
|
|
});
|
|
|
|
Object.defineProperty(XMLDocument.prototype, 'strictErrorChecking', {
|
|
get: function() {
|
|
return false;
|
|
}
|
|
});
|
|
|
|
Object.defineProperty(XMLDocument.prototype, 'xmlEncoding', {
|
|
get: function() {
|
|
if (this.children.length !== 0 && this.children[0].type === NodeType.Declaration) {
|
|
return this.children[0].encoding;
|
|
} else {
|
|
return null;
|
|
}
|
|
}
|
|
});
|
|
|
|
Object.defineProperty(XMLDocument.prototype, 'xmlStandalone', {
|
|
get: function() {
|
|
if (this.children.length !== 0 && this.children[0].type === NodeType.Declaration) {
|
|
return this.children[0].standalone === 'yes';
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
});
|
|
|
|
Object.defineProperty(XMLDocument.prototype, 'xmlVersion', {
|
|
get: function() {
|
|
if (this.children.length !== 0 && this.children[0].type === NodeType.Declaration) {
|
|
return this.children[0].version;
|
|
} else {
|
|
return "1.0";
|
|
}
|
|
}
|
|
});
|
|
|
|
// DOM level 4
|
|
Object.defineProperty(XMLDocument.prototype, 'URL', {
|
|
get: function() {
|
|
return this.documentURI;
|
|
}
|
|
});
|
|
|
|
Object.defineProperty(XMLDocument.prototype, 'origin', {
|
|
get: function() {
|
|
return null;
|
|
}
|
|
});
|
|
|
|
Object.defineProperty(XMLDocument.prototype, 'compatMode', {
|
|
get: function() {
|
|
return null;
|
|
}
|
|
});
|
|
|
|
Object.defineProperty(XMLDocument.prototype, 'characterSet', {
|
|
get: function() {
|
|
return null;
|
|
}
|
|
});
|
|
|
|
Object.defineProperty(XMLDocument.prototype, 'contentType', {
|
|
get: function() {
|
|
return null;
|
|
}
|
|
});
|
|
|
|
return XMLDocument;
|
|
|
|
}).call(this);
|
|
|
|
}).call(this);
|