Class: Contracts::Decorator

Inherits:
Object
  • Object
show all
Defined in:
lib/contracts/decorators.rb

Direct Known Subclasses

Contract

Class Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(klass, method) ⇒ Decorator

Returns a new instance of Decorator.


228
229
230
# File 'lib/contracts/decorators.rb', line 228

def initialize(klass, method)
  @method = method
end

Class Attribute Details

.decoratorsObject

Returns the value of attribute decorators.


210
211
212
# File 'lib/contracts/decorators.rb', line 210

def decorators
  @decorators
end

Class Method Details

.inherited(klass) ⇒ Object


212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
# File 'lib/contracts/decorators.rb', line 212

def self.inherited(klass)
  name = klass.name.gsub(/^./) { |m| m.downcase }

  return if name =~ /^[^A-Za-z_]/ || name =~ /[^0-9A-Za-z_]/

  # the file and line parameters set the text for error messages
  # make a new method that is the name of your decorator.
  # that method accepts random args and a block.
  # inside, `decorate` is called with those params.
  MethodDecorators.module_eval <<-ruby_eval, __FILE__, __LINE__ + 1
    def #{klass}(*args, &blk)
      decorate(#{klass}, *args, &blk)
    end
  ruby_eval
end