Railyard v0.1.0 Railyard.Util.BlockMap View Source

Provides a DSL for creating block templates, which can be hydrated with parameters.

Link to this section Summary

Functions

Creates a DSL block, which can later be evaluated to produce a map.

Evaluates a block that was previously created with create_block.

Evaluates a single property out of a block.

Link to this section Functions

Link to this macro

create_block(list) View Source (macro)

Creates a DSL block, which can later be evaluated to produce a map.

Examples

iex> Railyard.Util.BlockMap.create_block do
...>   prop "value"
...> end
...> |> Railyard.Util.BlockMap.eval_block
[prop: "value"]
Link to this function

eval_block(context, bindings \\ []) View Source

Evaluates a block that was previously created with create_block.

Examples

iex> Railyard.Util.BlockMap.create_block do
...>   prop "value"
...>   prop2 parameters.some_parameter
...>   prop3 do
...>     "anything"
...>   end
...> end
...> |> Railyard.Util.BlockMap.eval_block(parameters: %{some_parameter: 1234})
[prop: "value", prop2: 1234, prop3: "anything"]
Link to this function

eval_property(context, bindings) View Source

Link to this function

eval_property(context, property, bindings) View Source

Evaluates a single property out of a block.

Examples

iex> Railyard.Util.BlockMap.create_block do
...>   prop test: "value", test2: "value2"
...>   prop2 "value2"
...> end
...> |> Railyard.Util.BlockMap.eval_property(:prop, [])
{:prop, [test: "value", test2: "value2"]}

iex> Railyard.Util.BlockMap.create_block do
...>   prop "value"
...> end
...> |> Railyard.Util.BlockMap.eval_property(:prop, [])
{:prop, "value"}

iex> Railyard.Util.BlockMap.create_block do
...>   prop "value", "value2"
...> end
...> |> Railyard.Util.BlockMap.eval_property(:prop, [])
{:prop, ["value", "value2"]}

iex> Railyard.Util.BlockMap.create_block do
...>   prop "value", "value2"
...> end
...> |> Railyard.Util.BlockMap.eval_property(:prop2, [])
{:error, "No such property prop2"}