-module(json_canvas@edge@side). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export([decode_side/1]). -export_type([side/0]). -type side() :: top | right | bottom | left. -spec decode_side(gleam@dynamic:dynamic_()) -> {ok, side()} | {error, list(gleam@dynamic:decode_error())}. decode_side(Dyn) -> gleam@result:'try'(gleam@dynamic:string(Dyn), fun(Side) -> case Side of <<"top"/utf8>> -> {ok, top}; <<"right"/utf8>> -> {ok, right}; <<"bottom"/utf8>> -> {ok, bottom}; <<"left"/utf8>> -> {ok, left}; _ -> {error, [{decode_error, <<"top, right, bottom or left"/utf8>>, Side, []}]} end end).