Sha256: d82cc70ae55f9f69ae11f59f7057af2345fcbec0ef5173fe35b3a2e42487b50b
Contents?: true
Size: 1.34 KB
Versions: 2
Compression:
Stored size: 1.34 KB
Contents
module Esearch class Presenter # Base class for facets in results class Facet < self TYPE_KEY = '_type'.freeze # Build facet from raw # # @param [Hash] raw # # @return [Facet] # # @api private # def self.build(raw) type = raw.fetch(TYPE_KEY) get(type).new(raw) end # Get class for type # # @param [String] type # # @return [Class:Facet] # # @api private # def self.get(type) REGISTRY.fetch(type) do raise "Facet with type #{type.inspect} is not known" end end private_class_method :get # Enumerate aspects # # @return [Enumerable<Aspect>] # # @api private # def aspects util = self.class raw.fetch(util::FACET_KEY).map do |item| util::ASPECT_CLASS.new(item) end end memoize :aspects private # Facet that returns range counts class Range < self ASPECT_CLASS = Aspect::Range FACET_KEY = 'ranges'.freeze end # Facet that returns term counts class Terms < self ASPECT_CLASS = Aspect::Term FACET_KEY = 'terms'.freeze end REGISTRY = { 'range' => Range, 'terms' => Terms }.freeze end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
esearch-0.2.1 | lib/esearch/presenter/facet.rb |
esearch-0.2.0 | lib/esearch/presenter/facet.rb |