defmodule SimpleBar do @spec print_to_so(any,integer,integer) :: any def print_to_so(item_to_return, number_done, total) do percent_done(number_done,total) |> progress_bar("") |> IO.write item_to_return end @spec percent_done(integer(),integer()) :: float def percent_done(number_done,total) do (number_done/total) * 100 end @spec progress_bar(float,any,any) :: char_list def progress_bar(0.0,str,percentage) do '\r#{percentage}% Done\n[#{str}]' end def progress_bar(remaining_per,str,percentage) do str = "#{str}=" progress_bar(remaining_per-1, str,percentage) end def progress_bar(remaining_per,str) do str = "#{str}=" percentage = remaining_per progress_bar(remaining_per-1, str,percentage) end end