Current section
Files
Jump to
Current section
Files
src/json_canvas@encode@edge.erl
-module(json_canvas@encode@edge).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([encode_edge_id/1, encode_side/1, encode_edge_label/1, encode_edge/1]).
-spec encode_edge_id(json_canvas@types:edge_id()) -> gleam@json:json().
encode_edge_id(Edge_id) ->
{edge_id, Id} = Edge_id,
gleam@json:string(Id).
-spec encode_side(json_canvas@types:side()) -> gleam@json:json().
encode_side(Side) ->
_pipe = case Side of
top ->
<<"top"/utf8>>;
right ->
<<"right"/utf8>>;
bottom ->
<<"bottom"/utf8>>;
left ->
<<"left"/utf8>>
end,
gleam@json:string(_pipe).
-spec encode_edge_label(json_canvas@types:edge_label()) -> gleam@json:json().
encode_edge_label(Edge_label) ->
{edge_label, Label} = Edge_label,
gleam@json:string(Label).
-spec encode_edge(json_canvas@types:edge()) -> gleam@json:json().
encode_edge(Edge) ->
Required_entries = [{<<"id"/utf8>>, encode_edge_id(erlang:element(2, Edge))},
{<<"fromNode"/utf8>>,
json_canvas@encode@node_id:encode_node_id(erlang:element(3, Edge))},
{<<"toNode"/utf8>>,
json_canvas@encode@node_id:encode_node_id(erlang:element(6, Edge))}],
From_side = begin
_pipe = erlang:element(4, Edge),
gleam@option:map(
_pipe,
fun(Side) -> {<<"fromSide"/utf8>>, encode_side(Side)} end
)
end,
From_end = case erlang:element(5, Edge) of
with_arrow ->
{some, {<<"fromEnd"/utf8>>, gleam@json:string(<<"arrow"/utf8>>)}};
without_arrow ->
none
end,
To_side = begin
_pipe@1 = erlang:element(7, Edge),
gleam@option:map(
_pipe@1,
fun(Side@1) -> {<<"toSide"/utf8>>, encode_side(Side@1)} end
)
end,
To_end = case erlang:element(8, Edge) of
with_arrow ->
none;
without_arrow ->
{some, {<<"toEnd"/utf8>>, gleam@json:string(<<"none"/utf8>>)}}
end,
Color@1 = begin
_pipe@2 = erlang:element(9, Edge),
gleam@option:map(
_pipe@2,
fun(Color) ->
{<<"color"/utf8>>, json_canvas@encode@color:encode_color(Color)}
end
)
end,
Label@1 = begin
_pipe@3 = erlang:element(10, Edge),
gleam@option:map(
_pipe@3,
fun(Label) -> {<<"label"/utf8>>, encode_edge_label(Label)} end
)
end,
Optional_entries = begin
_pipe@4 = [From_side, From_end, To_side, To_end, Color@1, Label@1],
gleam@option:values(_pipe@4)
end,
gleam@json:object(lists:append(Required_entries, Optional_entries)).