posexional v0.5.4 Posexional.Row
this module represent a row in a positional file
Link to this section Summary
Functions
merge fields from another row
finds a field in the row by its name
calculate the row total length based on the passed fields
Given a row and a field name calculate the field offset
read a positional file row and convert it back to a keyword list of values
outputs a row
Link to this section Functions
Link to this function
add_field(row, field)
Link to this function
add_fields(row, fields)
Link to this function
fields_from(to, row)
merge fields from another row
Link to this function
find_field(row, name)
finds a field in the row by its name
Examples
iex> Posexional.Row.new(:row_test, []) |> Posexional.Row.find_field(:test)
nil
iex> Posexional.Row.new(:row_test, [Posexional.Field.Value.new(:test, 5)]) |> Posexional.Row.find_field(:test)
Posexional.Field.Value.new(:test, 5)
iex> Posexional.Row.new(:row_test, [Posexional.Field.Value.new(:test, 5), Posexional.Field.Value.new(:test2, 5)])
...> |> Posexional.Row.find_field(:test2)
Posexional.Field.Value.new(:test2, 5)
Link to this function
length(row)
calculate the row total length based on the passed fields
Examples
iex> Posexional.Row.new(:row_test, [])
...> |> Posexional.Row.length
0
iex> Posexional.Row.new(:row_test, [Posexional.Field.Value.new(:test1, 10), Posexional.Field.Value.new(:test2, 20)])
...> |> Posexional.Row.length
30
Link to this function
manage_counters(row, counters)
Link to this function
new(name, fields, opts \\ [])
Link to this function
offset(row, field_name)
Given a row and a field name calculate the field offset
Examples
iex> Posexional.Row.new(:test, [Posexional.Field.Value.new(:test1, 10), Posexional.Field.Value.new(:test2, 20)])
...> |> Posexional.Row.offset(:test1)
1
iex> Posexional.Row.new(:test, [Posexional.Field.Value.new(:test1, 10), Posexional.Field.Value.new(:test2, 20)])
...> |> Posexional.Row.offset(:test2)
11
iex> Posexional.Row.new(:test, [Posexional.Field.Value.new(:test1, 10), Posexional.Field.Value.new(:test2, 20)])
...> |> Posexional.Row.offset(:test_not_existent)
** (ArgumentError) the field test_not_existent doesn't exists
iex> Posexional.Row.new(:test, [])
...> |> Posexional.Row.offset(:test)
nil
Link to this function
read(row, content)
read a positional file row and convert it back to a keyword list of values
Link to this function
write(row, values)
outputs a row
Examples
iex> Posexional.Row.new(:row_test, []) |> Posexional.Row.write([test: "test"])
{:ok, ""}
iex> Posexional.Row.new(:row_test, [Posexional.Field.Value.new(:test1, 5), Posexional.Field.Value.new(:test2, 10)])
...> |> Posexional.Row.write([test1: "test1", test2: "test2"])
{:ok, "test1test2 "}
iex> Posexional.Row.new(:row_test, [Posexional.Field.Value.new(:test1, 5), Posexional.Field.Value.new(:test2, 10)])
...> |> Posexional.Row.write([test1: "test1", non_existent: "test2"])
{:ok, "test1 "}
iex> Posexional.Row.new(:row_test, [Posexional.Field.Value.new(:test1, 6)])
...> |> Posexional.Row.write([test1: "test1", not_configured: "test2"])
{:ok, "test1 "}
iex> Posexional.Row.new(:row_test, [Posexional.Field.Value.new(:test1, 5)])
...> |> Posexional.Row.write([not_configured: "test2", another: "test3"])
{:ok, " "}
iex> Posexional.Row.new(:row_test, [Posexional.Field.Empty.new(5)])
...> |> Posexional.Row.write([])
{:ok, " "}