Class: Valkyrie::Persistence::Solr::ORMConverter::RDFLiteralPropertyValue

Inherits:
ValueMapper
  • Object
show all
Defined in:
lib/valkyrie/persistence/solr/orm_converter.rb

Overview

Converts a stored language typed literal from two fields into one

{RDF::Literal}

Instance Attribute Summary

Attributes inherited from ValueMapper

#calling_mapper, #value

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from ValueMapper

for, #initialize, register

Constructor Details

This class inherits a constructor from Valkyrie::ValueMapper

Class Method Details

.handles?(value) ⇒ Boolean

Returns:

  • (Boolean)


80
81
82
83
# File 'lib/valkyrie/persistence/solr/orm_converter.rb', line 80

def self.handles?(value)
  value.is_a?(Property) &&
    (value.document["#{value.key}_lang"] || value.document["#{value.key}_type"])
end

Instance Method Details

#datatypesObject



103
104
105
# File 'lib/valkyrie/persistence/solr/orm_converter.rb', line 103

def datatypes
  value.document.fetch("#{value.key}_type", [])
end

#languagesObject



99
100
101
# File 'lib/valkyrie/persistence/solr/orm_converter.rb', line 99

def languages
  value.document.fetch("#{value.key}_lang", [])
end

#resultObject



85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/valkyrie/persistence/solr/orm_converter.rb', line 85

def result
  value.value.each_with_index.map do |literal, idx|
    language = languages[idx]
    type = datatypes[idx]
    if language == "eng" && type == "http://www.w3.org/1999/02/22-rdf-syntax-ns#langString"
      literal
    elsif language.present?
      RDF::Literal.new(literal, language: language, datatype: type)
    else
      RDF::Literal.new(literal, datatype: type)
    end
  end
end