Sha256: e729e8d126e68e84f400b70ae5e8706039fd35c0bcd7256a88e68cb3cd04463c

Contents?: true

Size: 1.2 KB

Versions: 1

Compression:

Stored size: 1.2 KB

Contents

require 'forwardable'

module Flipper
  # Internal: Used by gate to toggle values (true/false, add/delete from set, etc.).
  # Named poorly maybe, but haven't come up with a better name yet.
  class Toggle
    extend Forwardable

    attr_reader :gate

    def_delegators :@gate, :adapter_key, :feature, :adapter

    def initialize(gate)
      @gate = gate
    end

    # Internal: Enables thing for gate and adds feature to known features.
    #
    # Returns Boolean (currently always true).
    def enable(thing)
      add_feature_to_set
    end

    # Internal: Disables thing for gate and adds feature to known features.
    #
    # Returns Boolean (currently always true).
    def disable(thing)
      add_feature_to_set
    end

    def value
      raise 'Not implemented'
    end

    # Public: Pretty string version for debugging.
    def inspect
      attributes = [
        "gate=#{gate.inspect}",
        "value=#{value}",
      ]
      "#<#{self.class.name}:#{object_id} #{attributes.join(', ')}>"
    end

    private

    def add_feature_to_set
      adapter.feature_add adapter_key.feature_name
    end
  end
end

require 'flipper/toggles/boolean'
require 'flipper/toggles/set'
require 'flipper/toggles/value'

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
flipper-0.4.0 lib/flipper/toggle.rb