// Copyright 2019 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "src/torque/ls/json.h" #include #include #include "src/torque/utils.h" namespace v8 { namespace internal { namespace torque { namespace ls { namespace { void SerializeToString(std::stringstream& str, const JsonValue& value) { switch (value.tag) { case JsonValue::NUMBER: str << value.ToNumber(); break; case JsonValue::STRING: str << StringLiteralQuote(value.ToString()); break; case JsonValue::IS_NULL: str << "null"; break; case JsonValue::BOOL: str << (value.ToBool() ? "true" : "false"); break; case JsonValue::OBJECT: { str << "{"; size_t i = 0; for (const auto& pair : value.ToObject()) { str << "\"" << pair.first << "\":"; SerializeToString(str, pair.second); if (++i < value.ToObject().size()) str << ","; } str << "}"; break; } case JsonValue::ARRAY: { str << "["; size_t i = 0; for (const auto& element : value.ToArray()) { SerializeToString(str, element); if (++i < value.ToArray().size()) str << ","; } str << "]"; break; } default: break; } } } // namespace std::string SerializeToString(const JsonValue& value) { std::stringstream result; SerializeToString(result, value); return result.str(); } } // namespace ls } // namespace torque } // namespace internal } // namespace v8