// Generated by CoffeeScript 2.4.1 (function() { var NodeType, WriterState, XMLDOMImplementation, XMLDocument, XMLDocumentCB, XMLStreamWriter, XMLStringWriter, assign, isFunction; ({assign, isFunction} = require('./Utility')); XMLDOMImplementation = require('./XMLDOMImplementation'); XMLDocument = require('./XMLDocument'); XMLDocumentCB = require('./XMLDocumentCB'); XMLStringWriter = require('./XMLStringWriter'); XMLStreamWriter = require('./XMLStreamWriter'); NodeType = require('./NodeType'); WriterState = require('./WriterState'); // Creates a new document and returns the root node for // chain-building the document tree // `name` name of the root element // `xmldec.version` A version number string, e.g. 1.0 // `xmldec.encoding` Encoding declaration, e.g. UTF-8 // `xmldec.standalone` standalone document declaration: true or false // `doctype.pubID` public identifier of the external subset // `doctype.sysID` system identifier of the external subset // `options.headless` whether XML declaration and doctype will be included: // true or false // `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. module.exports.create = function(name, xmldec, doctype, options) { var doc, root; if (name == null) { throw new Error("Root element needs a name."); } options = assign({}, xmldec, doctype, options); // create the document node doc = new XMLDocument(options); // add the root node root = doc.element(name); // prolog if (!options.headless) { doc.declaration(options); if ((options.pubID != null) || (options.sysID != null)) { doc.dtd(options); } } return root; }; // Creates a new document and returns the document node for // chain-building the document tree // `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. // `onData` the function to be called when a new chunk of XML is output. The // string containing the XML chunk is passed to `onData` as its single // argument. // `onEnd` the function to be called when the XML document is completed with // `end`. `onEnd` does not receive any arguments. module.exports.begin = function(options, onData, onEnd) { if (isFunction(options)) { [onData, onEnd] = [options, onData]; options = {}; } if (onData) { return new XMLDocumentCB(options, onData, onEnd); } else { return new XMLDocument(options); } }; module.exports.stringWriter = function(options) { return new XMLStringWriter(options); }; module.exports.streamWriter = function(stream, options) { return new XMLStreamWriter(stream, options); }; module.exports.implementation = new XMLDOMImplementation(); module.exports.nodeType = NodeType; module.exports.writerState = WriterState; }).call(this);