Class: IqRdf::Literal
- Inherits:
-
Object
show all
- Defined in:
- lib/iq_rdf/literal.rb,
lib/iq_rdf/literal/uri.rb,
lib/iq_rdf/literal/string.rb,
lib/iq_rdf/literal/boolean.rb,
lib/iq_rdf/literal/numeric.rb
Defined Under Namespace
Classes: Boolean, Numeric, String, URI
Constant Summary
collapse
- NTRIPLES_ESCAPE_MAP =
{
"\\" => "\\\\",
'"' => '\\"',
"\n" => "\\n",
"\r" => "\\r",
"\t" => "\\t"
}.freeze
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(obj, lang = nil, datatype = nil) ⇒ Literal
Returns a new instance of Literal.
26
27
28
29
30
31
|
# File 'lib/iq_rdf/literal.rb', line 26
def initialize(obj, lang = nil, datatype = nil)
raise "#{datatype.inspect} is not an URI" unless datatype.nil? || datatype.is_a?(::URI) || datatype.is_a?(IqRdf::Uri)
@obj = obj
@datatype = datatype
@lang = lang
end
|
Instance Method Details
#build_xml(xml, &block) ⇒ Object
73
74
75
76
77
78
79
80
81
82
|
# File 'lib/iq_rdf/literal.rb', line 73
def build_xml(xml, &block)
opts = {}
if @datatype.is_a?(::URI)
opts["rdf:datatype"] = @datatype.to_s
elsif @datatype.is_a?(IqRdf::Uri)
opts["rdf:datatype"] = @datatype.full_uri
end
opts["xml:lang"] = @lang if @lang
block.call(@obj.to_s, opts)
end
|
#to_ntriples(parent_lang = nil) ⇒ Object
60
61
62
63
64
65
66
67
68
69
70
71
|
# File 'lib/iq_rdf/literal.rb', line 60
def to_ntriples(parent_lang = nil)
suffix = if @datatype.is_a?(::URI)
"^^<#{@datatype.to_s}>"
elsif @datatype.is_a?(IqRdf::Uri)
"^^<#{@datatype.full_uri}>"
else
lang = @lang || parent_lang (lang && lang != :none) ? "@#{lang}" : ""
end
"\"#{@obj.to_s.gsub(/[\\"\n\r\t]/, NTRIPLES_ESCAPE_MAP)}\"#{suffix}"
end
|
#to_s(options = {}) ⇒ Object
Also known as:
full_uri
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
# File 'lib/iq_rdf/literal.rb', line 45
def to_s(options = {})
lang = @lang || options[:lang] lang = (lang && lang != :none) ? "@#{lang}" : ""
quote = @obj.to_s.include?("\n") ? '"""' : '"'
datatype = if @datatype.is_a?(::URI)
"^^<#{@datatype.to_s}>"
elsif @datatype.is_a?(IqRdf::Uri)
"^^#{@datatype.to_s}"
else
""
end
"#{quote}#{@obj.to_s.gsub("\\", "\\\\\\\\").gsub(/"/, "\\\"")}#{quote}#{lang}#{datatype}"
end
|