Sha256: 88ba62e034e146b4be4e4f2246a5534e96207be5a7019aba424aba66e6cb8412

Contents?: true

Size: 561 Bytes

Versions: 7

Compression:

Stored size: 561 Bytes

Contents

require 'forwardable'

module FlipFab
  class FeaturesByName
    extend Forwardable

    def initialize(features_by_name = {})
      @features_by_name = features_by_name
    end

    def [](name)
      raise "no feature has been defined with the name: #{name}" if @features_by_name[name].nil?

      @features_by_name[name]
    end

    def with_context(context)
      FeaturesByName.new Hash[@features_by_name.map { |name, feature| [name, (feature.with_context context)] }]
    end

    def_delegators :@features_by_name, :[]=, :clear, :count, :each
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
flip_fab-1.1.21 lib/flip_fab/features_by_name.rb
flip_fab-1.1.20 lib/flip_fab/features_by_name.rb
flip_fab-1.1.19 lib/flip_fab/features_by_name.rb
flip_fab-1.1.18 lib/flip_fab/features_by_name.rb
flip_fab-1.0.18 lib/flip_fab/features_by_name.rb
flip_fab-1.0.17 lib/flip_fab/features_by_name.rb
flip_fab-1.0.16 lib/flip_fab/features_by_name.rb