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