class ManifestBase.Factory @types: () -> {} @default_type: () -> null @factory: (parent, name, json, module_name, klass) -> module_message = ManifestBase.module_message(parent.module_names(), [module_name, name]) json['type'] ||= klass.default_type() type = json['type'] ManifestBase.alert_undefined_message('type', module_message) if not type my_class = klass.types()[type] ManifestBase.alert_undefined_message('class', module_message) if not my_class new my_class(parent, name, json, module_name) @factory_type_args: (parent, json, module_name, klass) -> module_message = ManifestBase.module_message(parent.module_names(), [module_name]) json['type'] ||= klass.default_type() type = json['type'] ManifestBase.alert_undefined_message('type', module_message) if not type my_class = klass.types()[type] ManifestBase.alert_undefined_message('class', module_message) if not my_class new my_class(parent, json, module_name)