-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))().