Sha256: 6b37b7fe84cb4a6548a80682a65253d60fc1074e484592b299c67566e7ee280d

Contents?: true

Size: 721 Bytes

Versions: 1

Compression:

Stored size: 721 Bytes

Contents

module Ddr
  RightsStatement = Struct.new(:title, :url, :short_title, :feature, :reuse_text, keyword_init: true) do

    def self.config
      @config ||= YAML.load_file(::File.expand_path('../../../config/aux/rights_statement.yml', __dir__))
    end

    def self.keystore
      @keystore ||= Hash[config.map { |entry| [entry['url'], new(entry).freeze] }].freeze
    end

    def self.all
      keystore
    end

    def self.call(obj)
      return if obj.rights.empty?

      keystore.fetch(obj.rights.first)

    rescue KeyError => _
      raise Ddr::NotFoundError, "Rights statement '#{obj.rights.first}' not found."
    end

    def self.keys
      keystore.keys
    end

    def to_s
      title
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ddr-core-1.13.1 app/models/ddr/rights_statement.rb