Sha256: fa3f97f141e7c4e64065da2d6fbb6f0f5079fdd4b963bff0b5759a4424c56f2d

Contents?: true

Size: 1023 Bytes

Versions: 43

Compression:

Stored size: 1023 Bytes

Contents

require 'forwardable'
module ActiveFedora::Indexing
  # This is a description of how properties should map to indexing strategies
  #  e.g. 'creator_name' => <IndexObject behaviors=[:stored_searchable, :facetable]>
  class Map
    extend Forwardable
    def_delegators :@hash, :[], :[]=, :each, :keys

    def initialize(hash = {})
      @hash = hash
    end

    def dup
      self.class.new(@hash.deep_dup)
    end

    # this enables a cleaner API for solr integration
    class IndexObject
      attr_accessor :data_type, :behaviors, :term
      attr_reader :key

      def initialize(name, &_block)
        @behaviors = []
        @data_type = :string
        @key = name
        yield self if block_given?
      end

      def as(*args)
        @term = args.last.is_a?(Hash) ? args.pop : {}
        @behaviors = args
      end

      def type(sym)
        @data_type = sym
      end

      def dup
        self.class.new(@key) do |idx|
          idx.behaviors = @behaviors.dup
        end
      end
    end
  end
end

Version data entries

43 entries across 43 versions & 1 rubygems

Version Path
active-fedora-11.1.6 lib/active_fedora/indexing/map.rb
active-fedora-11.1.5 lib/active_fedora/indexing/map.rb
active-fedora-11.1.4 lib/active_fedora/indexing/map.rb
active-fedora-11.1.3 lib/active_fedora/indexing/map.rb
active-fedora-11.1.2 lib/active_fedora/indexing/map.rb
active-fedora-11.1.1 lib/active_fedora/indexing/map.rb
active-fedora-11.1.0 lib/active_fedora/indexing/map.rb
active-fedora-10.3.0 lib/active_fedora/indexing/map.rb
active-fedora-11.0.1 lib/active_fedora/indexing/map.rb
active-fedora-11.0.0 lib/active_fedora/indexing/map.rb
active-fedora-10.3.0.rc2 lib/active_fedora/indexing/map.rb
active-fedora-11.0.0.rc7 lib/active_fedora/indexing/map.rb
active-fedora-10.3.0.rc1 lib/active_fedora/indexing/map.rb
active-fedora-11.0.0.rc6 lib/active_fedora/indexing/map.rb
active-fedora-10.2.1 lib/active_fedora/indexing/map.rb
active-fedora-11.0.0.rc5 lib/active_fedora/indexing/map.rb
active-fedora-11.0.0.rc4 lib/active_fedora/indexing/map.rb
active-fedora-10.2.0 lib/active_fedora/indexing/map.rb
active-fedora-11.0.0.rc3 lib/active_fedora/indexing/map.rb
active-fedora-11.0.0.rc2 lib/active_fedora/indexing/map.rb