Current section
Files
Jump to
Current section
Files
src/json_canvas@edge.erl
-module(json_canvas@edge).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([decode_edge/1]).
-export_type([edge_id/0, edge_label/0, edge/0]).
-type edge_id() :: {edge_id, binary()}.
-type edge_label() :: {edge_label, binary()}.
-type edge() :: {edge,
edge_id(),
json_canvas@types:node_id(),
gleam@option:option(json_canvas@edge@side:side()),
json_canvas@edge@endpoint_shape:endpoint_shape(),
json_canvas@types:node_id(),
gleam@option:option(json_canvas@edge@side:side()),
json_canvas@edge@endpoint_shape:endpoint_shape(),
gleam@option:option(json_canvas@types:color()),
gleam@option:option(edge_label())}.
-spec decode_edge(gleam@dynamic:dynamic_()) -> {ok, edge()} |
{error, list(gleam@dynamic:decode_error())}.
decode_edge(Dyn) ->
_pipe = Dyn,
(gleam@dynamic:decode9(
fun(Field@0, Field@1, Field@2, Field@3, Field@4, Field@5, Field@6, Field@7, Field@8) -> {edge, Field@0, Field@1, Field@2, Field@3, Field@4, Field@5, Field@6, Field@7, Field@8} end,
gleam@dynamic:field(<<"id"/utf8>>, fun(Dyn@1) -> _pipe@1 = Dyn@1,
_pipe@2 = gleam@dynamic:string(_pipe@1),
gleam@result:map(
_pipe@2,
fun(Field@0) -> {edge_id, Field@0} end
) end),
gleam@dynamic:field(<<"fromNode"/utf8>>, fun(Dyn@2) -> _pipe@3 = Dyn@2,
_pipe@4 = gleam@dynamic:string(_pipe@3),
gleam@result:map(
_pipe@4,
fun(Field@0) -> {node_id, Field@0} end
) end),
gleam@dynamic:optional_field(
<<"fromSide"/utf8>>,
fun json_canvas@edge@side:decode_side/1
),
fun(Dyn@3) -> _pipe@5 = Dyn@3,
_pipe@6 = (gleam@dynamic:optional_field(
<<"fromEnd"/utf8>>,
fun json_canvas@edge@endpoint_shape:decode_endpoint_shape/1
))(_pipe@5),
gleam@result:map(
_pipe@6,
fun(_capture) ->
gleam@option:unwrap(_capture, without_arrow)
end
) end,
gleam@dynamic:field(<<"toNode"/utf8>>, fun(Dyn@4) -> _pipe@7 = Dyn@4,
_pipe@8 = gleam@dynamic:string(_pipe@7),
gleam@result:map(
_pipe@8,
fun(Field@0) -> {node_id, Field@0} end
) end),
gleam@dynamic:optional_field(
<<"toSide"/utf8>>,
fun json_canvas@edge@side:decode_side/1
),
fun(Dyn@5) -> _pipe@9 = Dyn@5,
_pipe@10 = (gleam@dynamic:optional_field(
<<"toEnd"/utf8>>,
fun json_canvas@edge@endpoint_shape:decode_endpoint_shape/1
))(_pipe@9),
gleam@result:map(
_pipe@10,
fun(_capture@1) ->
gleam@option:unwrap(_capture@1, with_arrow)
end
) end,
gleam@dynamic:optional_field(
<<"color"/utf8>>,
fun(Dyn@6) -> _pipe@11 = Dyn@6,
_pipe@12 = gleam@dynamic:string(_pipe@11),
gleam@result:map(_pipe@12, fun(Field@0) -> {color, Field@0} end) end
),
gleam@dynamic:optional_field(
<<"label"/utf8>>,
fun(Dyn@7) -> _pipe@13 = Dyn@7,
_pipe@14 = gleam@dynamic:string(_pipe@13),
gleam@result:map(
_pipe@14,
fun(Field@0) -> {edge_label, Field@0} end
) end
)
))(_pipe).