Skip to content

Commit

Permalink
Updates for Ruby 2.6 compatibility.
Browse files Browse the repository at this point in the history
  • Loading branch information
gkellogg committed May 16, 2023
1 parent 9c440ca commit ca6bae5
Showing 1 changed file with 22 additions and 22 deletions.
44 changes: 22 additions & 22 deletions lib/rdf/rdfxml/writer.rb
Expand Up @@ -180,6 +180,14 @@ def write_epilogue

protected

# Reset parser to run again
def reset
@options[:log_depth] = 0
@references = {}
@serialized = {}
@subjects = {}
end

# Render document using `haml_template[:doc]`. Yields each subject to be rendered separately.
#
# @param [Array<RDF::Resource>] subjects
Expand Down Expand Up @@ -209,8 +217,8 @@ def render_document(subjects, lang: nil, base: nil, **options, &block)
builder.instruct! :xml, :version=>"1.0", :encoding=>"UTF-8"
builder.instruct! :'xml-stylesheet', type: 'text/xsl', href: options[:stylesheet] if options[:stylesheet]
attrs = prefix_attrs
attrs["xml:lang"] = lang if lang
attrs["xml:base"] = base if base
attrs[:"xml:lang"] = lang if lang
attrs[:"xml:base"] = base if base

builder.rdf(:RDF, **attrs) do |b|
subjects.each do |subject|
Expand Down Expand Up @@ -263,18 +271,18 @@ def render_subject(subject, builder, **options, &block)
types.unshift(first_type) if first_type && !type_qname
type_qname ||= "rdf:Description"

attr_props = attr_props.merge("rdf:nodeID" => subject.id) if subject.node? && ref_count(subject) >= 1
attr_props = attr_props.merge("rdf:about" => subject.relativize(base_uri)) if subject.uri?
attr_props = attr_props.merge("rdf:nodeID": subject.id) if subject.node? && ref_count(subject) >= 1
attr_props = attr_props.merge("rdf:about": subject.relativize(base_uri)) if subject.uri?

log_debug {"render_subject(#{subject.inspect})"}
subject_done(subject)

builder.tag!(type_qname, **attr_props) do |b|
types.each do |type|
if type.node?
b.tag!("rdf:type", "rdf:nodeID" => type.id)
b.tag!("rdf:type", "rdf:nodeID": type.id)
else
b.tag!("rdf:type", "rdf:resource" => type.to_s)
b.tag!("rdf:type", "rdf:resource": type.to_s)
end
end

Expand Down Expand Up @@ -336,11 +344,11 @@ def render_property(property, objects, builder, **options)
render_subject(object, b, **options)
end
elsif object.literal? && object.datatype == RDF.XMLLiteral
builder.tag!(property, object.value, "rdf:parseType" => "Literal")
builder.tag!(property, object.value, "rdf:parseType": "Literal")
elsif object.literal?
attrs = {}
attrs["xml:lang"] = object.language if object.language?
attrs["rdf:datatype"] = object.datatype if object.datatype?
attrs[:"xml:lang"] = object.language if object.language?
attrs[:"rdf:datatype"] = object.datatype if object.datatype?
builder.tag!(property, object.value.to_s, **attrs)
elsif object.node?
builder.tag!(property, "rdf:nodeID": object.id)
Expand Down Expand Up @@ -368,18 +376,18 @@ def render_property(property, objects, builder, **options)
# @return String
# The rendered collection is returned as a string
def render_collection(property, list, builder, **options, &block)
builder.tag!(property, "rdf:parseType" => "Collection") do |b|
builder.tag!(property, "rdf:parseType": "Collection") do |b|
list.each do |object|
if log_depth <= @max_depth && !is_done?(object)
render_subject(object, b)
elsif object.node?
if ref_count(object) > 1
b.tag!("rdf:Description", "rdf:nodeID" => object.id)
b.tag!("rdf:Description", "rdf:nodeID": object.id)
else
b.tag!("rdf:Description")
end
else
b.tag!("rdf:Description", "rdf:about" => object.relativize(base_uri))
b.tag!("rdf:Description", "rdf:about": object.relativize(base_uri))
end
end
end
Expand All @@ -389,7 +397,7 @@ def render_collection(property, list, builder, **options, &block)
# @return [Hash{String => String}]
def prefix_attrs
prefixes.inject({}) do |memo, (k, v)|
memo[k ? "xmlns:#{k}" : "xmlns"] = v.to_s
memo[(k ? "xmlns:#{k}" : "xmlns").to_sym] = v.to_s
memo
end
end
Expand Down Expand Up @@ -439,14 +447,6 @@ def preprocess_statement(statement)

private

# Reset parser to run again
def reset
@options[:log_depth] = 0
@references = {}
@serialized = {}
@subjects = {}
end

# Order subjects for output. Override this to output subjects in another order.
#
# Uses #top_classes and #base_uri.
Expand Down Expand Up @@ -514,7 +514,7 @@ def prop_partition(properties)
(object.plain? || @attributes == :typed) &&
get_lang(object).nil?

attr_props[prop] = values.first.to_s
attr_props[prop.to_sym] = values.first.to_s
else
embed_props[prop] = values
end
Expand Down

0 comments on commit ca6bae5

Please sign in to comment.