/* * Copyright 2024 WebAssembly Community Group participants * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include "support/string.h" namespace wasm::String { std::ostream& printEscaped(std::ostream& os, std::string_view str) { os << '"'; for (unsigned char c : str) { switch (c) { case '\t': os << "\\t"; break; case '\n': os << "\\n"; break; case '\r': os << "\\r"; break; case '"': os << "\\\""; break; case '\'': os << "\\'"; break; case '\\': os << "\\\\"; break; default: { if (c >= 32 && c < 127) { os << c; } else { os << std::hex << '\\' << (c / 16) << (c % 16) << std::dec; } } } } return os << '"'; } } // namespace wasm::String