Class: LazyObject Private

Inherits:
Delegator
  • Object
show all
Defined in:
lazy_object.rb

Overview

This class is part of a private API. This class may only be used in the Homebrew/brew repository. Third parties should avoid using this class if possible, as it may be removed or changed without warning.

An object which lazily evaluates its inner block only once a method is called on it.

Instance Method Summary collapse

Constructor Details

#initialize(&callable) ⇒ LazyObject

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns a new instance of LazyObject.



8
9
10
# File 'lazy_object.rb', line 8

def initialize(&callable)
  super(callable)
end

Instance Method Details

#__getobj__Object

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.



12
13
14
15
16
# File 'lazy_object.rb', line 12

def __getobj__
  return @__delegate__ if defined?(@__delegate__)

  @__delegate__ = @__callable__.call
end

#__setobj__(callable) ⇒ Object

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.



18
19
20
# File 'lazy_object.rb', line 18

def __setobj__(callable)
  @__callable__ = callable
end

#is_a?(klass) ⇒ Boolean

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Forward to the inner object to make lazy objects type-checkable.

Returns:

  • (Boolean)


23
24
25
# File 'lazy_object.rb', line 23

def is_a?(klass)
  __getobj__.is_a?(klass) || super
end