Class: Geoblacklight::Configuration::RelationshipsConfig

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/geoblacklight/configuration/relationships_config.rb

Overview

Hash-like configuration for the relationships displayed on a document’s show page. By default it carries all of the relationships defined in the RELATIONSHIPS_SHOWN section of settings.yml, using lowercase keys.

Constant Summary collapse

DEFAULT_RELATIONSHIPS =
{
  member_of_ancestors: {
    field: "pcdm_memberOf_sm",
    icon: "parent-item",
    inverse: :member_of_descendants,
    label: "geoblacklight.relations.member_of_ancestors",
    query_type: "ancestors"
  },
  member_of_descendants: {
    field: "pcdm_memberOf_sm",
    icon: "child-item",
    inverse: :member_of_ancestors,
    label: "geoblacklight.relations.member_of_descendants",
    query_type: "descendants"
  },
  part_of_ancestors: {
    field: "dct_isPartOf_sm",
    icon: "parent-item",
    inverse: :part_of_descendants,
    label: "geoblacklight.relations.part_of_ancestors",
    query_type: "ancestors"
  },
  part_of_descendants: {
    field: "dct_isPartOf_sm",
    icon: "child-item",
    inverse: :part_of_ancestors,
    label: "geoblacklight.relations.part_of_descendants",
    query_type: "descendants"
  },
  relation_ancestors: {
    field: "dct_relation_sm",
    icon: nil,
    inverse: :relation_descendants,
    label: "geoblacklight.relations.relation_ancestors",
    query_type: "ancestors"
  },
  relation_descendants: {
    field: "dct_relation_sm",
    icon: nil,
    inverse: :relation_ancestors,
    label: "geoblacklight.relations.relation_descendants",
    query_type: "descendants"
  },
  replaces_ancestors: {
    field: "dct_replaces_sm",
    icon: nil,
    inverse: :replaces_descendants,
    label: "geoblacklight.relations.replaces_ancestors",
    query_type: "ancestors"
  },
  replaces_descendants: {
    field: "dct_replaces_sm",
    icon: nil,
    inverse: :replaces_ancestors,
    label: "geoblacklight.relations.replaces_descendants",
    query_type: "descendants"
  },
  source_ancestors: {
    field: "dct_source_sm",
    icon: "parent-item",
    inverse: :source_descendants,
    label: "geoblacklight.relations.source_ancestors",
    query_type: "ancestors"
  },
  source_descendants: {
    field: "dct_source_sm",
    icon: "child-item",
    inverse: :source_ancestors,
    label: "geoblacklight.relations.source_descendants",
    query_type: "descendants"
  },
  version_of_ancestors: {
    field: "dct_isVersionOf_sm",
    icon: "parent-item",
    inverse: :version_of_descendants,
    label: "geoblacklight.relations.version_of_ancestors",
    query_type: "ancestors"
  },
  version_of_descendants: {
    field: "dct_isVersionOf_sm",
    icon: "child-item",
    inverse: :version_of_ancestors,
    label: "geoblacklight.relations.version_of_descendants",
    query_type: "descendants"
  }
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(relationships = DEFAULT_RELATIONSHIPS) ⇒ RelationshipsConfig

Returns a new instance of RelationshipsConfig.



96
97
98
99
100
# File 'lib/geoblacklight/configuration/relationships_config.rb', line 96

def initialize(relationships = DEFAULT_RELATIONSHIPS)
  @relationships = relationships.to_h.transform_values do |attrs|
    attrs.is_a?(RelationshipConfig) ? attrs : RelationshipConfig.new(attrs)
  end
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args, **kwargs, &block) ⇒ Object

rubocop:disable Style/MissingRespondToMissing



118
119
120
# File 'lib/geoblacklight/configuration/relationships_config.rb', line 118

def method_missing(name, *args, **kwargs, &block) # rubocop:disable Style/MissingRespondToMissing
  @relationships.key?(name) ? @relationships[name] : super
end

Instance Method Details

#[](key) ⇒ Object



114
115
116
# File 'lib/geoblacklight/configuration/relationships_config.rb', line 114

def [](key)
  @relationships[key]
end

#each(&block) ⇒ Object



102
103
104
# File 'lib/geoblacklight/configuration/relationships_config.rb', line 102

def each(&block)
  @relationships.each(&block)
end

#each_key(&block) ⇒ Object



106
107
108
# File 'lib/geoblacklight/configuration/relationships_config.rb', line 106

def each_key(&block)
  @relationships.each_key(&block)
end

#key?(key) ⇒ Boolean

Returns:

  • (Boolean)


110
111
112
# File 'lib/geoblacklight/configuration/relationships_config.rb', line 110

def key?(key)
  @relationships.key?(key)
end