app/models/spotlight/resources/dor_resource.rb in spotlight-dor-resources-0.0.2 vs app/models/spotlight/resources/dor_resource.rb in spotlight-dor-resources-0.0.3

- old
+ new

@@ -1,17 +1,47 @@ module Spotlight::Resources class DorResource < Spotlight::Resource + ## + # Generate solr documents for the DOR resources identified by this object + # + # @return [Enumerator] an enumerator of solr document hashes for indexing def to_solr return to_enum :to_solr unless block_given? base_doc = super - [resource, (resource.items if resource.collection?)].flatten.compact.each do |res| - yield base_doc.merge(Spotlight::Dor::Resources.indexer.solr_document(res)) + indexable_resources.each do |res| + yield base_doc.merge(to_solr_document(res)) end end def resource @resource ||= Spotlight::Dor::Resources.indexer.resource doc_id + end + + private + + ## + # Enumerate the resource, and any collection members, that should be indexed + # into this exhibit + # + # @return [Enumerator] an enumerator of resources to index + def indexable_resources + return to_enum(:indexable_resources) unless block_given? + + yield resource + + resource.items.each do |r| + yield r + end + end + + ## + # Generate the solr document hash for a given resource by applying the current + # indexer steps. + # + # @return [Hash] + def to_solr_document(resource) + Spotlight::Dor::Resources.indexer.solr_document(resource) end end end