Current section
Files
Jump to
Current section
Files
src/munch@internal@hash.erl
-module(munch@internal@hash).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/munch/internal/hash.gleam").
-export([from/3, update/2, finish/1]).
-export_type([hash/0]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
?MODULEDOC(false).
-opaque hash() :: {hash, fun((bitstring()) -> hash()), fun(() -> bitstring())}.
-file("src/munch/internal/hash.gleam", 5).
?DOC(false).
-spec from(DKU, fun((DKU, bitstring()) -> DKU), fun((DKU) -> bitstring())) -> hash().
from(State, Update, Finish) ->
Update@1 = fun(Bits) -> from(Update(State, Bits), Update, Finish) end,
Finish@1 = fun() -> Finish(State) end,
{hash, Update@1, Finish@1}.
-file("src/munch/internal/hash.gleam", 15).
?DOC(false).
-spec update(hash(), bitstring()) -> hash().
update(Hash, Bits) ->
(erlang:element(2, Hash))(Bits).
-file("src/munch/internal/hash.gleam", 19).
?DOC(false).
-spec finish(hash()) -> bitstring().
finish(Hash) ->
(erlang:element(3, Hash))().