UNPKG

1.98 kBJavaScriptView Raw
1/**
2 * A parser to parser null, undefined, invalid and NIL values.
3 *
4 * @public
5 * @class
6 */
7class InvalidAwareTypes {
8 /**
9 * Static method which gets/sets the invalid value registry.
10 *
11 * @public
12 * @param {Object} config - The custom configuration supplied by user.
13 * @return {Object} Returns the invalid values registry.
14 */
15 static invalidAwareVals (config) {
16 if (!config) {
17 return InvalidAwareTypes._invalidAwareValsMap;
18 }
19 return Object.assign(InvalidAwareTypes._invalidAwareValsMap, config);
20 }
21
22 /**
23 * Initialize a new instance.
24 *
25 * @public
26 * @param {string} value - The value of the invalid data type.
27 */
28 constructor (value) {
29 this._value = value;
30 }
31
32 /**
33 * Returns the current value of the instance.
34 *
35 * @public
36 * @return {string} Returns the value of the invalid data type.
37 */
38 value () {
39 return this._value;
40 }
41
42 /**
43 * Returns the current value of the instance in string format.
44 *
45 * @public
46 * @return {string} Returns the value of the invalid data type.
47 */
48 toString () {
49 return String(this._value);
50 }
51
52 static isInvalid(val) {
53 return (val instanceof InvalidAwareTypes) || !!InvalidAwareTypes.invalidAwareVals()[val];
54 }
55
56 static getInvalidType(val) {
57 return val instanceof InvalidAwareTypes ? val : InvalidAwareTypes.invalidAwareVals()[val];
58 }
59}
60
61/**
62 * Enums for Invalid types.
63 */
64InvalidAwareTypes.NULL = new InvalidAwareTypes('null');
65InvalidAwareTypes.NA = new InvalidAwareTypes('na');
66InvalidAwareTypes.NIL = new InvalidAwareTypes('nil');
67
68/**
69 * Default Registry for mapping the invalid values.
70 *
71 * @private
72 */
73InvalidAwareTypes._invalidAwareValsMap = {
74 invalid: InvalidAwareTypes.NA,
75 nil: InvalidAwareTypes.NIL,
76 null: InvalidAwareTypes.NULL,
77 undefined: InvalidAwareTypes.NA
78};
79
80export default InvalidAwareTypes;