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;
}
}