private void WriteV8Value(CefV8Value value, StringBuilder result, int indent = 0) { /* var isUndefined = value.IsUndefined; var isNull = value.IsNull; var isBool = value.IsBool; var isInt = value.IsInt; var isDouble = value.IsDouble; var isDate = value.IsDate; var isString = value.IsString; var isArray = value.IsArray; var isObject = value.IsObject; var isFunction = value.IsFunction; result.Append("["); if (isUndefined) result.Append("undefined "); if (isNull) result.Append("null "); if (isBool) result.Append("bool "); if (isInt) result.Append("int "); if (isDouble) result.Append("double "); if (isDate) result.Append("date "); if (isString) result.Append("string "); if (isArray) result.Append("array "); if (isObject) result.Append("object "); if (isFunction) result.Append("function"); result.Append("]"); */ if (value.IsUndefined) { result.Append("(undefined)"); } else if (value.IsNull) { result.Append("(null)"); } else if (value.IsBool) { result.AppendFormat("(bool) {0}", value.GetBoolValue() ? "true" : "false"); } else if (value.IsInt) { result.AppendFormat("(int) {0}", value.GetIntValue()); } else if (value.IsDouble) { result.AppendFormat("(double) {0}", value.GetDoubleValue().ToString(CultureInfo.InvariantCulture.NumberFormat)); } else if (value.IsDate) { result.AppendFormat("(date) {0}", value.GetDateValue().ToString("s")); } else if (value.IsString) { result.AppendFormat("(string) {0}", value.GetStringValue()); } else if (value.IsArray) // for array IsObject also is true { var indentString = string.Empty.PadLeft((indent + 1) * 4, ' '); result.Append("(array) ["); var length = value.GetArrayLength(); for (var i = 0; i < length; i++) { result.AppendFormat("\n{0}{1} = ", indentString, i); WriteV8Value(value.GetValue(i), result, indent + 1); } if (length != 0) { result.Append('\n'); result.Append(indentString); } result.Append(']'); } else if (value.IsFunction) // for function IsObject also is true { var name = value.GetFunctionName(); var handler = value.GetFunctionHandler(); var declaration = value.GetStringValue(); result.Append("(function) "); result.Append(!string.IsNullOrEmpty(name) ? name : "(anonymous)"); if (handler != null) { result.Append(" (handler: "); result.Append(handler.ToString()); result.Append(")"); } if (!string.IsNullOrEmpty(declaration)) { result.Append(" = "); result.Append(declaration); } } else if (value.IsObject) { var indentString = string.Empty.PadLeft((indent + 1) * 4, ' '); result.Append("(object) {"); var keys = value.GetKeys().AsEnumerable(); foreach (var key in keys) { result.AppendFormat("\n{0}{1} = ", indentString, key); WriteV8Value(value.GetValue(key), result, indent + 1); } if (keys.Any()) { result.Append('\n'); result.Append(indentString); } result.Append('}'); } //else result.Append("(unknown)"); }
private void WriteV8Value(CefV8Value value, StringBuilder result, int indent = 0) { /* * var isUndefined = value.IsUndefined; * var isNull = value.IsNull; * var isBool = value.IsBool; * var isInt = value.IsInt; * var isDouble = value.IsDouble; * var isDate = value.IsDate; * var isString = value.IsString; * var isArray = value.IsArray; * var isObject = value.IsObject; * var isFunction = value.IsFunction; * * result.Append("["); * if (isUndefined) result.Append("undefined "); * if (isNull) result.Append("null "); * if (isBool) result.Append("bool "); * if (isInt) result.Append("int "); * if (isDouble) result.Append("double "); * if (isDate) result.Append("date "); * if (isString) result.Append("string "); * if (isArray) result.Append("array "); * if (isObject) result.Append("object "); * if (isFunction) result.Append("function"); * result.Append("]"); */ if (value.IsUndefined) { result.Append("(undefined)"); } else if (value.IsNull) { result.Append("(null)"); } else if (value.IsBool) { result.AppendFormat("(bool) {0}", value.GetBoolValue() ? "true" : "false"); } else if (value.IsInt) { result.AppendFormat("(int) {0}", value.GetIntValue()); } else if (value.IsDouble) { result.AppendFormat("(double) {0}", value.GetDoubleValue().ToString(CultureInfo.InvariantCulture.NumberFormat)); } else if (value.IsDate) { result.AppendFormat("(date) {0}", value.GetDateValue().ToString("s")); } else if (value.IsString) { result.AppendFormat("(string) {0}", value.GetStringValue()); } else if (value.IsArray) // for array IsObject also is true { var indentString = string.Empty.PadLeft((indent + 1) * 4, ' '); result.Append("(array) ["); var length = value.GetArrayLength(); for (var i = 0; i < length; i++) { result.AppendFormat("\n{0}{1} = ", indentString, i); WriteV8Value(value.GetValue(i), result, indent + 1); } if (length != 0) { result.Append('\n'); result.Append(indentString); } result.Append(']'); } else if (value.IsFunction) // for function IsObject also is true { var name = value.GetFunctionName(); var handler = value.GetFunctionHandler(); var declaration = value.GetStringValue(); result.Append("(function) "); result.Append(!string.IsNullOrEmpty(name) ? name : "(anonymous)"); if (handler != null) { result.Append(" (handler: "); result.Append(handler.ToString()); result.Append(")"); } if (!string.IsNullOrEmpty(declaration)) { result.Append(" = "); result.Append(declaration); } } else if (value.IsObject) { var indentString = string.Empty.PadLeft((indent + 1) * 4, ' '); result.Append("(object) {"); var keys = value.GetKeys().AsEnumerable(); foreach (var key in keys) { result.AppendFormat("\n{0}{1} = ", indentString, key); WriteV8Value(value.GetValue(key), result, indent + 1); } if (keys.Any()) { result.Append('\n'); result.Append(indentString); } result.Append('}'); } //else result.Append("(unknown)"); }