53 lines
1.3 KiB
TypeScript
53 lines
1.3 KiB
TypeScript
|
|
const PROP_MODULE = '__module__name__';
|
|
const PROP_IMPL_CLASS = '__impl__class__';
|
|
|
|
let defaultModule = 'resources';
|
|
|
|
|
|
export class ModuleContext {
|
|
public static setDefaultModule(moduleName) {
|
|
defaultModule = moduleName;
|
|
}
|
|
|
|
public static getDefaultModule(){
|
|
return defaultModule;
|
|
}
|
|
|
|
public static attachClassModule(cls, moduleName) {
|
|
cls[PROP_MODULE] = moduleName;
|
|
}
|
|
|
|
public static getClassModule(cls) {
|
|
return cls[PROP_MODULE] || defaultModule;
|
|
}
|
|
|
|
public static attachImplClass(cls, implCls) {
|
|
cls[PROP_IMPL_CLASS] = implCls;
|
|
}
|
|
|
|
public static attachModuleAndImplClass(cls, moduleName, implCls) {
|
|
cls[PROP_MODULE] = moduleName;
|
|
cls[PROP_IMPL_CLASS] = implCls;
|
|
}
|
|
|
|
public static getImplClass(cls) {
|
|
return cls[PROP_IMPL_CLASS] || cls;
|
|
}
|
|
|
|
public static createFromModule(cls) {
|
|
let implCls = this.getImplClass(cls) || cls;
|
|
return new implCls();
|
|
}
|
|
}
|
|
|
|
export function tgx_class(module:string, superCls?:Function) {
|
|
return function(cls:Function){
|
|
if(superCls){
|
|
ModuleContext.attachModuleAndImplClass(superCls,module,cls);
|
|
}
|
|
else{
|
|
ModuleContext.attachClassModule(cls,module);
|
|
}
|
|
}
|
|
} |