Current section

Files

Jump to
beamoji src beamoji_translator.erl
Raw

src/beamoji_translator.erl

-module(beamoji_translator).
-export(['🐣'/1, '⏩'/2, '⏪'/2]).
-export(['🗣'/1]).
-type '🗣'() :: module().
-type '⚛'() :: atom().
-type '⚛️'() :: atom().
-type '🗺'() :: map().
-opaque '🫖'() :: #{'🗣' := '🗣'(), '🗺' := '🗺'()}.
-export_type(['⚛'/0, '⚛️'/0, '🗺'/0, '🫖'/0]).
-callback '🐣'() -> '🗺'().
-callback '⏩'('⚛'(), '🗺'()) -> '⚛️'().
-callback '⏪'('⚛️'(), '🗺'()) -> '⚛'().
-spec '🐣'('🗣'()) -> '🫖'().
'🐣'(Translator) ->
#{'🗣' => Translator, '🗺' => Translator:'🐣'()}.
-spec '⏩'('⚛'(), '🫖'()) -> '⚛️'().
'⏩'(UnquotedAtom, #{'🗣' := Translator, '🗺' := State}) ->
Translator:'⏩'(UnquotedAtom, State).
-spec '⏪'('⚛️'(), '🫖'()) -> '⚛'().
'⏪'(EmojifiedAtom, #{'🗣' := Translator, '🗺' := State}) ->
Translator:'⏪'(EmojifiedAtom, State).
-spec '🗣'('🫖'()) -> '🗣'().
'🗣'(#{'🗣' := Translator}) ->
Translator.