Packages
reactor
0.15.6
1.0.2
1.0.1
1.0.0
0.17.0
0.16.0
0.15.6
0.15.5
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.0
0.13.3
0.13.2
0.13.1
0.13.0
0.12.1
0.12.0
0.11.0
0.10.3
0.10.2
0.10.1
0.10.0
0.9.1
0.9.0
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.0
0.6.0
0.5.2
0.5.1
0.5.0
0.4.1
0.4.0
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.0
An asynchronous, graph-based execution engine
Current section
Files
Jump to
Current section
Files
lib/reactor/mermaid/argument.ex
defmodule Reactor.Mermaid.Argument do
@moduledoc false
import Reactor.Mermaid.Utils
alias Reactor.{Argument, Mermaid.Node}
require Argument
@behaviour Reactor.Mermaid
@doc false
def to_mermaid(argument, options) when Argument.is_from_value(argument) do
target_id =
options
|> Keyword.fetch!(:target_id)
source_id =
argument.source.value
|> mermaid_id(:value)
{:ok,
%Node{
pre: [
source_id,
"{{\"`",
md_escape(inspect(argument.source.value, pretty: true)),
"`\"}}\n",
do_argument_link(source_id, target_id, argument, options)
]
}}
end
def to_mermaid(argument, options) when Argument.is_from_input(argument) do
target_id =
options
|> Keyword.fetch!(:target_id)
source_id =
{options[:reactor_id], argument.source.name}
|> mermaid_id(:input)
content =
source_id
|> do_argument_link(target_id, argument, options)
{:ok, %Node{pre: content}}
end
def to_mermaid(argument, options) do
target_id =
options
|> Keyword.fetch!(:target_id)
source_id =
{options[:reactor_id], argument.source.name}
|> mermaid_id(:step)
content =
source_id
|> do_argument_link(target_id, argument, options)
{:ok, %Node{pre: content}}
end
defp do_argument_link(source_id, target_id, argument, options) do
if options[:describe?] && is_binary(argument.description) do
"#{source_id} -->|#{name(argument.name)} -- #{argument.description}|#{target_id}\n"
else
"#{source_id} -->|#{name(argument.name)}|#{target_id}\n"
end
end
end