Sha256: 937e154704e8064c84bf4e416357d1065fd18188d77a4dfd21d3be12da3e1e6f

Contents?: true

Size: 762 Bytes

Versions: 12

Compression:

Stored size: 762 Bytes

Contents

module Flipflop
  module Strategies
    class LambdaStrategy < AbstractStrategy
      class << self
        def default_description
          "Resolves feature settings with custom code."
        end
      end

      def initialize(**options)
        @lambda = (options.delete(:lambda) || ->(*) { }).freeze
        super(**options)
        if @lambda.arity.abs != 1
          raise StrategyError.new(name, "has lambda with arity #{@lambda.arity}, expected 1 or -1")
        end
      end

      def enabled?(feature)
        result = instance_exec(feature, &@lambda)
        return result if result.nil? or result == !!result
        raise StrategyError.new(name, "returned invalid result #{result.inspect} for feature '#{feature}'")
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
flipflop-2.8.0 lib/flipflop/strategies/lambda_strategy.rb
flipflop-2.7.1 lib/flipflop/strategies/lambda_strategy.rb
flipflop-2.7.0 lib/flipflop/strategies/lambda_strategy.rb
flipflop-2.6.0 lib/flipflop/strategies/lambda_strategy.rb
flipflop-2.5.0 lib/flipflop/strategies/lambda_strategy.rb
flipflop-2.4.0 lib/flipflop/strategies/lambda_strategy.rb
flipflop-2.3.1 lib/flipflop/strategies/lambda_strategy.rb
flipflop-2.3.0 lib/flipflop/strategies/lambda_strategy.rb
flipflop-2.2.1 lib/flipflop/strategies/lambda_strategy.rb
flipflop-2.2.0 lib/flipflop/strategies/lambda_strategy.rb
flipflop-2.1.0 lib/flipflop/strategies/lambda_strategy.rb
flipflop-2.0.0 lib/flipflop/strategies/lambda_strategy.rb