Dowser.Type.Range (Dowser.Client v0.5.0)

View Source

integer_range and long_range — the %{"gte" => _, "lte" => _} object form <-> an Elixir Range (first..last//1).

Only what a Range holds exactly is cast: integer gte and lte bounds, gte no greater than lte. Anything else is returned as it is stored — an open-ended range (one bound only), exclusive gt/lt bounds, non-integer bounds, and on the way out a Range whose step isn't 1.

iex> Dowser.Type.Range.load(%{"gte" => 1, "lte" => 10}, %{"type" => "integer_range"})
1..10

iex> Dowser.Type.Range.load(%{"gte" => 1}, %{"type" => "integer_range"})
%{"gte" => 1}

iex> Dowser.Type.Range.dump(1..10, %{"type" => "long_range"})
%{"gte" => 1, "lte" => 10}