class Yoda::Model::Types::FunctionType

Attributes

block_parameter[R]

@return [Base, nil]

context[R]

@return [Base, nil]

keyword_rest_parameter[R]

@return [Base, nil]

optional_keyword_parameters[R]

@return [Array<(String, Base)>]

optional_parameters[R]

@return [Array<Base>]

post_parameters[R]

@return [Array<Base>]

required_keyword_parameters[R]

@return [Array<(String, Base)>]

required_parameters[R]

@return [Array<Base>]

rest_parameter[R]

@return [Base, nil]

return_type[R]

@return [Base]

Public Class Methods

new(context: nil, return_type:, required_parameters: [], optional_parameters: [], rest_parameter: nil, post_parameters: [], optional_keyword_parameters: [], required_keyword_parameters: [], keyword_rest_parameter: nil, block_parameter: nil) click to toggle source

@param context [Base, nil] @param required_parameters [Array<Base>] @param optional_parameters [Array<Base>] @param rest_parameter [Base, nil] @param post_parameters [Array<Base>] @param keyword_parameters [Array<(String, Base)>] @param keyword_rest_parameter [Base, nil] @param block_parameter [Base, nil] @param return_type [Base]

# File lib/yoda/model/types/function_type.rb, line 32
def initialize(context: nil, return_type:, required_parameters: [], optional_parameters: [], rest_parameter: nil, post_parameters: [], optional_keyword_parameters: [], required_keyword_parameters: [], keyword_rest_parameter: nil, block_parameter: nil)
  @context = context
  @required_parameters = required_parameters
  @optional_parameters = optional_parameters
  @required_keyword_parameters = required_keyword_parameters
  @optional_keyword_parameters = optional_keyword_parameters
  @rest_parameter = rest_parameter
  @post_parameters = post_parameters
  @keyword_rest_parameter = keyword_rest_parameter
  @block_parameter = block_parameter
  @return_type = return_type
end

Public Instance Methods

change_root(namespace) click to toggle source

@param namespace [YARD::CodeObjects::Base] @return [UnionType]

# File lib/yoda/model/types/function_type.rb, line 77
def change_root(namespace)
  self.class.new(
    context: context&.change_root(namespace),
    return_type: return_type.change_root(namespace),
    required_parameters: required_parameters.map { |param| param.change_root(namespace) },
    optional_parameters: optional_parameters.map { |param| param.change_root(namespace) },
    rest_parameter: rest_parameter&.change_root(namespace),
    post_parameters: post_parameters.map { |param| param.change_root(namespace) },
    required_keyword_parameters: required_keyword_parameters.map { |name, param| [name, param.change_root(namespace)] },
    optional_keyword_parameters: required_keyword_parameters.map { |name, param| [name, param.change_root(namespace)] },
    keyword_rest_parameter: keyword_rest_parameter&.change_root(namespace),
    block_parameter: block_parameter&.change_root(namespace),
  )
end
eql?(another) click to toggle source
# File lib/yoda/model/types/function_type.rb, line 45
def eql?(another)
  another.is_a?(FunctionType) &&
  context == another.context &&
  required_parameters == another.required_parameters &&
  optional_parameters == another.optional_parameters &&
  required_keyword_parameters.to_set == another.required_keyword_parameters.to_set &&
  optional_keyword_parameters.to_set == another.optional_keyword_parameters.to_set &&
  keyword_rest_parameter == another.keyword_rest_parameter &&
  rest_parameter == another.rest_parameter &&
  post_parameters == another.post_parameters &&
  block_parameter == another.block_parameter &&
  return_type == another.return_type
end
hash() click to toggle source
# File lib/yoda/model/types/function_type.rb, line 59
def hash
  [
    self.class.name,
    context,
    return_type,
    required_parameters,
    optional_parameters,
    rest_parameter,
    post_parameters,
    required_keyword_parameters,
    optional_keyword_parameters,
    keyword_rest_parameter,
    block_parameter,
  ].hash
end
map(&block) click to toggle source

@return [self]

# File lib/yoda/model/types/function_type.rb, line 109
def map(&block)
  self.class.new(
    context: context&.map(&block),
    return_type: return_type.map(&block),
    required_parameters: required_parameters.map { |param| param.map(&block) },
    optional_parameters: optional_parameters.map { |param| param.map(&block) },
    rest_parameter: rest_parameter&.map(&block),
    post_parameters: post_parameters.map { |param| param.map(&block) },
    required_keyword_parameters: required_keyword_parameters.map { |name, param| [name, param.map(&block)] },
    optional_keyword_parameters: required_keyword_parameters.map { |name, param| [name, param.map(&block)] },
    keyword_rest_parameter: keyword_rest_parameter&.map(&block),
    block_parameter: block_parameter&.map(&block),
  )
end
method_type_signature() click to toggle source
# File lib/yoda/model/types/function_type.rb, line 98
def method_type_signature
  params_str = all_parameters_to_s
  (params_str.empty? ? ': ' : "(#{params_str}): ") + "#{return_type}"
end
resolve(registry) click to toggle source

@param registry [Registry] @return [Array<Store::Objects::Base>]

# File lib/yoda/model/types/function_type.rb, line 94
def resolve(registry)
  []
end
to_s() click to toggle source
# File lib/yoda/model/types/function_type.rb, line 103
def to_s
  params_str = all_parameters_to_s
  (params_str.empty? ? '' : "(#{params_str}) -> ") + "#{return_type}"
end

Private Instance Methods

all_parameters_to_s() click to toggle source
# File lib/yoda/model/types/function_type.rb, line 126
def all_parameters_to_s
  [
    required_parameters_to_s,
    optional_parameters_to_s,
    rest_parameter_to_s,
    post_parameters_to_s,
    keyword_parameters_to_s,
    keyword_rest_parameter_to_s,
    block_parameter_to_s
  ].reject { |str| str.empty? }.join(', ')
end
block_parameter_to_s() click to toggle source
# File lib/yoda/model/types/function_type.rb, line 168
def block_parameter_to_s
  block_parameter ? "&#{block_parameter}" : ''
end
keyword_rest_parameter_to_s() click to toggle source
# File lib/yoda/model/types/function_type.rb, line 164
def keyword_rest_parameter_to_s
  keyword_rest_parameter ? "**#{keyword_rest_parameter}" : ''
end
optional_keyword_parameters_to_s() click to toggle source
# File lib/yoda/model/types/function_type.rb, line 151
def optional_keyword_parameters_to_s
  return '' if optional_keyword_parameters.empty?
  optional_keyword_parameters.map { |(name, type)| "?#{name}: #{type}" }.join(', ')
end
optional_parameters_to_s() click to toggle source
# File lib/yoda/model/types/function_type.rb, line 142
def optional_parameters_to_s
  optional_parameters.map { |type| "?#{type}" }.join(', ')
end
post_parameters_to_s() click to toggle source
# File lib/yoda/model/types/function_type.rb, line 156
def post_parameters_to_s
  post_parameters.map { |type| type.to_s }.join(', ')
end
required_keyword_parameters_to_s() click to toggle source
# File lib/yoda/model/types/function_type.rb, line 146
def required_keyword_parameters_to_s
  return '' if required_keyword_parameters.empty?
  required_keyword_parameters.map { |(name, type)| "#{name}: #{type}" }.join(', ')
end
required_parameters_to_s() click to toggle source
# File lib/yoda/model/types/function_type.rb, line 138
def required_parameters_to_s
  required_parameters.map { |type| type.to_s }.join(', ')
end
rest_parameter_to_s() click to toggle source
# File lib/yoda/model/types/function_type.rb, line 160
def rest_parameter_to_s
  rest_parameter ? "*#{rest_parameter}" : ''
end