import {ClassUtil} from '../reflect/ClassUtil'; import {Fatal} from './Fatal'; //============================================================ // 枚举管理类。 // // @reference // @author maocy // @version 141230 //============================================================ export class EnumUtil { //============================================================ // 是否含有当前内容。 // // @method //============================================================ public static contains() { } //============================================================ // 尝试获得枚举内容。 // // @param instance 枚举对象 // @param value 内容 // @param defaultValue 缺省内容 //============================================================ public static tryEncode(instance, value, defaultValue: any = null) { if (instance) { for (var name in instance) { if (name.toLowerCase() == value.toLowerCase()) { return instance[name]; } } } return defaultValue; } //============================================================ // 获得枚举内容。 // // @param instance 枚举对象 // @param value 内容 //============================================================ public static encode(instance, value) { var result = this.tryEncode(instance, value); if (result == null) { throw new Fatal(this, 'Invalid value (enum={1}, value={2})', ClassUtil.dump(instance), value); } return result; } //============================================================ // 尝试获得枚举描述。 // // @param instance 枚举对象 // @param value 描述 // @param defaultValue 缺省描述 //============================================================ public static tryDecode(instance, value, defaultValue: any = null) { if (instance) { for (var name in instance) { if (instance[name] == value) { return name; } } } return defaultValue; } //============================================================ // 获得枚举描述。 // // @param instance 枚举对象 // @param value 描述 //============================================================ public static decode(instance, value) { var result = this.tryDecode(instance, value); if (result == null) { throw new Fatal(this, 'Invalid value (enum={1}, value={2})', ClassUtil.dump(instance), value); } return result; } }