ModuleContext.ts 908 B

12345678910111213141516171819202122232425262728293031323334353637
  1. const PROP_MODULE = '__module__name__';
  2. const PROP_IMPL_CLASS = '__impl__class__';
  3. let defaultModule = 'resources';
  4. export class ModuleContext {
  5. public static setDefaultModule(moduleName) {
  6. defaultModule = moduleName;
  7. }
  8. public static attachModule(cls, moduleName) {
  9. cls[PROP_MODULE] = moduleName;
  10. }
  11. public static getClassModule(cls) {
  12. return cls[PROP_MODULE] || defaultModule;
  13. }
  14. public static attachImplClass(cls, implCls) {
  15. cls[PROP_IMPL_CLASS] = implCls;
  16. }
  17. public static attachModuleAndImplClass(cls, moduleName, implCls) {
  18. cls[PROP_MODULE] = moduleName;
  19. cls[PROP_IMPL_CLASS] = implCls;
  20. }
  21. public static getImplClass(cls) {
  22. return cls[PROP_IMPL_CLASS] || cls;
  23. }
  24. public static createFromModule(cls) {
  25. let implCls = this.getImplClass(cls) || cls;
  26. return new implCls();
  27. }
  28. }