Class: Pageflow::Features

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/pageflow/features.rb

Overview

A registry of [Feature} objects.

Since:

  • 0.9

Instance Method Summary collapse

Constructor Details

#initializeFeatures

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a new instance of Features.

Since:

  • 0.9



9
10
11
12
13
# File 'lib/pageflow/features.rb', line 9

def initialize
  @features = {}
  @enabled_features = []
  @default_features = []
end

Instance Method Details

#eachObject

Since:

  • 0.9



86
87
88
# File 'lib/pageflow/features.rb', line 86

def each(&)
  @features.values.each(&)
end

#enable(names, config) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Since:

  • 0.9



62
63
64
65
66
67
68
69
70
# File 'lib/pageflow/features.rb', line 62

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

#enable_all(config) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Since:

  • 0.9



73
74
75
# File 'lib/pageflow/features.rb', line 73

def enable_all(config)
  enable(@features.keys, config)
end

#enable_by_default(name) ⇒ Object

Enable a feature by default for all accounts. The feature can still be disabled via the web interface.

Since:

  • 0.10



52
53
54
# File 'lib/pageflow/features.rb', line 52

def enable_by_default(name)
  @default_features << name
end

#enabled?(name) ⇒ Boolean

Check if a feature has been enabled.

Parameters:

  • name (String)

    Name of the feature

Returns:

  • (Boolean)

Since:

  • 0.9



44
45
46
# File 'lib/pageflow/features.rb', line 44

def enabled?(name)
  @enabled_features.include?(name)
end

#enabled_by_default?(name) ⇒ Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

  • (Boolean)

Since:

  • 0.9



57
58
59
# File 'lib/pageflow/features.rb', line 57

def enabled_by_default?(name)
  @default_features.include?(name)
end

#lint!Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Since:

  • 0.9



78
79
80
81
82
83
84
# File 'lib/pageflow/features.rb', line 78

def lint!
  @default_features.each do |name|
    unless @features.key?(name)
      raise(ArgumentError, "Cannot enable unknown feature #{name} by default.")
    end
  end
end

#register(feature) ⇒ Object #register(feature) {|config| ... } ⇒ Object #register(feature) ⇒ Object

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.

Overloads:

  • #register(feature) ⇒ Object

    Parameters:

  • #register(feature) {|config| ... } ⇒ Object

    Parameters:

    • feature (String)

    Yield Parameters:

  • #register(feature) ⇒ Object

    Parameters:

    • feature (String)

Since:

  • 0.9



30
31
32
33
34
35
36
37
38
# File 'lib/pageflow/features.rb', line 30

def register(feature, &)
  return register(Feature.new(feature, &)) if feature.is_a?(String)

  if @features.key?(feature.name)
    raise(ArgumentError, "Feature #{feature.name} is already registered.")
  end

  @features[feature.name] = feature
end