Class: Puppet::Pops::Evaluator::CallableSignature

Inherits:
Object
  • Object
show all
Defined in:
lib/puppet/pops/evaluator/callable_signature.rb

Overview

CallableSignature

A CallableSignature describes how something callable expects to be called. Different implementation of this class are used for different types of callables.

Direct Known Subclasses

Closure, Functions::Dispatch

Instance Method Summary collapse

Instance Method Details

#args_rangeArray[Integer, Numeric]

Returns the range of required/optional argument values as an array of [min, max], where an infinite end is given as Float::INFINITY. To test against infinity, use the infinity? method.

Returns:

  • (Array[Integer, Numeric])
    • an Array with [min, max]



77
78
79
# File 'lib/puppet/pops/evaluator/callable_signature.rb', line 77

def args_range
  type.size_range
end

#argument_mismatch_handler?Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns true if this signature represents an argument mismatch, false otherwise.

Returns:

  • (Boolean)

    true if this signature represents an argument mismatch, false otherwise



104
105
106
# File 'lib/puppet/pops/evaluator/callable_signature.rb', line 104

def argument_mismatch_handler?
  false
end

#block_nameString

Returns the name of the block parameter if the callable accepts a block. A derived class must implement this method.

Returns:

  • (String)

    the name of the block parameter

Raises:

  • (NotImplementedError)


57
58
59
# File 'lib/puppet/pops/evaluator/callable_signature.rb', line 57

def block_name
  raise NotImplementedError.new
end

#block_rangeArray(Integer, Integer)

Returns a range indicating the optionality of a block. One of [0,0] (does not accept block), [0,1] (optional block), and [1,1] (block required)

Returns:

  • (Array(Integer, Integer))

    the range of the block parameter



66
67
68
# File 'lib/puppet/pops/evaluator/callable_signature.rb', line 66

def block_range
  type.block_range
end

#block_typePuppet::Pops::Types::PAnyType?

Returns the expected type for an optional block. The type may be nil, which means that the callable does not accept a block. If a type is returned it is one of Callable, Optional, Variant, or Optional[Variant[Callable, …]]. The Variant type is used when multiple signatures are acceptable. The Optional type is used when the block is optional.

Returns:



48
49
50
# File 'lib/puppet/pops/evaluator/callable_signature.rb', line 48

def block_type
  type.block_type
end

#infinity?(x) ⇒ Boolean

Returns true if the given x is infinity

Returns:

  • (Boolean)

    true, if given value represents infinity



97
98
99
# File 'lib/puppet/pops/evaluator/callable_signature.rb', line 97

def infinity?(x)
  x == Float::INFINITY
end

#last_captures_rest?Boolean

Returns true if the last parameter captures the rest of the arguments, with a possible cap, as indicated by the ‘args_range` method. A derived class must implement this method.

Returns:

  • (Boolean)

    true if last parameter captures the rest of the given arguments (up to a possible cap)

Raises:

  • (NotImplementedError)


88
89
90
# File 'lib/puppet/pops/evaluator/callable_signature.rb', line 88

def last_captures_rest?
  raise NotImplementedError.new
end

#parameter_namesArray<String>

Returns the names of the parameters as an array of strings. This does not include the name of an optional block parameter.

All implementations are not required to supply names for parameters. They may be used if present, to provide user feedback in errors etc. but they are not authoritative about the number of required arguments, optional arguments, etc.

A derived class must implement this method.

Returns:

  • (Array<String>)
    • an array of names (that may be empty if names are unavailable)

Raises:

  • (NotImplementedError)


23
24
25
# File 'lib/puppet/pops/evaluator/callable_signature.rb', line 23

def parameter_names
  raise NotImplementedError.new
end

#typePuppet::Pops::Types::PCallableType

Returns a PCallableType with the type information, required and optional count, and type information about an optional block.

A derived class must implement this method.

Returns:

Raises:

  • (NotImplementedError)


35
36
37
# File 'lib/puppet/pops/evaluator/callable_signature.rb', line 35

def type
  raise NotImplementedError.new
end