ToonEx.Encode (toon_ex v1.1.0)

Copy Markdown View Source

Main encoder for TOON format.

This module coordinates the encoding process, dispatching to specialized encoders based on the type of value being encoded.

Summary

Functions

Encodes Elixir data to TOON format string.

Encodes Elixir data to TOON format string, raising on error.

Functions

encode(fragment, opts)

@spec encode(
  ToonEx.Types.input(),
  keyword()
) :: {:ok, String.t()} | {:error, ToonEx.EncodeError.t()}

Encodes Elixir data to TOON format string.

Options

  • :indent - Number of spaces for indentation (default: 2)
  • :delimiter - Delimiter for array values: "," | "\t" | "|" (default: ",")

  • :length_marker - Prefix for array length marker (default: nil)

Examples

iex> ToonEx.Encode.encode(%{"name" => "Alice", "age" => 30})
{:ok, "age: 30\nname: Alice"}

iex> ToonEx.Encode.encode(%{"tags" => ["elixir", "toon"]})
{:ok, "tags[2]: elixir,toon"}

iex> ToonEx.Encode.encode(nil)
{:ok, "null"}

iex> ToonEx.Encode.encode(%{"name" => "Alice"}, indent: 4)
{:ok, "name: Alice"}

encode!(fragment, opts)

@spec encode!(
  ToonEx.Types.input(),
  keyword()
) :: String.t()

Encodes Elixir data to TOON format string, raising on error.

Examples

iex> ToonEx.Encode.encode!(%{"name" => "Alice"})
"name: Alice"

iex> ToonEx.Encode.encode!(%{"tags" => ["a", "b"]})
"tags[2]: a,b"

encode_to_iodata!(fragment, opts)

@spec encode_to_iodata!(
  ToonEx.Types.input(),
  keyword()
) :: iodata()