Sha256: 2ad5f54339887d50231e66baa6bc84fd6176f29376d8b3a1d35ee1a08f5a8686
Contents?: true
Size: 1.59 KB
Versions: 3
Compression:
Stored size: 1.59 KB
Contents
module Pageflow # A registry of [Feature} objects. # # @since 0.9 class Features include Enumerable # @api private def initialize @features = {} @enabled_features = [] end # Register a feature that can be enabled for accounts of # entries. If the first parameter is a string, a block can be # passed to provide the enable method. If only a string is passed, # enabling the feature is no-op. # # @overload register(feature) # @param feature [Feature] # # @overload register(feature) # @param feature [String] # @yieldparam config [Configuration] Use the block as enable # method. # # @overload register(feature) # @param feature [String] def register(feature, &block) if feature.is_a?(String) return register(Feature.new(feature, &block)) end if @features.key?(feature.name) raise(ArgumentError, "Feature #{feature.name} is already registered.") end @features[feature.name] = feature end # Check if a feature has been enabled. # # @return [Boolean] def enabled?(name) @enabled_features.include?(name) end # @api private def enable(names, config) @enabled_features = names names.each do |name| raise(ArgumentError, "Cannot enable unknown feature #{name}.") unless @features.key?(name) @features[name].enable(config) end end # @api private def enable_all(config) enable(@features.keys, config) end def each(&block) @features.values.each(&block) end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
pageflow-0.9.2 | lib/pageflow/features.rb |
pageflow-0.9.1 | lib/pageflow/features.rb |
pageflow-0.9.0 | lib/pageflow/features.rb |