-module(gurka_formatter_compact). -include("gurka.hrl"). -export([format/3]). -spec format(Status, Result, Opts) -> io_lib:chars() when Status :: ok | fail | error, Result :: result() | file:posix() | badarg | terminated | system_limit, Opts :: [term()]. format(Status, Result, Opts) -> case proplists:get_value(file, Opts) of undefined -> format_steps(Result); File when Status == ok -> io_lib:format("\e[1;32m~s ~s\e[0m~n", ["PASS", File]) ++ format_steps(Result); File -> io_lib:format("\e[1;31m~s ~s\e[0m~n", ["FAIL", File]) ++ format_steps(Result) end. format_steps([]) -> []; format_steps([Step | Steps]) when is_list(Step) -> format_steps(Step) ++ format_steps(Steps); format_steps([{ok, _} | Steps]) -> format_steps(Steps); format_steps([{Result, #step{row = Row}} | Steps]) -> io_lib:format("\e[0;31m~B: ~p\e[0m~n", [Row, Result]) ++ format_steps(Steps).