Class: Houston::Extensions::Deprecated::DeprecatedProjectFeatureDsl

Inherits:
Object
  • Object
show all
Defined in:
lib/houston/boot/extensions/deprecated.rb

Instance Method Summary collapse

Constructor Details

#initializeDeprecatedProjectFeatureDsl

Returns a new instance of DeprecatedProjectFeatureDsl.



127
128
129
# File 'lib/houston/boot/extensions/deprecated.rb', line 127

def initialize
  @field_blocks = []
end

Instance Method Details

#ability(&block) ⇒ Object



139
140
141
# File 'lib/houston/boot/extensions/deprecated.rb', line 139

def ability(&block)
  @ability_block = block
end

#add_to_project_features(slug) ⇒ Object

Raises:

  • (ArgumentError)


147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
# File 'lib/houston/boot/extensions/deprecated.rb', line 147

def add_to_project_features(slug)
  raise ArgumentError, "Project Feature must supply name, but #{slug.inspect} doesn't" unless @name
  raise ArgumentError, "Project Feature must supply path lambda, but #{slug.inspect} doesn't" unless @path_block

  Houston.project_features.add(slug, &@path_block).tap do |feature|
    ability_block = @ability_block
    feature.ability { |project| ability_block.call(self, project) } if ability_block
    feature.name { @name } unless @name == slug.to_s.titleize

    @field_blocks.each do |block|
      dsl = DeprecatedFieldDsl.new
      dsl.instance_eval(&block)
      dsl.add_to feature
    end
  end
end

#field(_slug, &block) ⇒ Object



143
144
145
# File 'lib/houston/boot/extensions/deprecated.rb', line 143

def field(_slug, &block)
  @field_blocks.push block
end

#name(value) ⇒ Object



131
132
133
# File 'lib/houston/boot/extensions/deprecated.rb', line 131

def name(value)
  @name = value
end

#path(&block) ⇒ Object



135
136
137
# File 'lib/houston/boot/extensions/deprecated.rb', line 135

def path(&block)
  @path_block = block
end