From 27e3e5fab3728c3aaa3e1270b3405cee45948cb9 Mon Sep 17 00:00:00 2001 From: Your Name Date: Mon, 21 Apr 2025 20:49:38 +1200 Subject: [PATCH] cosmentic --- src/tableprint.cpp | 51 +++++++++++++++++++++++++++++++++++----------- 1 file changed, 39 insertions(+), 12 deletions(-) diff --git a/src/tableprint.cpp b/src/tableprint.cpp index 23a5499..b5710db 100644 --- a/src/tableprint.cpp +++ b/src/tableprint.cpp @@ -1,8 +1,13 @@ #include "tableprint.hpp" #include #include +#include +#include -tableprint::tableprint() {} +tableprint::tableprint() { + // Set locale for wide character support + std::setlocale(LC_ALL, ""); +} tableprint::~tableprint() {} @@ -21,33 +26,55 @@ void tableprint::print() { } } - // Print header - std::cout << "\033[1;36m"; // Cyan color for header + // Print top border + std::wcout << L"\033[37m"; // Light grey color for borders + std::wcout << L"┌"; for (size_t i = 0; i < rows[0].size(); ++i) { - std::cout << std::setw(col_widths[i] + 2) << std::left << rows[0][i]; + std::wcout << std::wstring(col_widths[i] + 2, L'─'); + if (i < rows[0].size() - 1) std::wcout << L"┬"; } - std::cout << "\033[0m" << std::endl; // Reset color + std::wcout << L"┐" << std::endl; - // Print separator + // Print header + std::wcout << L"│"; + std::wcout << L"\033[1;36m"; // Cyan color for header for (size_t i = 0; i < rows[0].size(); ++i) { - std::cout << std::string(col_widths[i] + 2, '-'); + std::wcout << L" " << std::setw(col_widths[i]) << std::left << std::wstring(rows[0][i].begin(), rows[0][i].end()) << L" "; + std::wcout << L"\033[37m│"; // Reset to border color } - std::cout << std::endl; + std::wcout << std::endl; + + // Print header separator + std::wcout << L"├"; + for (size_t i = 0; i < rows[0].size(); ++i) { + std::wcout << std::wstring(col_widths[i] + 2, L'─'); + if (i < rows[0].size() - 1) std::wcout << L"┼"; + } + std::wcout << L"┤" << std::endl; // Print rows for (size_t row_idx = 1; row_idx < rows.size(); ++row_idx) { const auto& row = rows[row_idx]; + std::wcout << L"│"; for (size_t i = 0; i < row.size(); ++i) { std::string cell = row[i]; // Replace :tick: and :cross: with colored symbols if (cell == ":tick:") { - std::cout << "\033[1;32m" << std::setw(col_widths[i] + 2) << std::left << "✓" << "\033[0m"; + std::wcout << L" " << L"\033[1;32m" << std::setw(col_widths[i]) << std::left << L"✓" << L"\033[37m" << L" │"; } else if (cell == ":cross:") { - std::cout << "\033[1;31m" << std::setw(col_widths[i] + 2) << std::left << "✗" << "\033[0m"; + std::wcout << L" " << L"\033[1;31m" << std::setw(col_widths[i]) << std::left << L"✗" << L"\033[37m" << L" │"; } else { - std::cout << std::setw(col_widths[i] + 2) << std::left << cell; + std::wcout << L" " << std::setw(col_widths[i]) << std::left << std::wstring(cell.begin(), cell.end()) << L" │"; } } - std::cout << std::endl; + std::wcout << std::endl; } + + // Print bottom border + std::wcout << L"└"; + for (size_t i = 0; i < rows[0].size(); ++i) { + std::wcout << std::wstring(col_widths[i] + 2, L'─'); + if (i < rows[0].size() - 1) std::wcout << L"┴"; + } + std::wcout << L"┘" << L"\033[0m" << std::endl; // Reset color } \ No newline at end of file