// Generated by CoffeeScript 1.9.1 (function() { var XMLBuilder, XMLDeclaration, XMLDocType, XMLElement, XMLStringifier; XMLStringifier = require('./XMLStringifier'); XMLDeclaration = require('./XMLDeclaration'); XMLDocType = require('./XMLDocType'); XMLElement = require('./XMLElement'); module.exports = XMLBuilder = (function() { function XMLBuilder(name, options) { var root, temp; if (name == null) { throw new Error("Root element needs a name"); } if (options == null) { options = {}; } this.options = options; this.stringify = new XMLStringifier(options); temp = new XMLElement(this, 'doc'); root = temp.element(name); root.isRoot = true; root.documentObject = this; this.rootObject = root; if (!options.headless) { root.declaration(options); if ((options.pubID != null) || (options.sysID != null)) { root.doctype(options); } } } XMLBuilder.prototype.root = function() { return this.rootObject; }; XMLBuilder.prototype.end = function(options) { return this.toString(options); }; XMLBuilder.prototype.toString = function(options) { var indent, newline, offset, pretty, r, ref, ref1, ref2; pretty = (options != null ? options.pretty : void 0) || false; indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; r = ''; if (this.xmldec != null) { r += this.xmldec.toString(options); } if (this.doctype != null) { r += this.doctype.toString(options); } r += this.rootObject.toString(options); if (pretty && r.slice(-newline.length) === newline) { r = r.slice(0, -newline.length); } return r; }; return XMLBuilder; })(); }).call(this);