File: configuration.rb

package info (click to toggle)
ruby-wisper 3.0.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 276 kB
  • sloc: ruby: 1,231; makefile: 4
file content (44 lines) | stat: -rw-r--r-- 928 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
require 'forwardable'

module Wisper
  class Configuration
    attr_reader :broadcasters

    def initialize
      @broadcasters = Broadcasters.new
    end

    # registers a broadcaster, referenced by key
    #
    # @param key [String, #to_s] an arbitrary key
    # @param broadcaster [#broadcast] a broadcaster
    def broadcaster(key, broadcaster)
      @broadcasters[key] = broadcaster
      self
    end

    # sets the default value for prefixes
    #
    # @param [#to_s] value
    #
    # @return [String]
    def default_prefix=(value)
      ValueObjects::Prefix.default = value
    end

    class Broadcasters
      extend Forwardable

      def_delegators :@data, :[], :[]=, :empty?, :include?, :clear, :keys, :to_h

      def initialize
        @data = {}
      end

      def fetch(key)
        raise KeyError, "broadcaster not found for #{key}" unless include?(key)
        @data[key]
      end
    end
  end
end