From a7149eaf526c7169436cbd46ed011cd54871d356 Mon Sep 17 00:00:00 2001 From: tastytea Date: Wed, 16 Mar 2022 21:39:46 +0100 Subject: [PATCH] Remove duplicated code --- src/main.cpp | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index c2a3bc2..3602805 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -53,27 +53,32 @@ int main() while (std::getline(std::cin, line)) { const auto line_nc{remove_colors(line)}; - // Only look at lines starting with + or - + // Only look at long enough lines starting with + or - if (line_nc.length() >= 2 && (line_nc[0] == '+' || line_nc[0] == '-')) { // Don't color +++ and --- lines if (line_nc.length() < 3 || (line_nc[2] != '+' && line_nc[2] != '-')) { - if (line_nc[1] == '+') + const auto color{[&line_nc]() -> std::string_view + { + if (line_nc[1] == '+') + { + return green; + } + if (line_nc[1] == '-') + { + return red; + } + return {}; + }()}; + if (!color.empty()) { const auto pos{get_start_pos(line)}; - std::cout << line.substr(0, pos) << green + std::cout << line.substr(0, pos) << color << line.substr(pos) << reset << '\n'; continue; } - if (line_nc[1] == '-') - { - const auto pos{get_start_pos(line)}; - std::cout << line.substr(0, pos) << red << line.substr(pos) - << reset << '\n'; - continue; - } } } std::cout << line << '\n';