rdf-ex/lib/rdf/reader_parse_helper.ex
Marcel Otto 31331b7388 core: N-Triples reader
and just enough more supported Literals to pass the W3C RDF N-Triples test suite
2016-10-30 19:36:46 +01:00

25 lines
842 B
Elixir

defmodule RDF.Reader.ParseHelper do
@moduledoc false
def to_uri({:iriref, line, value}) do
case URI.parse(value) do
%URI{scheme: nil} -> {:error, line, "#{value} is not a valid URI"}
%URI{path: nil} -> {:error, line, "#{value} is not a valid URI"}
parsed_uri -> {:ok, parsed_uri}
end
end
def to_bnode({:blank_node_label, _line, value}), do: RDF.bnode(value)
def to_literal({:string_literal_quote, _line, value}),
do: RDF.literal(value)
def to_literal({:string_literal_quote, _line, value}, type),
do: RDF.literal(value, [type])
def to_langtag({:langtag, _line, value}), do: value
def bnode_str('_:' ++ value), do: List.to_string(value)
def langtag_str('@' ++ value), do: List.to_string(value)
def quoted_content_str(value), do: value |> List.to_string |> String.slice(1..-2)
end