27 lines
601 B
Elixir
27 lines
601 B
Elixir
defmodule RDF.Boolean do
|
|
@moduledoc """
|
|
`RDF.Datatype` for XSD boolean.
|
|
"""
|
|
|
|
use RDF.Datatype, id: RDF.Datatype.NS.XSD.boolean
|
|
|
|
|
|
def convert(value, _) when is_boolean(value), do: value
|
|
|
|
def convert(value, opts) when is_binary(value) do
|
|
with normalized_value = String.downcase(value) do
|
|
cond do
|
|
normalized_value in ~W[true 1] -> true
|
|
normalized_value in ~W[false 0] -> false
|
|
true ->
|
|
super(value, opts)
|
|
end
|
|
end
|
|
end
|
|
|
|
def convert(1, _), do: true
|
|
def convert(0, _), do: false
|
|
|
|
def convert(value, opts), do: super(value, opts)
|
|
|
|
end
|