Current section

Files

Jump to
json_canvas src json_canvas@internal@decode@node.erl
Raw

src/json_canvas@internal@decode@node.erl

-module(json_canvas@internal@decode@node).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([decode_group_background_style/1, decode_node/1]).
-spec decode_group_background_style(gleam@dynamic:dynamic_()) -> {ok,
json_canvas@types:group_background_style()} |
{error, list(gleam@dynamic:decode_error())}.
decode_group_background_style(Dyn) ->
gleam@result:'try'(gleam@dynamic:string(Dyn), fun(Style) -> case Style of
<<"cover"/utf8>> ->
{ok, cover};
<<"ratio"/utf8>> ->
{ok, ratio};
<<"repeat"/utf8>> ->
{ok, repeat};
_ ->
{error,
[{decode_error,
<<"cover, ratio or repeat"/utf8>>,
Style,
[]}]}
end end).
-spec decode_node(gleam@dynamic:dynamic_()) -> {ok, json_canvas@types:node_()} |
{error, list(gleam@dynamic:decode_error())}.
decode_node(Dyn) ->
gleam@result:'try'(
json_canvas@internal@generic_node:decode_generic_node(Dyn),
fun(Node) -> case erlang:element(3, Node) of
text_node_type ->
gleam@result:'try'(
(gleam@dynamic:field(
<<"text"/utf8>>,
fun gleam@dynamic:string/1
))(Dyn),
fun(Text) ->
{ok,
{text_node,
erlang:element(2, Node),
erlang:element(4, Node),
erlang:element(5, Node),
erlang:element(6, Node),
erlang:element(7, Node),
erlang:element(8, Node),
Text}}
end
);
file_node_type ->
gleam@result:'try'(
begin
_pipe = Dyn,
(gleam@dynamic:decode2(
fun(Path, Subpath) -> {Path, Subpath} end,
gleam@dynamic:field(
<<"path"/utf8>>,
fun gleam@dynamic:string/1
),
gleam@dynamic:optional_field(
<<"subpath"/utf8>>,
fun gleam@dynamic:string/1
)
))(_pipe)
end,
fun(_use0) ->
{Path@1, Subpath@1} = _use0,
{ok,
{file_node,
erlang:element(2, Node),
erlang:element(4, Node),
erlang:element(5, Node),
erlang:element(6, Node),
erlang:element(7, Node),
erlang:element(8, Node),
Path@1,
Subpath@1}}
end
);
link_node_type ->
gleam@result:'try'(
(gleam@dynamic:field(
<<"url"/utf8>>,
fun gleam@dynamic:string/1
))(Dyn),
fun(Url) ->
{ok,
{link_node,
erlang:element(2, Node),
erlang:element(4, Node),
erlang:element(5, Node),
erlang:element(6, Node),
erlang:element(7, Node),
erlang:element(8, Node),
Url}}
end
);
group_node_type ->
gleam@result:'try'(
begin
_pipe@1 = Dyn,
(gleam@dynamic:decode3(
fun(Label, Background, Background_style) ->
{Label, Background, Background_style}
end,
gleam@dynamic:optional_field(
<<"label"/utf8>>,
fun gleam@dynamic:string/1
),
gleam@dynamic:optional_field(
<<"background"/utf8>>,
fun gleam@dynamic:string/1
),
gleam@dynamic:optional_field(
<<"background_style"/utf8>>,
fun decode_group_background_style/1
)
))(_pipe@1)
end,
fun(_use0@1) ->
{Label@1, Background@1, Background_style@1} = _use0@1,
{ok,
{group_node,
erlang:element(2, Node),
erlang:element(4, Node),
erlang:element(5, Node),
erlang:element(6, Node),
erlang:element(7, Node),
erlang:element(8, Node),
Label@1,
Background@1,
Background_style@1}}
end
)
end end
).