cosmentic

This commit is contained in:
Your Name 2025-04-21 20:49:38 +12:00
parent b954338cf5
commit 27e3e5fab3

View File

@ -1,8 +1,13 @@
#include "tableprint.hpp" #include "tableprint.hpp"
#include <iomanip> #include <iomanip>
#include <algorithm> #include <algorithm>
#include <locale>
#include <cwchar>
tableprint::tableprint() {} tableprint::tableprint() {
// Set locale for wide character support
std::setlocale(LC_ALL, "");
}
tableprint::~tableprint() {} tableprint::~tableprint() {}
@ -21,33 +26,55 @@ void tableprint::print() {
} }
} }
// Print header // Print top border
std::cout << "\033[1;36m"; // Cyan color for header std::wcout << L"\033[37m"; // Light grey color for borders
std::wcout << L"";
for (size_t i = 0; i < rows[0].size(); ++i) { 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) { 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 // Print rows
for (size_t row_idx = 1; row_idx < rows.size(); ++row_idx) { for (size_t row_idx = 1; row_idx < rows.size(); ++row_idx) {
const auto& row = rows[row_idx]; const auto& row = rows[row_idx];
std::wcout << L"";
for (size_t i = 0; i < row.size(); ++i) { for (size_t i = 0; i < row.size(); ++i) {
std::string cell = row[i]; std::string cell = row[i];
// Replace :tick: and :cross: with colored symbols // Replace :tick: and :cross: with colored symbols
if (cell == ":tick:") { 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:") { } 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 { } 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
} }