Sha256: 128b2776f02e59e1b35ba5b5b47f82cb1ec0dc3e38819a506dcab197bb6410ea

Contents?: true

Size: 1.37 KB

Versions: 2

Compression:

Stored size: 1.37 KB

Contents

# frozen_string_literal: true

require_relative 'config/options'
require_relative 'config/switcher'
require_relative 'config/switchers/addons'
require_relative 'config/switchers/constant_aliases'
require_relative 'config/switchers/features'
require_relative 'config/switchers/pattern_matching'

class BCDD::Result
  class Config
    attr_reader :addon, :feature, :constant_alias, :pattern_matching

    def initialize
      @addon = Addons.switcher
      @feature = Features.switcher
      @constant_alias = ConstantAliases.switcher
      @pattern_matching = PatternMatching.switcher
      @and_then_ = CallableAndThen::Config.new
    end

    def event_logs
      EventLogs::Config.instance
    end

    def and_then!
      @and_then_
    end

    def freeze
      addon.freeze
      feature.freeze
      constant_alias.freeze
      pattern_matching.freeze
      and_then!.freeze
      event_logs.freeze

      super
    end

    def options
      {
        addon: addon,
        feature: feature,
        constant_alias: constant_alias,
        pattern_matching: pattern_matching
      }
    end

    def to_h
      options.transform_values(&:to_h)
    end

    def inspect
      "#<#{self.class.name} " \
        "options=#{options.keys.sort.inspect} " \
        "and_then!=#{and_then!.options.inspect}>"
    end

    @instance = new

    singleton_class.send(:attr_reader, :instance)
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
bcdd-result-1.1.0 lib/bcdd/result/config.rb
bcdd-result-1.0.0 lib/bcdd/result/config.rb