Dumbo.Encode (Dumbo v0.2.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.

Examples

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

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";}'