Module: WrapperBased

Defined in:
lib/wrapper_based.rb,
lib/wrapper_based/dci.rb,
lib/wrapper_based/cast.rb,
lib/wrapper_based/context.rb,
lib/wrapper_based/version.rb,
lib/wrapper_based/decorator.rb

Defined Under Namespace

Classes: Cast, Context, DCI, Decorator

Constant Summary collapse

FORWARDING =
-> type, *behaviors do
  Class.new(Decorator) do
    using Module.new { refine(type) { prepend(*behaviors.reverse) } }

    forwarding = behaviors.flat_map(&:public_instance_methods) - public_instance_methods

    forwarding.uniq.each do |meth|
      define_method(meth) do |*args, &block|
        __getobj__.send(meth, *args, &block)
      end
    end
  end
end
VERSION =
"0.5.0"