Class: Yoda::Model::FunctionSignatures::ParameterList
- Inherits:
-
Object
- Object
- Yoda::Model::FunctionSignatures::ParameterList
- Defined in:
- lib/yoda/model/function_signatures/parameter_list.rb
Instance Attribute Summary collapse
Instance Method Summary collapse
- #block_parameter ⇒ String?
- #each(*args, &proc) ⇒ Enumerator<(String, String)>
-
#initialize(parameters) ⇒ ParameterList
constructor
A new instance of ParameterList.
- #keyword_rest_parameter ⇒ String?
- #optional_keyword_parameters ⇒ Array<(String, String)>
- #optional_parameters ⇒ Array<(String, String)>
- #parameter_names ⇒ Array<String>
- #parameter_options ⇒ Hash{ Symbol => Object }
- #post_parameters ⇒ Array<String>
- #required_keyword_parameters ⇒ Array<String>
- #required_parameters ⇒ Array<String>
- #rest_parameter ⇒ String?
- #to_a ⇒ Array<(String, String)>
Constructor Details
#initialize(parameters) ⇒ ParameterList
Returns a new instance of ParameterList.
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
#parameters ⇒ Array<(String, String)> (readonly)
6 7 8 |
# File 'lib/yoda/model/function_signatures/parameter_list.rb', line 6 def parameters @parameters end |
Instance Method Details
#block_parameter ⇒ String?
65 66 67 |
# File 'lib/yoda/model/function_signatures/parameter_list.rb', line 65 def block_parameter [:block_parameter] end |
#each(*args, &proc) ⇒ 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_parameter ⇒ String?
60 61 62 |
# File 'lib/yoda/model/function_signatures/parameter_list.rb', line 60 def keyword_rest_parameter [:keyword_rest_parameter] end |
#optional_keyword_parameters ⇒ Array<(String, String)>
50 51 52 |
# File 'lib/yoda/model/function_signatures/parameter_list.rb', line 50 def optional_keyword_parameters [:optional_keyword_parameters] end |
#optional_parameters ⇒ Array<(String, String)>
40 41 42 |
# File 'lib/yoda/model/function_signatures/parameter_list.rb', line 40 def optional_parameters [:optional_parameters] end |
#parameter_names ⇒ Array<String>
25 26 27 |
# File 'lib/yoda/model/function_signatures/parameter_list.rb', line 25 def parameter_names parameters.map(&:first) end |
#parameter_options ⇒ 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 ||= begin = { 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() 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_parameters ⇒ Array<String>
35 36 37 |
# File 'lib/yoda/model/function_signatures/parameter_list.rb', line 35 def post_parameters [:post_parameters] end |
#required_keyword_parameters ⇒ Array<String>
45 46 47 |
# File 'lib/yoda/model/function_signatures/parameter_list.rb', line 45 def required_keyword_parameters [:required_keyword_parameters] end |
#required_parameters ⇒ Array<String>
30 31 32 |
# File 'lib/yoda/model/function_signatures/parameter_list.rb', line 30 def required_parameters [:required_parameters] end |
#rest_parameter ⇒ String?
55 56 57 |
# File 'lib/yoda/model/function_signatures/parameter_list.rb', line 55 def rest_parameter [:rest_parameter] end |
#to_a ⇒ Array<(String, String)>
15 16 17 |
# File 'lib/yoda/model/function_signatures/parameter_list.rb', line 15 def to_a parameters end |