diff --git a/lib/register.js b/lib/register.js index ae6423a..ee35d95 100644 --- a/lib/register.js +++ b/lib/register.js @@ -3,6 +3,7 @@ var checkType = require('checktype'); var abstracts = {}; var classes = {}; var complexTypes = {}; +var modules = []; function registerAbstracts(classes) { for (var name in classes) { @@ -42,6 +43,11 @@ function registerComplexTypes(types) { } } +function registerModule(name) { + modules.push(name) + modules.sort() +} + function register(name, constructor) { // Adjust parameters if (typeof name != 'string') { @@ -55,8 +61,7 @@ function register(name, constructor) { // Registering a function if (constructor instanceof Function) { // Registration name - if (!name) - name = constructor.name + if (!name) name = constructor.name if (name == undefined) throw new Error("Can't register an anonymous module"); @@ -65,20 +70,30 @@ function register(name, constructor) { } // Registering a plugin - else - for (key in constructor) + else { + if (!name) name = constructor.name + + if (name) registerModule(name) + + for (var key in constructor) { + var value = constructor[key] + + if (typeof value === 'string') continue + switch (key) { case 'abstracts': - registerAbstracts(constructor[key]) + registerAbstracts(value) break case 'complexTypes': - registerComplexTypes(constructor[key]) + registerComplexTypes(value) break default: - registerClass(key, constructor[key]) + registerClass(key, value) } + } + } }; module.exports = register; @@ -86,3 +101,4 @@ module.exports = register; register.abstracts = abstracts; register.classes = classes; register.complexTypes = complexTypes; +register.modules = modules; diff --git a/templates/model_index.ftl b/templates/model_index.ftl index b178986..70a37ed 100644 --- a/templates/model_index.ftl +++ b/templates/model_index.ftl @@ -12,6 +12,10 @@ index.js * @license LGPL */ +Object.defineProperty(exports, 'name', {value: '${module.name}'}); +Object.defineProperty(exports, 'version', {value: '${module.version}'}); + + <#list module.remoteClasses?sort_by("name") as remoteClass> <#if !remoteClass.abstract> var ${remoteClass.name} = require('./${remoteClass.name}');