module RDF::Serializers::Scalar
Attributes
datatype[RW]
image[RW]
predicate[RW]
Public Class Methods
new(key:, method:, options: {})
click to toggle source
Calls superclass method
# File lib/rdf/serializers/scalar.rb, line 10 def initialize(key:, method:, options: {}) super @predicate = options[:predicate] @image = options[:image] @datatype = options[:datatype] end
Public Instance Methods
serialize_hex(record, serialization_params)
click to toggle source
# File lib/rdf/serializers/scalar.rb, line 17 def serialize_hex(record, serialization_params) return [] unless conditionally_allowed?(record, serialization_params) && predicate.present? value = value_from_record(record, method, serialization_params) return [] if value.nil? if value.is_a?(Array) value.map { |arr_item| value_to_hex(iri_from_record(record).to_s, predicate, arr_item, nil, serialization_params) } elsif value.is_a?(::RDF::List) first = value.statements.first&.subject || RDF.nil value.statements.map do |statement| value_to_hex(statement.subject.to_s, statement.predicate, statement.object, statement.graph_name, serialization_params) end + [ value_to_hex(iri_from_record(record).to_s, predicate, first, nil, serialization_params) ] else [value_to_hex(iri_from_record(record).to_s, predicate, value, nil, serialization_params)] end end
value_from_record(record, method, serialization_params)
click to toggle source
# File lib/rdf/serializers/scalar.rb, line 38 def value_from_record(record, method, serialization_params) if method.is_a?(Proc) FastJsonapi.call_proc(method, record, serialization_params) else v = record.public_send(method) v.is_a?('ActiveRecord'.safe_constantize&.const_get('Relation') || NilClass) ? v.to_a : v end end