// Generated by CoffeeScript 1.12.7 (function() {

var XMLWriterBase,
  hasProp = {}.hasOwnProperty;

module.exports = XMLWriterBase = (function() {
  function XMLWriterBase(options) {
    var key, ref, ref1, ref2, ref3, ref4, ref5, ref6, value;
    options || (options = {});
    this.pretty = options.pretty || false;
    this.allowEmpty = (ref = options.allowEmpty) != null ? ref : false;
    if (this.pretty) {
      this.indent = (ref1 = options.indent) != null ? ref1 : '  ';
      this.newline = (ref2 = options.newline) != null ? ref2 : '\n';
      this.offset = (ref3 = options.offset) != null ? ref3 : 0;
      this.dontprettytextnodes = (ref4 = options.dontprettytextnodes) != null ? ref4 : 0;
    } else {
      this.indent = '';
      this.newline = '';
      this.offset = 0;
      this.dontprettytextnodes = 0;
    }
    this.spacebeforeslash = (ref5 = options.spacebeforeslash) != null ? ref5 : '';
    if (this.spacebeforeslash === true) {
      this.spacebeforeslash = ' ';
    }
    this.newlinedefault = this.newline;
    this.prettydefault = this.pretty;
    ref6 = options.writer || {};
    for (key in ref6) {
      if (!hasProp.call(ref6, key)) continue;
      value = ref6[key];
      this[key] = value;
    }
  }

  XMLWriterBase.prototype.set = function(options) {
    var key, ref, value;
    options || (options = {});
    if ("pretty" in options) {
      this.pretty = options.pretty;
    }
    if ("allowEmpty" in options) {
      this.allowEmpty = options.allowEmpty;
    }
    if (this.pretty) {
      this.indent = "indent" in options ? options.indent : '  ';
      this.newline = "newline" in options ? options.newline : '\n';
      this.offset = "offset" in options ? options.offset : 0;
      this.dontprettytextnodes = "dontprettytextnodes" in options ? options.dontprettytextnodes : 0;
    } else {
      this.indent = '';
      this.newline = '';
      this.offset = 0;
      this.dontprettytextnodes = 0;
    }
    this.spacebeforeslash = "spacebeforeslash" in options ? options.spacebeforeslash : '';
    if (this.spacebeforeslash === true) {
      this.spacebeforeslash = ' ';
    }
    this.newlinedefault = this.newline;
    this.prettydefault = this.pretty;
    ref = options.writer || {};
    for (key in ref) {
      if (!hasProp.call(ref, key)) continue;
      value = ref[key];
      this[key] = value;
    }
    return this;
  };

  XMLWriterBase.prototype.space = function(level) {
    var indent;
    if (this.pretty) {
      indent = (level || 0) + this.offset + 1;
      if (indent > 0) {
        return new Array(indent).join(this.indent);
      } else {
        return '';
      }
    } else {
      return '';
    }
  };

  return XMLWriterBase;

})();

}).call(this);