/* * Copyright (c) 2020, Itamar S. * Copyright (c) 2021, Mustafa Quraish * Copyright (c) 2023, Shannon Booth * * SPDX-License-Identifier: BSD-2-Clause */ #include "Format.h" #include #include #include namespace Diff { ErrorOr write_unified_header(StringView old_path, StringView new_path, Stream& stream) { TRY(stream.write_formatted("--- {}\n", old_path)); TRY(stream.write_formatted("+++ {}\n", new_path)); return {}; } ErrorOr write_unified(Hunk const& hunk, Stream& stream, ColorOutput color_output) { TRY(stream.write_formatted("{}\n", hunk.location)); if (color_output == ColorOutput::Yes) { for (auto const& line : hunk.lines) { if (line.operation == Line::Operation::Addition) TRY(stream.write_formatted("\033[32;1m{}\033[0m\n", line)); else if (line.operation == Line::Operation::Removal) TRY(stream.write_formatted("\033[31;1m{}\033[0m\n", line)); else TRY(stream.write_formatted("{}\n", line)); } } else { for (auto const& line : hunk.lines) TRY(stream.write_formatted("{}\n", line)); } return {}; } }