Packages
riptide
0.5.0-beta7
0.5.2
0.5.1
0.5.0-beta9
0.5.0-beta8
0.5.0-beta7
0.5.0-beta6
0.5.0-beta5
0.5.0-beta4
0.5.0-beta3
0.5.0-beta2
0.5.0-beta11
0.5.0-beta10
0.5.0-beta
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.13
0.3.12
0.3.11
0.3.10
0.3.9
0.3.8
0.3.7
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.3.0-bd63a38
0.2.79
0.2.78
0.2.74
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.15
0.1.14
0.1.13
0.1.12
0.1.11
0.1.10
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
A data first framework for building realtime applications
Current section
Files
Jump to
Current section
Files
lib/riptide/schema/types.ex
defmodule Riptide.Schema.Type.Number do
def validate(item, _opts) when is_number(item), do: :ok
def validate(_item, _opts), do: {:error, :not_number}
end
defmodule Riptide.Schema.Type.String do
def validate(item, _opts) when is_binary(item), do: :ok
def validate(_item, _opts), do: {:error, :not_string}
end
defmodule Riptide.Schema.Type.Map do
def validate(item, opts) when is_map(item) do
{mod, sub_opts} =
opts
|> Keyword.get(:type, Riptide.Schema.Type.Any)
|> Riptide.Schema.mod_opts()
item
|> Enum.map(fn {path, value} ->
Riptide.Schema.validate_child([path], value, mod, sub_opts)
end)
|> List.flatten()
|> case do
[] ->
:ok
result ->
{:error, result}
end
end
def validate(_item, _opts), do: {:error, :not_map}
end
defmodule Riptide.Schema.Type.Any do
def validate(_item, _opts), do: :ok
end
defmodule Riptide.Schema.Type.Enum do
def validate(item, opts) do
opts
|> Keyword.get(:values, [])
|> Enum.member?(item)
|> case do
true -> :ok
false -> {:error, :invalid_value}
end
end
end
defmodule Riptide.Schema.Type.Boolean do
def validate(item, _opts) when is_boolean(item), do: :ok
def validate(_item, _opts), do: {:error, :not_boolean}
end
defmodule Riptide.Schema.Type.List do
def validate(item, opts) do
{mod, sub_opts} =
opts
|> Keyword.get(:type, Riptide.Schema.Type.Any)
|> Riptide.Schema.mod_opts()
item
|> Stream.with_index()
|> Enum.map(fn {value, index} ->
Riptide.Schema.validate_child([index], value, mod, sub_opts)
end)
|> List.flatten()
|> case do
[] ->
:ok
result ->
{:error, result}
end
end
end