Current section

Files

Jump to
geomeasure lib utils.ex
Raw

lib/utils.ex

defmodule GeoMeasure.Utils do
@moduledoc """
Contains utility functions to aid the correct handling of data in GeoMeasure.
"""
@doc """
Checks if neither of the tuple elements is nil.
"""
@doc since: "0.0.1"
@spec tuple_not_nil!(tuple) :: ArgumentError
def tuple_not_nil!(tpl) when is_tuple(tpl) do
tpl
|> Tuple.to_list()
|> Enum.map(fn x ->
if is_nil(x) do
raise ArgumentError, message: "Tuple contains nil value: {#{inspect(tpl)}}"
end
end)
end
@spec remove_m_values([{number, number, number} | {number, number, number, number}]) :: [
{number, number} | {number, number, number}
]
def remove_m_values(coords) when is_list(coords) do
Enum.map(coords, fn
{a, b, _c} -> {a, b}
{a, b, c, _d} -> {a, b, c}
_ -> raise ArgumentError, message: "Wrong tuple size: {#{inspect(coords)}}"
end)
end
end