Dumbo.Encode (Dumbo v0.3.1)

Copy Markdown View Source

Low-level encoding functions for converting Elixir data types into PHP serialised iodata.

Summary

Functions

Encodes a binary string into PHP serialised iodata.

Encodes a float into PHP serialised iodata.

Encodes an integer into PHP serialised iodata.

Encodes a list into PHP serialised iodata representing an indexed array.

Encodes a map into PHP serialised iodata representing an associative array.

Encodes an object with a PHP class name and fields into PHP serialised iodata.

Types

opts()

@type opts() :: Dumbo.EncodeOpts.t()

Functions

binary(term, opts)

@spec binary(binary(), opts()) :: iodata()

Encodes a binary string into PHP serialised iodata.

Examples

iex> Dumbo.Encode.binary("hello", %Dumbo.EncodeOpts{})
["s:", "5", ~s':"', "hello", ~s'";']

float(term, opts)

@spec float(float(), opts()) :: iodata()

Encodes a float into PHP serialised iodata.

Floats are rendered the way PHP's serialize() does with the default serialize_precision = -1: the shortest round-trip representation, without a trailing .0 for integral values, and using scientific notation (e.g. 1.0E+25) only when the decimal exponent falls outside -4..16.

Examples

iex> Dumbo.Encode.float(3.14, %Dumbo.EncodeOpts{}) |> IO.iodata_to_binary()
"d:3.14;"

iex> Dumbo.Encode.float(1.0, %Dumbo.EncodeOpts{}) |> IO.iodata_to_binary()
"d:1;"

iex> Dumbo.Encode.float(1.0e25, %Dumbo.EncodeOpts{}) |> IO.iodata_to_binary()
"d:1.0E+25;"

integer(term, opts)

@spec integer(integer(), opts()) :: iodata()

Encodes an integer into PHP serialised iodata.

Examples

iex> Dumbo.Encode.integer(42, %Dumbo.EncodeOpts{})
["i:", "42", ?;]

iex> Dumbo.Encode.integer(-10, %Dumbo.EncodeOpts{})
["i:", "-10", ?;]

list(term, opts)

@spec list(list(), opts()) :: iodata()

Encodes a list into PHP serialised iodata representing an indexed array.

Examples

iex> Dumbo.Encode.list(["first", "second"], %Dumbo.EncodeOpts{}) |> IO.iodata_to_binary()
~s'a:2:{i:0;s:5:"first";i:1;s:6:"second";}'

iex> Dumbo.Encode.list([], %Dumbo.EncodeOpts{}) |> IO.iodata_to_binary()
"a:0:{}"

map(term, opts)

@spec map(map(), opts()) :: iodata()

Encodes a map into PHP serialised iodata representing an associative array.

Examples

iex> Dumbo.Encode.map(%{"foo" => "bar"}, %Dumbo.EncodeOpts{}) |> IO.iodata_to_binary()
~s'a:1:{s:3:"foo";s:3:"bar";}'

iex> Dumbo.Encode.map(%{}, %Dumbo.EncodeOpts{}) |> IO.iodata_to_binary()
"a:0:{}"

object(name, fields, opts)

@spec object(binary(), map() | [{term(), term()}], opts()) :: iodata()

Encodes an object with a PHP class name and fields into PHP serialised iodata.

Examples

iex> Dumbo.Encode.object("stdClass", %{"prop" => "value"}, %Dumbo.EncodeOpts{}) |> IO.iodata_to_binary()
~s'O:8:"stdClass":1:{s:4:"prop";s:5:"value";}'