class ParameterList
Attributes
end_index[R]
errors[R]
start_index[R]
Public Class Methods
new(tokens, start_index, end_index)
click to toggle source
# File lib/model/parameter_list.rb, line 6 def initialize(tokens, start_index, end_index) @tokens, @start_index, @end_index = tokens, start_index, end_index @errors = [] end
Public Instance Methods
each() { |parameter| ... }
click to toggle source
# File lib/model/parameter_list.rb, line 15 def each(&block) parameters.each do |parameter| yield parameter end end
optional_parameters()
click to toggle source
# File lib/model/parameter_list.rb, line 21 def optional_parameters parameters.select(&:is_optional?) end
required_parameters()
click to toggle source
# File lib/model/parameter_list.rb, line 25 def required_parameters parameters.select(&:is_required?) end
sort()
click to toggle source
# File lib/model/parameter_list.rb, line 11 def sort parameters.sort end
validate()
click to toggle source
# File lib/model/parameter_list.rb, line 29 def validate optional_parameter_found = false parameters.each do |parameter| if parameter.is_required? && optional_parameter_found errors << { :message => "Required parameter #{parameter.name} should be specified before optional parameters", :line => parameter.line, :column => parameter.column } elsif parameter.is_optional? optional_parameter_found = true end end validate_alphabetical_order(required_parameters) validate_alphabetical_order(optional_parameters) errors.empty? end
Private Instance Methods
parameters()
click to toggle source
# File lib/model/parameter_list.rb, line 52 def parameters parameter = Parameter.new stack = [] @tokens.inject([]) do |memo, token| if [:LBRACK, :LPAREN].include?(token.type) stack.push(true) elsif [:RBRACK, :RPAREN].include?(token.type) stack.pop end if (token.type == :COMMA || token == @tokens.last) && stack.empty? && parameter.tokens.any? unless [:COMMA, :NEWLINE, :WHITESPACE, :INDENT].include?(token.type) parameter.add(token) end memo << parameter parameter = Parameter.new else parameter.add(token) end memo end end
validate_alphabetical_order(params)
click to toggle source
# File lib/model/parameter_list.rb, line 77 def validate_alphabetical_order(params) if params != params.sort errors << { :message => "Parameter list not in alphabetical order", :line => params.first.line, :column => params.first.column } end end