Current section

Files

Jump to
clojerl src erl lang errors clojerl.IOError.erl
Raw

src/erl/lang/errors/clojerl.IOError.erl

-module('clojerl.IOError').
-include("clojerl.hrl").
-include("clojerl_int.hrl").
-behavior('clojerl.IEquiv').
-behavior('clojerl.IError').
-behavior('clojerl.IHash').
-behavior('clojerl.IStringable').
-export([?CONSTRUCTOR/1]).
-export([equiv/2]).
-export([message/1]).
-export([hash/1]).
-export([str/1]).
-type type() :: #{ ?TYPE => ?M
, message => binary()
}.
-spec ?CONSTRUCTOR(binary()) -> type().
?CONSTRUCTOR(Message) when is_binary(Message) ->
#{ ?TYPE => ?M
, message => Message
}.
%%------------------------------------------------------------------------------
%% Protocols
%%------------------------------------------------------------------------------
%% clojerl.IEquiv
equiv(#{?TYPE := ?M} = X, #{?TYPE := ?M} = X) ->
true;
equiv(_, _) ->
false.
%% clojerl.IError
message(#{?TYPE := ?M, message := Message}) ->
Message.
%% clojerl.IHash
hash(#{?TYPE := ?M} = Error) ->
erlang:phash2(Error).
%% clojerl.IStringable
str(#{?TYPE := ?M} = Error) ->
clj_utils:error_str(?M, message(Error)).