Sha256: c4523a76c2cd9dc0c7d6318493bfb0a3b0cc792e95a582de9a6ac60c0e3effd4

Contents?: true

Size: 646 Bytes

Versions: 1

Compression:

Stored size: 646 Bytes

Contents

module Ddr
  Contact = Struct.new(:slug, :name, :short_name, :url, :phone, :email, :ask, keyword_init: true) do

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

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

    def self.all
      keystore
    end

    def self.call(slug)
      keystore.fetch(slug)

    rescue KeyError => _
      raise Ddr::NotFoundError, "Contact slug '#{slug}' not found."
    end

    def self.keys
      keystore.keys
    end

    def to_s
      name
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

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