Sha256: 9b9fe197e519dc4188343ec7cf7f4bf9107f1a77cc59fffa79bd438fc865b2a8

Contents?: true

Size: 778 Bytes

Versions: 68

Compression:

Stored size: 778 Bytes

Contents

module FlydataCore

module WrapperSingleForwardable
  # Delegates a method call `delegator` to the given `accessor` like the
  # original `def_single_delegator` does.  In addition, it wraps the returned
  # object (or each object in an array) with the caller's own instance.
  def def_wrapper_single_delegator(accessor, delegator)
    self.define_singleton_method(delegator) do |*args|
      result = accessor.send(delegator, *args)
      case result
      when Array
        result.collect{|res| self.new(res)}
      when NilClass
        nil
      else
        self.new(result)
      end
    end
  end

  def def_wrapper_single_delegators(accessor, *delegators)
    delegators.each do |delegator|
      def_wrapper_single_delegator(accessor, delegator)
    end
  end
end

end

Version data entries

68 entries across 68 versions & 1 rubygems

Version Path
flydata-0.8.10.2 flydata-core/lib/flydata-core/wrapper_forwardable.rb
flydata-0.8.10.1 flydata-core/lib/flydata-core/wrapper_forwardable.rb
flydata-0.8.9.11 flydata-core/lib/flydata-core/wrapper_forwardable.rb
flydata-0.8.10 flydata-core/lib/flydata-core/wrapper_forwardable.rb
flydata-0.8.9 flydata-core/lib/flydata-core/wrapper_forwardable.rb
flydata-0.8.8 flydata-core/lib/flydata-core/wrapper_forwardable.rb
flydata-0.8.7 flydata-core/lib/flydata-core/wrapper_forwardable.rb
flydata-0.8.6 flydata-core/lib/flydata-core/wrapper_forwardable.rb
flydata-0.8.5 flydata-core/lib/flydata-core/wrapper_forwardable.rb
flydata-0.8.4 flydata-core/lib/flydata-core/wrapper_forwardable.rb
flydata-0.8.3 flydata-core/lib/flydata-core/wrapper_forwardable.rb
flydata-0.8.2 flydata-core/lib/flydata-core/wrapper_forwardable.rb
flydata-0.8.1 flydata-core/lib/flydata-core/wrapper_forwardable.rb
flydata-0.8.0 flydata-core/lib/flydata-core/wrapper_forwardable.rb
flydata-0.7.19 flydata-core/lib/flydata-core/wrapper_forwardable.rb
flydata-0.7.18 flydata-core/lib/flydata-core/wrapper_forwardable.rb
flydata-0.7.17 flydata-core/lib/flydata-core/wrapper_forwardable.rb
flydata-0.7.16 flydata-core/lib/flydata-core/wrapper_forwardable.rb
flydata-0.7.15 flydata-core/lib/flydata-core/wrapper_forwardable.rb
flydata-0.7.14 flydata-core/lib/flydata-core/wrapper_forwardable.rb