Class: Yoda::Model::FunctionSignatures::ParameterList

Inherits:
Object
  • Object
show all
Defined in:
lib/yoda/model/function_signatures/parameter_list.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(parameters) ⇒ ParameterList

Returns a new instance of ParameterList.

Parameters:

  • parameters (Array<(String, String)>)


9
10
11
12
# File 'lib/yoda/model/function_signatures/parameter_list.rb', line 9

def initialize(parameters)
  fail ArgumentError, parameters unless parameters.all? { |param| param.is_a?(Array) }
  @parameters = parameters
end

Instance Attribute Details

#parametersArray<(String, String)> (readonly)

Returns:

  • (Array<(String, String)>)


6
7
8
# File 'lib/yoda/model/function_signatures/parameter_list.rb', line 6

def parameters
  @parameters
end

Instance Method Details

#block_parameterString?

Returns:

  • (String, nil)


65
66
67
# File 'lib/yoda/model/function_signatures/parameter_list.rb', line 65

def block_parameter
  parameter_options[:block_parameter]
end

#each(*args, &proc) ⇒ Enumerator<(String, String)>

Returns:

  • (Enumerator<(String, String)>)


20
21
22
# File 'lib/yoda/model/function_signatures/parameter_list.rb', line 20

def each(*args, &proc)
  to_a.each(*args, &proc)
end

#keyword_rest_parameterString?

Returns:

  • (String, nil)


60
61
62
# File 'lib/yoda/model/function_signatures/parameter_list.rb', line 60

def keyword_rest_parameter
  parameter_options[:keyword_rest_parameter]
end

#optional_keyword_parametersArray<(String, String)>

Returns:

  • (Array<(String, String)>)


50
51
52
# File 'lib/yoda/model/function_signatures/parameter_list.rb', line 50

def optional_keyword_parameters
  parameter_options[:optional_keyword_parameters]
end

#optional_parametersArray<(String, String)>

Returns:

  • (Array<(String, String)>)


40
41
42
# File 'lib/yoda/model/function_signatures/parameter_list.rb', line 40

def optional_parameters
  parameter_options[:optional_parameters]
end

#parameter_namesArray<String>

Returns:

  • (Array<String>)


25
26
27
# File 'lib/yoda/model/function_signatures/parameter_list.rb', line 25

def parameter_names
  parameters.map(&:first)
end

#parameter_optionsHash{ Symbol => Object }

Returns:

  • (Hash{ Symbol => Object })


70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/yoda/model/function_signatures/parameter_list.rb', line 70

def parameter_options
  @parameter_options ||= begin
    options = {
      required_parameters: [],
      optional_parameters: [],
      rest_parameter: nil,
      post_parameters: [],
      required_keyword_parameters: [],
      optional_keyword_parameters: [],
      keyword_rest_parameter: nil,
      block_parameter: nil,
    }
    parameters.each_with_object(options) do |(name, default), obj|
      if name.to_s.start_with?('**')
        obj[:keyword_rest_parameter] ||= name.to_s.gsub(/\A\*\*/, '')
      elsif name.to_s.start_with?('*')
        obj[:rest_parameter] ||= name.to_s.gsub(/\A\*/, '')
      elsif name.to_s.start_with?('&')
        obj[:block_parameter] ||= name.to_s.gsub(/\A\&/, '')
      elsif name.to_s.end_with?(':')
        if default && !default.empty?
          obj[:optional_keyword_parameters].push([name.to_s.gsub(/:\Z/, ''), default])
        else
          obj[:required_keyword_parameters].push(name.to_s.gsub(/:\Z/, ''))
        end
      elsif default && !default.empty?
        obj[:optional_parameters].push([name, default])
      elsif obj[:rest_parameter]
        obj[:post_parameters].push(name.to_s)
      else
        obj[:required_parameters].push(name.to_s)
      end
    end
  end
end

#post_parametersArray<String>

Returns:

  • (Array<String>)


35
36
37
# File 'lib/yoda/model/function_signatures/parameter_list.rb', line 35

def post_parameters
  parameter_options[:post_parameters]
end

#required_keyword_parametersArray<String>

Returns:

  • (Array<String>)


45
46
47
# File 'lib/yoda/model/function_signatures/parameter_list.rb', line 45

def required_keyword_parameters
  parameter_options[:required_keyword_parameters]
end

#required_parametersArray<String>

Returns:

  • (Array<String>)


30
31
32
# File 'lib/yoda/model/function_signatures/parameter_list.rb', line 30

def required_parameters
  parameter_options[:required_parameters]
end

#rest_parameterString?

Returns:

  • (String, nil)


55
56
57
# File 'lib/yoda/model/function_signatures/parameter_list.rb', line 55

def rest_parameter
  parameter_options[:rest_parameter]
end

#to_aArray<(String, String)>

Returns:

  • (Array<(String, String)>)


15
16
17
# File 'lib/yoda/model/function_signatures/parameter_list.rb', line 15

def to_a
  parameters
end