1 function Sys$Enum$parse(value, ignoreCase) {
6 var e = Function._validateParams(arguments, [
7 {name: "value", type: String},
8 {name: "ignoreCase", type: Boolean, optional: true}
9 ]);
10 if (e) throw e;
11 var values, parsed, val;
12 if (ignoreCase) {
13 values = this.__lowerCaseValues;
14 if (!values) {
15 this.__lowerCaseValues = values = {};
16 var prototype = this.prototype;
17 for (var name in prototype) {
18 values[name.toLowerCase()] = prototype[name];
19 }
20 }
21 }
22 else {
23 values = this.prototype;
24 }
25 if (!this.__flags) {
26 val = (ignoreCase ? value.toLowerCase() : value);
27 parsed = values[val.trim()];
28 if (typeof(parsed) !== 'number') throw Error.argument('value', String.format(Sys.Res.enumInvalidValue, value, this.__typeName));
29 return parsed;
30 }
31 else {
32 var parts = (ignoreCase ? value.toLowerCase() : value).split(',');
33 var v = 0;
34 for (var i = parts.length - 1; i >= 0; i--) {
35 var part = parts[i].trim();
36 parsed = values[part];
37 if (typeof(parsed) !== 'number') throw Error.argument('value', String.format(Sys.Res.enumInvalidValue, value.split(',')[i].trim(), this.__typeName));
38 v |= parsed;
39 }
40 return v;
41 }
42 }