Sha256: dcad82dbbd6b98a968b001aa367f6448406868e2880fbf57692f35037edadae7

Contents?: true

Size: 469 Bytes

Versions: 1

Compression:

Stored size: 469 Bytes

Contents

require "delegate"

module Disposable
  class Facade < SimpleDelegator
    module Facadable
      def facade
        # TODO: check if already facaded.
        self.class.facade_class.new(self)
      end
    end

    def self.facades(klass)
      facade_class = self

      klass.instance_eval do
        include Facadable
        @_facade_class = facade_class

        def facade_class
          @_facade_class
        end
      end # TODO: use hooks.
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
disposable-0.0.1 lib/disposable/facade.rb