Current section
Files
Jump to
Current section
Files
src/json_canvas@internal@encode@edge.erl
-module(json_canvas@internal@encode@edge).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([encode_edge_id/1, encode_side/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(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@internal@encode@node_id:encode_node_id(
erlang:element(3, Edge)
)},
{<<"toNode"/utf8>>,
json_canvas@internal@encode@node_id:encode_node_id(
erlang:element(6, Edge)
)}],
From_end = case erlang:element(5, Edge) of
with_arrow ->
{some, gleam@json:string(<<"arrow"/utf8>>)};
without_arrow ->
none
end,
To_end = case erlang:element(8, Edge) of
with_arrow ->
none;
without_arrow ->
{some, gleam@json:string(<<"none"/utf8>>)}
end,
Optional_entries = [{<<"fromSide"/utf8>>,
gleam@option:map(erlang:element(4, Edge), fun encode_side/1)},
{<<"fromEnd"/utf8>>, From_end},
{<<"toSide"/utf8>>,
gleam@option:map(erlang:element(7, Edge), fun encode_side/1)},
{<<"toEnd"/utf8>>, To_end},
{<<"color"/utf8>>,
gleam@option:map(erlang:element(9, Edge), fun gleam@json:string/1)},
{<<"label"/utf8>>,
gleam@option:map(erlang:element(10, Edge), fun gleam@json:string/1)}],
json_canvas@internal@encode@json_object:json_object(
Required_entries,
Optional_entries
).