Packages

Utilities for working with the UBER hypermedia format

Current section

Files

Jump to
uber lib uber.ex
Raw

lib/uber.ex

defmodule Uber do
@moduledoc """
Provides structures to represent and validate UBER documents, as set
forth in the specification at http://uberhypermedia.org/.
"""
defstruct data: [],
error: [],
profile: nil
@doc """
Returns [] on valid input, or a list of {field, error_reason}.
"""
def validate(uber) do
import Uber.Validations
validate_string(uber, [:profile]) ++
validate_list_of_type(uber, [:data], Uber.Data) ++
validate_list_of_type(uber, [:error], Uber.Error)
end
@spec add_data(Uber, [Uber.Data]) :: Uber
def add_data(uber, data) do
%Uber{uber | data: uber.data ++ data}
end
@spec add_error(Uber, [Uber.Error]) :: Uber
def add_error(uber, error) do
%Uber{uber | error: uber.error ++ error}
end
end