class Yoda::Model::FunctionSignatures::Formatter

Attributes

signature[R]

@return [FunctionSignatures::Base]

Public Class Methods

new(signature) click to toggle source

@param signature [FunctionSignatures::Base]

# File lib/yoda/model/function_signatures/formatter.rb, line 9
def initialize(signature)
  @signature = signature
end

Public Instance Methods

to_s() click to toggle source
# File lib/yoda/model/function_signatures/formatter.rb, line 13
def to_s
  "#{signature.name}#{function_signature}"
end

Private Instance Methods

all_parameters() click to toggle source
# File lib/yoda/model/function_signatures/formatter.rb, line 24
def all_parameters
  [
    required_parameters,
    optional_parameters,
    rest_parameter,
    post_parameters,
    required_keyword_parameters,
    optional_keyword_parameters,
    keyword_rest_parameter,
    block_parameter
  ].flatten.compact
end
block_parameter() click to toggle source
# File lib/yoda/model/function_signatures/formatter.rb, line 65
def block_parameter
  signature.parameters.block_parameter ? "#{type_of(signature.parameters.block_parameter)} **#{signature.parameters.block_parameter}"  : nil
end
function_signature() click to toggle source
# File lib/yoda/model/function_signatures/formatter.rb, line 19
def function_signature
  params = all_parameters
  (params.empty? ? ': ' : "(#{params.join(', ')}): ") + "#{signature.type.return_type}"
end
keyword_rest_parameter() click to toggle source
# File lib/yoda/model/function_signatures/formatter.rb, line 61
def keyword_rest_parameter
  signature.parameters.keyword_rest_parameter ? "#{type_of(signature.parameters.keyword_rest_parameter)} **#{signature.parameters.keyword_rest_parameter}"  : nil
end
optional_keyword_parameters() click to toggle source
# File lib/yoda/model/function_signatures/formatter.rb, line 53
def optional_keyword_parameters
  signature.parameters.required_keyword_parameters.map { |(param, value)| "#{type_of(param)} #{param}: #{value}" }
end
optional_parameters() click to toggle source
# File lib/yoda/model/function_signatures/formatter.rb, line 41
def optional_parameters
  signature.parameters.optional_parameters.map { |(param, value)| triple_to_s(param, type_of(param), value) }
end
post_parameters() click to toggle source
# File lib/yoda/model/function_signatures/formatter.rb, line 45
def post_parameters
  signature.parameters.post_parameters.map { |param| triple_to_s(param, type_of(param)) }
end
required_keyword_parameters() click to toggle source
# File lib/yoda/model/function_signatures/formatter.rb, line 49
def required_keyword_parameters
  signature.parameters.required_keyword_parameters.map { |param| "#{type_of(param)} #{param}:" }
end
required_parameters() click to toggle source
# File lib/yoda/model/function_signatures/formatter.rb, line 37
def required_parameters
  signature.parameters.required_parameters.map { |param| triple_to_s(param, type_of(param)) }
end
rest_parameter() click to toggle source
# File lib/yoda/model/function_signatures/formatter.rb, line 57
def rest_parameter
  signature.parameters.rest_parameter ? "#{type_of(signature.parameters.rest_parameter)} *#{signature.parameters.rest_parameter}"  : nil
end
triple_to_s(name, type, default_value = nil) click to toggle source

@param name [String] @param type [Base] @param default_value [String, nil]

# File lib/yoda/model/function_signatures/formatter.rb, line 72
def triple_to_s(name, type, default_value = nil)
  "#{type} #{name}" + (default_value ? " = #{ default_value }" : '')
end
type_of(param) click to toggle source
# File lib/yoda/model/function_signatures/formatter.rb, line 76
def type_of(param)
  signature.parameter_type_of(param)
end