nhz.lib
Version:
NHZ Library
55 lines (53 loc) • 2.17 kB
JavaScript
/* coffee.genClass(args) */
module.exports = function(args) {
var ancestors, i, j, k, l, len, len1, len2, len3, method, methods, name, properties, property, result, staticMethods, staticProperties;
if (args == null) {
args = {};
}
name = args.name, ancestors = args.ancestors, staticProperties = args.staticProperties, properties = args.properties, staticMethods = args.staticMethods, methods = args.methods;
result = '';
switch ((ancestors != null ? ancestors.length : void 0) || 0) {
case 0:
ancestors = '';
break;
case 1:
ancestors = ancestors[0];
break;
default:
ancestors = "[ " + (ancestors.join(', ')) + " ]";
}
result += "### " + name + " ###\n\n";
if (ancestors) {
result += "module.exports = class " + name + " extends " + ancestors + "\n";
} else {
result += "module.exports = class " + name + "\n";
}
if (staticProperties != null ? staticProperties.length : void 0) {
result += "---\n Object.defineProperties " + name + ",\n";
for (i = 0, len = staticProperties.length; i < len; i++) {
property = staticProperties[i];
result += "---\n " + property + ": configurable:yes, enumerable:yes, writable:yes, value:null, get: (->), set: (->)\n";
}
}
if (staticMethods != null ? staticMethods.length : void 0) {
for (j = 0, len1 = staticMethods.length; j < len1; j++) {
method = staticMethods[j];
result += "---\n @" + method + " = -> throw new Error 'UNIMPLEMENTED'\n";
}
}
result += "---\n constructor: ->\n";
if (properties != null ? properties.length : void 0) {
result += "---\n Object.defineProperties this,\n";
for (k = 0, len2 = properties.length; k < len2; k++) {
property = properties[k];
result += "---\n " + property + ": configurable:yes, enumerable:yes, writable:yes, value:null, get: (->), set: (->)\n";
}
}
if (methods != null ? methods.length : void 0) {
for (l = 0, len3 = methods.length; l < len3; l++) {
method = methods[l];
result += "---\n " + method + ": -> throw new Error 'UNIMPLEMENTED'\n";
}
}
return result.replace(/^---\s*$/gmi, '');
};