diff --git a/lib/display.ex b/lib/display.ex index b3ae1c2..1f57c16 100644 --- a/lib/display.ex +++ b/lib/display.ex @@ -56,11 +56,13 @@ defmodule Display do end defp format(failure, module, name) do + progress_bar = ProgressBar.progress_bar(Tracker.summarize()) + progress_bar_underline = String.duplicate("-", String.length(progress_bar)) """ #{Intro.intro(module, Tracker.visited())} Now meditate upon #{format_module(module)} - #{ProgressBar.progress_bar(Tracker.summarize())} - ---------------------------------------- + #{progress_bar} + #{progress_bar_underline} #{name} #{Failure.format_failure(failure)} """ diff --git a/lib/display/progress_bar.ex b/lib/display/progress_bar.ex index 1c029ba..71c1cdc 100644 --- a/lib/display/progress_bar.ex +++ b/lib/display/progress_bar.ex @@ -4,14 +4,19 @@ defmodule Display.ProgressBar do def progress_bar(%{current: current, total: total}) do arrow = calculate_progress(current, total) |> build_arrow + progress_percentage = calculate_percentage(current, total) - "|" <> String.pad_trailing(arrow, @progress_bar_length) <> "| #{current} of #{total}" + "|" <> String.pad_trailing(arrow, @progress_bar_length) <> "| #{current} of #{total} -> #{progress_percentage}% complete" end defp calculate_progress(current, total) do round(current / total * @progress_bar_length) end + defp calculate_percentage(current, total) do + Float.round(current / total * 100, 1) + end + defp build_arrow(0), do: "" defp build_arrow(length) do