View Source Chord.Delta.Formatter.Default (Chord v0.1.1)
Default implementation for delta formatting.
This module provides a straightforward and opinionated way to format deltas into a list of maps.
Each map describes a change to a specific key in the context, including metadata such as the action
performed (e.g., :added
, :modified
, :removed
) and the associated context_id
.
The formatting is intended to be extensible, allowing developers to substitute this formatter with a custom implementation by defining their own module and setting it in the application configuration.
Example
iex> delta = %{
...> a: %{action: :added, value: 1},
...> b: %{action: :modified, old_value: 2, value: 3},
...> c: %{action: :removed}
...> }
iex> context_id = "game:1"
iex> Chord.Delta.Formatter.Default.format(delta, context_id)
[
%{key: :a, action: :added, value: 1, context: "game:1"},
%{key: :b, action: :modified, old_value: 2, value: 3, context: "game:1"},
%{key: :c, action: :removed, context: "game:1"}
]
Summary
Functions
Formats the given delta into a standardized list of maps.
Functions
Formats the given delta into a standardized list of maps.
This implementation adds the context_id
to each change and formats changes as follows:
- For
:added
, includes the newvalue
. - For
:modified
, includes both theold_value
and the newvalue
. - For
:removed
, includes only thekey
andcontext_id
.
Parameters
delta
(map): The delta map representing changes to the context.context_id
(any): The context ID to associate with each change.
Returns
- (list of maps): A list of formatted changes.
Example
iex> delta = %{
...> a: %{action: :added, value: 1},
...> b: %{action: :modified, old_value: 2, value: 3},
...> c: %{action: :removed}
...> }
iex> Chord.Delta.Formatter.Default.format(delta, "game:1")
[
%{key: :a, action: :added, value: 1, context: "game:1"},
%{key: :b, action: :modified, old_value: 2, value: 3, context: "game:1"},
%{key: :c, action: :removed, context: "game:1"}
]