UNPKG

oomph

Version:

Object Oriented javascript models for the client and the server

92 lines (80 loc) 2.55 kB
// Generated by CoffeeScript 1.9.3 (function() { var Base, _, publishSubscribe, slice = [].slice; _ = require('lodash'); publishSubscribe = require('../publicModules/publishSubscribe'); Base = (function() { function Base(initialisedProps) { var _class; _class = this.constructor; } Base.extend = function() { var _class, args; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; _class = this; return args.forEach(function(module) { var initialiser, prop, value; if (module.constructor !== Object) { throw new Error('Arguments not an object or a list of objects'); } if (module.moduleInitialise) { initialiser = module.moduleInitialise.bind(_class); initialiser(); } for (prop in module) { value = module[prop]; if (!_.includes(['moduleName', 'moduleInitialise'], prop)) { _class[prop] = value; } } if (!_class.extendedModules) { _class.extendedModules = []; } if (!module.hasOwnProperty('moduleName')) { return _class.extendedModules.push(module.moduleName); } }); }; Base.include = function() { var _class, args; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; _class = this; return args.forEach(function(module) { var initialiser, prop, value; if (module.constructor !== Object) { throw new Error('Arguments not an object or a list of objects'); } if (module.moduleInitialise) { initialiser = module.moduleInitialise.bind(_class); initialiser(); } for (prop in module) { value = module[prop]; if (!_.includes(['moduleName', 'moduleInitialise'], prop)) { _class.prototype[prop] = value; } } if (!_class.includedModules) { _class.includedModules = []; } if (!module.hasOwnProperty('moduleName')) { return _class.includedModules.push(module.moduleName); } }); }; Base.getName = function() { var funcNameRegex, results; funcNameRegex = /function (.{1,})\(/; results = funcNameRegex.exec(_class.toString()); if (results && results.length > 1) { return results[1]; } else { return ''; } }; return Base; })(); Base.extend(publishSubscribe); module.exports = Base; }).call(this);