From: Joel Rosdahl Date: Wed, 11 Aug 2021 10:29:22 +0000 (+0200) Subject: enhance: Add TextTable support for right-aligned integers X-Git-Tag: v4.4~22 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ca809f98c1d15ec268e3f34713188cd0d37c3c82;p=thirdparty%2Fccache.git enhance: Add TextTable support for right-aligned integers --- diff --git a/src/util/TextTable.cpp b/src/util/TextTable.cpp index 809b1f854..cc4f9c09e 100644 --- a/src/util/TextTable.cpp +++ b/src/util/TextTable.cpp @@ -69,10 +69,25 @@ TextTable::render() const return result; } -TextTable::Cell::Cell(const std::string& text) : m_text(text) +TextTable::Cell::Cell(const std::string& text) + : m_text(text), + m_right_align(false) { } +TextTable::Cell::Cell(const uint64_t number) + : m_text(fmt::format("{}", number)), + m_right_align(true) +{ +} + +TextTable::Cell& +TextTable::Cell::left_align() +{ + m_right_align = false; + return *this; +} + TextTable::Cell& TextTable::Cell::right_align() { diff --git a/src/util/TextTable.hpp b/src/util/TextTable.hpp index a6d19407b..4c021ddd0 100644 --- a/src/util/TextTable.hpp +++ b/src/util/TextTable.hpp @@ -31,7 +31,9 @@ public: { public: Cell(const std::string& text); + Cell(uint64_t number); + Cell& left_align(); Cell& right_align(); private: diff --git a/unittest/test_util_TextTable.cpp b/unittest/test_util_TextTable.cpp index 143509594..1793e67c9 100644 --- a/unittest/test_util_TextTable.cpp +++ b/unittest/test_util_TextTable.cpp @@ -48,8 +48,8 @@ TEST_CASE("TextTable") SUBCASE("1x2") { table.add_row({{"a"}}); - table.add_row({{"b"}}); - CHECK(table.render() == "a\nb\n"); + table.add_row({1}); + CHECK(table.render() == "a\n1\n"); } SUBCASE("3 + 2") @@ -61,6 +61,28 @@ TEST_CASE("TextTable") "aa bbb\n")); } + SUBCASE("strings and numbers") + { + table.add_row({{"a"}, 123, {"cc"}}); + table.add_row({{"aa"}, 4, {"ccc"}}); + table.add_row({{"aaa"}, 56, {"c"}}); + CHECK(table.render() + == ("a 123 cc\n" + "aa 4 ccc\n" + "aaa 56 c\n")); + } + + SUBCASE("left align") + { + table.add_row({{"a"}, 123, {"cc"}}); + table.add_row({{"aa"}, C(4).left_align(), {"ccc"}}); + table.add_row({{"aaa"}, 56, {"c"}}); + CHECK(table.render() + == ("a 123 cc\n" + "aa 4 ccc\n" + "aaa 56 c\n")); + } + SUBCASE("right align") { table.add_row({{"a"}, {"bbb"}, {"cc"}});