/// <summary> /// Makes a mapping of value from the script type to a host type /// </summary> /// <param name="value">The source value</param> /// <returns>The mapped value</returns> private static object MapToHostType(OriginalValue value) { if (value.IsNull) { return(null); } OriginalValueType valueType = value.ValueType; object result; switch (valueType) { case OriginalValueType.NotExists: case OriginalValueType.NotExistsInObject: case OriginalValueType.Undefined: result = Undefined.Value; break; case OriginalValueType.Boolean: case OriginalValueType.Integer: case OriginalValueType.Double: case OriginalValueType.String: case OriginalValueType.Symbol: case OriginalValueType.Object: case OriginalValueType.Function: case OriginalValueType.Date: case OriginalValueType.Property: case OriginalValueType.SpreadOperatorResult: result = value.Value; break; default: throw new ArgumentOutOfRangeException(); } return(result); }