Add value type specs for RDF.Datatype

This commit is contained in:
rustra 2020-03-03 22:36:11 +01:00
parent 3da72f9e6a
commit 08b4a44b13
9 changed files with 25 additions and 11 deletions

View file

@ -7,6 +7,8 @@ defmodule RDF.Boolean do
import RDF.Literal.Guards
@type value :: boolean
@impl RDF.Datatype
def convert(value, opts)

View file

@ -7,6 +7,8 @@ defmodule RDF.Date do
import RDF.Literal.Guards
@type value :: Date.t | {Date.t, String.t}
@grammar ~r/\A(-?\d{4}-\d{2}-\d{2})((?:[\+\-]\d{2}:\d{2})|UTC|GMT|Z)?\Z/
@xsd_datetime RDF.Datatype.NS.XSD.dateTime

View file

@ -7,6 +7,8 @@ defmodule RDF.DateTime do
import RDF.Literal.Guards
@type value :: DateTime.t | NaiveDateTime.t
@xsd_date RDF.Datatype.NS.XSD.date

View file

@ -8,8 +8,11 @@ defmodule RDF.Decimal do
alias Elixir.Decimal, as: D
@type value :: Decimal.t | :nan
@xsd_integer RDF.Datatype.NS.XSD.integer
@impl RDF.Datatype
def convert(value, opts)

View file

@ -7,6 +7,8 @@ defmodule RDF.Double do
import RDF.Literal.Guards
@type value :: float
def build_literal_by_value(value, opts) do
case convert(value, opts) do

View file

@ -7,6 +7,8 @@ defmodule RDF.Integer do
import RDF.Literal.Guards
@type value :: integer
@impl RDF.Datatype
def convert(value, opts)

View file

@ -7,6 +7,8 @@ defmodule RDF.String do
alias RDF.Datatype.NS.XSD
@type value :: String.t
def new(value, opts) when is_list(opts),
do: new(value, Map.new(opts))

View file

@ -7,6 +7,8 @@ defmodule RDF.Time do
import RDF.Literal.Guards
@type value :: Time.t
@grammar ~r/\A(\d{2}:\d{2}:\d{2}(?:\.\d+)?)((?:[\+\-]\d{2}:\d{2})|UTC|GMT|Z)?\Z/
@tz_grammar ~r/\A(?:([\+\-])(\d{2}):(\d{2}))\Z/

View file

@ -7,17 +7,14 @@ defmodule RDF.Literal do
alias RDF.IRI
@type literal_value ::
boolean
| integer
| float
| String.t
| Decimal.t
| Date.t
| Time.t
| DateTime.t
| NaiveDateTime.t
| {Date.t, String.t}
| :nan
RDF.Boolean.value
| RDF.Integer.value
| RDF.Double.value
| RDF.String.value
| RDF.Decimal.value
| RDF.Date.value
| RDF.Time.value
| RDF.DateTime.value
@type t :: %__MODULE__{
value: literal_value,