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
@type opts() :: Dumbo.EncodeOpts.t()
Functions
Encodes a binary string into PHP serialised iodata.
Examples
iex> Dumbo.Encode.binary("hello", %Dumbo.EncodeOpts{})
["s:", "5", ~s':"', "hello", ~s'";']
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;"
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", ?;]
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:{}"
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:{}"
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";}'