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.



175
176
177
# File 'lib/contracts/decorators.rb', line 175

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

Class Attribute Details

.decoratorsObject

Returns the value of attribute decorators.



156
157
158
# File 'lib/contracts/decorators.rb', line 156

def decorators
  @decorators
end

Class Method Details

.inherited(klass) ⇒ Object



158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
# File 'lib/contracts/decorators.rb', line 158

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)
      return if ENV["NO_CONTRACTS"]
      decorate(#{klass}, *args, &blk)
    end
  ruby_eval
end