module Aws::Templates::Utils::Dependency::Refinements

Refinements for transparent dependecy handling

Dependency mechanism requres transparent language support to work correctly with arbitrary objects and object collections. This refinement introduces methods used for dependency processing.

Constants

EMPTY_SET

Public Instance Methods

as_a_dependency() click to toggle source

mark the object as dependency

# File lib/aws/templates/utils/dependency/refinements.rb, line 46
def as_a_dependency
  Aws::Templates::Utils::Dependency.new(object)
end
as_a_self_dependency() click to toggle source

mark the object as dependency of itself

# File lib/aws/templates/utils/dependency/refinements.rb, line 51
def as_a_self_dependency
  as_a_dependency.to_self
end
dependencies() click to toggle source

it returns a set containing a single dependency on itself

# File lib/aws/templates/utils/dependency/refinements.rb, line 41
def dependencies
  EMPTY_SET
end
dependency?() click to toggle source

By default an object is not a dependency

# File lib/aws/templates/utils/dependency/refinements.rb, line 23
def dependency?
  false
end
object() click to toggle source

It returns self

# File lib/aws/templates/utils/dependency/refinements.rb, line 28
def object
  self
end
root() click to toggle source

Object root

It is used to gracefully process dependencies

# File lib/aws/templates/utils/dependency/refinements.rb, line 36
def root; end
unknown() click to toggle source

Dependency method stubs

To avoid checking classes directly to filter out dependencies and non-dependencies, we're monkey-patching Object class with stubs for Dependency class.

# File lib/aws/templates/utils/dependency/refinements.rb, line 21
refine ::Object do
  # By default an object is not a dependency
  def dependency?
    false
  end

  # It returns self
  def object
    self
  end

  ##
  # Object root
  #
  # It is used to gracefully process dependencies
  def root; end

  alias_method :not_a_dependency, :object

  # it returns a set containing a single dependency on itself
  def dependencies
    EMPTY_SET
  end

  # mark the object as dependency
  def as_a_dependency
    Aws::Templates::Utils::Dependency.new(object)
  end

  # mark the object as dependency of itself
  def as_a_self_dependency
    as_a_dependency.to_self
  end
end