Skip to content

Instantly share code, notes, and snippets.

@ijunaid8989
Created May 11, 2016 13:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ijunaid8989/65e22cb4b0813cacb6cfd0c3c1044f80 to your computer and use it in GitHub Desktop.
Save ijunaid8989/65e22cb4b0813cacb6cfd0c3c1044f80 to your computer and use it in GitHub Desktop.
doing code with "with"
defp validate_params(params) do
with :ok <- validate?("frequency", params["frequency"]),
:ok <- validate?("storage_duration", params["storage_duration"]),
:ok <- validate?("status", params["status"]),
do: :ok
end
def validate?("status", "on"), do: :ok
def validate?("status", "off"), do: :ok
def validate?("status", "on-scheduled"), do: :ok
def validate?("status" = key, _invalid), do: invalid(key)
def validate?(key, value) when is_integer(value), do: :ok
def validate?(key, value) when value in [nil, ""], do: invalid(key)
def validate?(key, value) when is_bitstring(value), do: validate?(key, to_integer(value))
def validate?(key, _invalid), do: invalid(key)
defp invalid(key), do: {:invalid, "The parameter '#{key}' isn't valid."}
defp to_integer(value) do
case Integer.parse(value) do
{number, _} -> number
_ -> :error
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment