Packages
altworx_runbox
21.1.0
25.0.0
24.0.0
23.1.1
23.1.0
23.0.0
22.2.0
22.1.0
22.0.0
21.2.0
21.1.2
21.1.1
21.1.0
21.0.0
20.0.0
19.0.0
18.0.0
17.2.0
17.1.0
17.0.1
17.0.0
16.2.0
16.1.0
16.0.0
15.0.0
14.1.0
14.0.1
14.0.0
13.0.3
13.0.2
13.0.1
13.0.0
12.1.0
12.0.0
11.0.1
11.0.0
10.0.0
9.0.0
8.0.0
7.0.1
7.0.0
6.0.0
5.0.0
4.0.0
3.0.0
2.1.0
2.0.0
1.4.1
1.4.0
1.3.0
1.2.0
1.1.0
1.0.0
0.1.3
0.1.2
0.1.1
0.1.0
Runbox is a library for running Altworx scenarios.
Current section
Files
Jump to
Current section
Files
lib/runbox/runtime/stage/unit.ex
defmodule Runbox.Runtime.Stage.Unit do
@moduledoc """
Struct representing a unit.
"""
alias __MODULE__, as: U
@enforce_keys [:id]
defstruct id: "",
state: %{},
attributes: %{}
@type t :: %U{
id: binary(),
state: any(),
attributes: map()
}
@spec new(id :: binary(), state :: any(), attributes :: map()) :: t()
def new(id, state, attributes) do
%U{id: id, state: state, attributes: attributes}
end
@spec id(t()) :: binary()
def id(%U{id: id}), do: id
@spec state(t()) :: any()
def state(%U{state: state}), do: state
@spec set_state(t(), state :: any()) :: t()
def set_state(%U{} = u, state), do: %U{u | state: state}
@spec attributes(t()) :: map()
def attributes(%U{attributes: attributes}), do: attributes
end