Sha256: 329833e25b0e03dfc87af1f8001028127e99ba6785018225f16693195687e68b

Contents?: true

Size: 605 Bytes

Versions: 1

Compression:

Stored size: 605 Bytes

Contents

class Decorator

  attr_reader :object

  # doctest: A Decorator should be initialized with thr decorated object.
  #   >> object = Object.new
  #   >> decorator = Decorator.new(object)
  #   >> decorator.object == object
  #   => true
  def initialize(object)
    @object = object
  end

  def method_missing(method, *args)
    @object.send(method, *args)
  end

end


class Class

  def decorator(decorator_class)
    old_new = self.method(:new)
    (class << self; self; end).send(:define_method, :new) do |*args|
      object = old_new.call(*args)
      decorator_class.new(object)
    end
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
armin-joellenbeck-rdbc-0.0.6 lib/decorator.rb