Initial commit
This commit is contained in:
commit
ec49fedc45
1288 files changed
+226749
No files matched your search
+136
@@ -0,0 +1,136 @@
|
||||
// Generated by CoffeeScript 1.3.3
|
||||
(function() {
|
||||
var XMLBuilder, XMLFragment,
|
||||
__bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
|
||||
|
||||
XMLFragment = require('./XMLFragment');
|
||||
|
||||
XMLBuilder = (function() {
|
||||
|
||||
function XMLBuilder(name, xmldec, doctype, options) {
|
||||
this.assertLegalChar = __bind(this.assertLegalChar, this);
|
||||
|
||||
var att, child, _ref;
|
||||
this.children = [];
|
||||
this.rootObject = null;
|
||||
if (this.is(name, 'Object')) {
|
||||
_ref = [name, xmldec], xmldec = _ref[0], doctype = _ref[1];
|
||||
name = null;
|
||||
}
|
||||
if (name != null) {
|
||||
name = '' + name || '';
|
||||
if (xmldec == null) {
|
||||
xmldec = {
|
||||
'version': '1.0'
|
||||
};
|
||||
}
|
||||
}
|
||||
this.allowSurrogateChars = options != null ? options.allowSurrogateChars : void 0;
|
||||
if ((xmldec != null) && !(xmldec.version != null)) {
|
||||
throw new Error("Version number is required");
|
||||
}
|
||||
if (xmldec != null) {
|
||||
xmldec.version = '' + xmldec.version || '';
|
||||
if (!xmldec.version.match(/1\.[0-9]+/)) {
|
||||
throw new Error("Invalid version number: " + xmldec.version);
|
||||
}
|
||||
att = {
|
||||
version: xmldec.version
|
||||
};
|
||||
if (xmldec.encoding != null) {
|
||||
xmldec.encoding = '' + xmldec.encoding || '';
|
||||
if (!xmldec.encoding.match(/[A-Za-z](?:[A-Za-z0-9._-]|-)*/)) {
|
||||
throw new Error("Invalid encoding: " + xmldec.encoding);
|
||||
}
|
||||
att.encoding = xmldec.encoding;
|
||||
}
|
||||
if (xmldec.standalone != null) {
|
||||
att.standalone = xmldec.standalone ? "yes" : "no";
|
||||
}
|
||||
child = new XMLFragment(this, '?xml', att);
|
||||
this.children.push(child);
|
||||
}
|
||||
if (doctype != null) {
|
||||
att = {};
|
||||
if (name != null) {
|
||||
att.name = name;
|
||||
}
|
||||
if (doctype.ext != null) {
|
||||
doctype.ext = '' + doctype.ext || '';
|
||||
att.ext = doctype.ext;
|
||||
}
|
||||
child = new XMLFragment(this, '!DOCTYPE', att);
|
||||
this.children.push(child);
|
||||
}
|
||||
if (name != null) {
|
||||
this.begin(name);
|
||||
}
|
||||
}
|
||||
|
||||
XMLBuilder.prototype.begin = function(name, xmldec, doctype) {
|
||||
var doc, root;
|
||||
if (!(name != null)) {
|
||||
throw new Error("Root element needs a name");
|
||||
}
|
||||
if (this.rootObject) {
|
||||
this.children = [];
|
||||
this.rootObject = null;
|
||||
}
|
||||
if (xmldec != null) {
|
||||
doc = new XMLBuilder(name, xmldec, doctype);
|
||||
return doc.root();
|
||||
}
|
||||
name = '' + name || '';
|
||||
root = new XMLFragment(this, name, {});
|
||||
root.isRoot = true;
|
||||
root.documentObject = this;
|
||||
this.children.push(root);
|
||||
this.rootObject = root;
|
||||
return root;
|
||||
};
|
||||
|
||||
XMLBuilder.prototype.root = function() {
|
||||
return this.rootObject;
|
||||
};
|
||||
|
||||
XMLBuilder.prototype.end = function(options) {
|
||||
return toString(options);
|
||||
};
|
||||
|
||||
XMLBuilder.prototype.toString = function(options) {
|
||||
var child, r, _i, _len, _ref;
|
||||
r = '';
|
||||
_ref = this.children;
|
||||
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||||
child = _ref[_i];
|
||||
r += child.toString(options);
|
||||
}
|
||||
return r;
|
||||
};
|
||||
|
||||
XMLBuilder.prototype.is = function(obj, type) {
|
||||
var clas;
|
||||
clas = Object.prototype.toString.call(obj).slice(8, -1);
|
||||
return (obj != null) && clas === type;
|
||||
};
|
||||
|
||||
XMLBuilder.prototype.assertLegalChar = function(str) {
|
||||
var chars, chr;
|
||||
if (this.allowSurrogateChars) {
|
||||
chars = /[\u0000-\u0008\u000B-\u000C\u000E-\u001F\uFFFE-\uFFFF]/;
|
||||
} else {
|
||||
chars = /[\u0000-\u0008\u000B-\u000C\u000E-\u001F\uD800-\uDFFF\uFFFE-\uFFFF]/;
|
||||
}
|
||||
chr = str.match(chars);
|
||||
if (chr) {
|
||||
throw new Error("Invalid character (" + chr + ") in string: " + str + " at index " + chr.index);
|
||||
}
|
||||
};
|
||||
|
||||
return XMLBuilder;
|
||||
|
||||
})();
|
||||
|
||||
module.exports = XMLBuilder;
|
||||
|
||||
}).call(this);
|
||||
Reference in new issue
Block a user