/* * Copyright (C) 2022 Riyyi * * SPDX-License-Identifier: MIT */ #include // size_t #include // setprecision #include // fixed #include // numeric_limits #include // stringstream #include #include #include "util/format/builder.h" namespace Util::Format { void Builder::putLiteral(std::string_view literal) { for (size_t i = 0; i < literal.length(); ++i) { putCharacter(literal[i]); if (literal[i] == '{' || literal[i] == '}') { ++i; } } } void Builder::putF32(float number, size_t precision) const { precision = (precision > std::numeric_limits::digits10) ? m_precision : precision; std::stringstream stream; stream << std::fixed << std::setprecision(precision) << number; std::string string = stream.str(); string = string.substr(0, string.find_first_of('0', string.find('.'))); m_builder << string; } void Builder::putF64(double number, size_t precision) const { precision = (precision > std::numeric_limits::digits10) ? m_precision : precision; std::stringstream stream; stream << std::fixed << std::setprecision(precision) << number; std::string string = stream.str(); string = string.substr(0, string.find_first_of('0', string.find('.'))); m_builder << string; } void Builder::resetSpecifiers() { setPrecision(); } } // namespace Util::Format