btclock_v3/lib/btclock/data_handler.hpp
2025-04-15 23:17:15 +02:00

114 lines
5.0 KiB
C++

#include <array>
#include <string>
#include <cmath>
#include <cstdint>
#include <vector>
#include <sstream>
#include <iomanip>
#include "utils.hpp"
const char CURRENCY_USD = '$';
const char CURRENCY_EUR = '[';
const char CURRENCY_GBP = ']';
const char CURRENCY_JPY = '^';
const char CURRENCY_AUD = '_';
const char CURRENCY_CAD = '`';
const char CURRENCY_ALL = 'L';
const char CURRENCY_BWP = 'P';
const char CURRENCY_HNL = 'L';
const char CURRENCY_HTG = 'G';
const char CURRENCY_MWK = 'K';
const char CURRENCY_MZN = 'M';
const char CURRENCY_NAD = 'N';
const char CURRENCY_PYG = 'G';
const char CURRENCY_RON = 'L';
const char CURRENCY_SZL = 'E';
const char CURRENCY_ZAR = 'R';
const char CURRENCY_ZMW = 'K';
// const char CURRENCY_NZD = '$';
// const char CURRENCY_SGD = '$';
// const char CURRENCY_HKD = '$';
// const char CURRENCY_BND = '$';
// const char CURRENCY_FJD = '$';
// const char CURRENCY_SBD = '$';
// const char CURRENCY_TTD = '$';
// const char CURRENCY_XCD = '$';
// const char CURRENCY_KYD = '$';
// const char CURRENCY_GYD = '$';
// const char CURRENCY_BBD = '$';
// const char CURRENCY_BSD = '$';
// const char CURRENCY_BMD = '$';
// const char CURRENCY_LRD = '$';
// const char CURRENCY_ZWL = '$';
// const char CURRENCY_ARS = '$';
// const char CURRENCY_CLP = '$';
// const char CURRENCY_COP = '$';
// const char CURRENCY_MXN = '$';
// const char CURRENCY_UYU = '$';
// const char CURRENCY_DOP = '$';
// const char CURRENCY_SVC = '$';
// const char CURRENCY_SRD = '$';
const std::string CURRENCY_CODE_USD = "USD";
const std::string CURRENCY_CODE_EUR = "EUR";
const std::string CURRENCY_CODE_GBP = "GBP";
const std::string CURRENCY_CODE_JPY = "JPY";
const std::string CURRENCY_CODE_AUD = "AUD";
const std::string CURRENCY_CODE_CAD = "CAD";
// const std::string CURRENCY_CODE_ALL = "ALL";
// const std::string CURRENCY_CODE_BWP = "BWP";
// const std::string CURRENCY_CODE_HNL = "HNL";
// const std::string CURRENCY_CODE_HTG = "HTG";
// const std::string CURRENCY_CODE_MWK = "MWK";
// const std::string CURRENCY_CODE_MZN = "MZN";
// const std::string CURRENCY_CODE_NAD = "NAD";
// const std::string CURRENCY_CODE_PYG = "PYG";
// const std::string CURRENCY_CODE_RON = "RON";
// const std::string CURRENCY_CODE_SZL = "SZL";
// const std::string CURRENCY_CODE_ZAR = "ZAR";
// const std::string CURRENCY_CODE_ZMW = "ZMW";
// const std::string CURRENCY_CODE_NZD = "NZD";
// const std::string CURRENCY_CODE_SGD = "SGD";
// const std::string CURRENCY_CODE_HKD = "HKD";
// const std::string CURRENCY_CODE_BND = "BND";
// const std::string CURRENCY_CODE_FJD = "FJD";
// const std::string CURRENCY_CODE_SBD = "SBD";
// const std::string CURRENCY_CODE_TTD = "TTD";
// const std::string CURRENCY_CODE_XCD = "XCD";
// const std::string CURRENCY_CODE_KYD = "KYD";
// const std::string CURRENCY_CODE_GYD = "GYD";
// const std::string CURRENCY_CODE_BBD = "BBD";
// const std::string CURRENCY_CODE_BSD = "BSD";
// const std::string CURRENCY_CODE_BMD = "BMD";
// const std::string CURRENCY_CODE_LRD = "LRD";
// const std::string CURRENCY_CODE_ZWL = "ZWL";
// const std::string CURRENCY_CODE_ARS = "ARS";
// const std::string CURRENCY_CODE_CLP = "CLP";
// const std::string CURRENCY_CODE_COP = "COP";
// const std::string CURRENCY_CODE_MXN = "MXN";
// const std::string CURRENCY_CODE_UYU = "UYU";
// const std::string CURRENCY_CODE_DOP = "DOP";
// const std::string CURRENCY_CODE_SVC = "SVC";
// const std::string CURRENCY_CODE_SRD = "SRD";
const std::string CURRENCY_CODE_UNKNOWN = " ";
// Public methods
std::array<std::string, NUM_SCREENS> parsePriceData(std::uint32_t price, char currency, bool useSuffixFormat = false, bool mowMode = false, bool shareDot = false);
std::array<std::string, NUM_SCREENS> parsePriceData(std::uint32_t price, const std::string& currencyCode, bool useSuffixFormat = false, bool mowMode = false, bool shareDot = false);
std::array<std::string, NUM_SCREENS> parseSatsPerCurrency(std::uint32_t price, char currencySymbol, bool withSatsSymbol);
std::array<std::string, NUM_SCREENS> parseSatsPerCurrency(std::uint32_t price, const std::string& currencyCode, bool withSatsSymbol);
std::array<std::string, NUM_SCREENS> parseBlockHeight(std::uint32_t blockHeight);
std::array<std::string, NUM_SCREENS> parseHalvingCountdown(std::uint32_t blockHeight, bool asBlocks);
std::array<std::string, NUM_SCREENS> parseMarketCap(std::uint32_t blockHeight, std::uint32_t price, char currencySymbol, bool bigChars);
std::array<std::string, NUM_SCREENS> parseBlockFees(std::uint16_t blockFees);
char getCurrencySymbol(char input);
std::string getCurrencyCode(char input);
char getCurrencyChar(const std::string& input);
// Private helper methods
namespace {
std::array<std::string, NUM_SCREENS> formatPriceData(std::uint32_t price, char currencySymbol, const std::string& currencyCode, bool useSuffixFormat, bool mowMode, bool shareDot, bool useSymbol = true);
std::array<std::string, NUM_SCREENS> formatSatsPerCurrency(std::uint32_t price, char currencySymbol, const std::string& currencyCode, bool withSatsSymbol, bool alwaysShowSats = false);
}