Sha256: 9f1d425eb585478c3b58f64e003fd1047b22760c1ae9dcdf9f9168e46dfa2a1e

Contents?: true

Size: 728 Bytes

Versions: 5

Compression:

Stored size: 728 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.values
    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

5 entries across 5 versions & 1 rubygems

Version Path
ddr-core-1.17.0 app/models/ddr/rights_statement.rb
ddr-core-1.16.0 app/models/ddr/rights_statement.rb
ddr-core-1.15.0 app/models/ddr/rights_statement.rb
ddr-core-1.14.0 app/models/ddr/rights_statement.rb
ddr-core-1.13.2 app/models/ddr/rights_statement.rb