Module: Assert::Stub::ParameterList

Defined in:
lib/assert/stub.rb

Constant Summary collapse

LETTERS =
('a'..'z').to_a.freeze

Class Method Summary collapse

Class Method Details

.build_params_from_arity(arity) ⇒ Object



169
170
171
172
# File 'lib/assert/stub.rb', line 169

def self.build_params_from_arity(arity)
  number = arity < 0 ? (arity + 1).abs : arity
  (0..(number - 1)).map{ |param_index| get_param_name(param_index) }
end

.get_arity(object, method_name) ⇒ Object



163
164
165
166
167
# File 'lib/assert/stub.rb', line 163

def self.get_arity(object, method_name)
  object.method(method_name).arity
rescue NameError
  -1
end

.get_param_name(param_index) ⇒ Object



174
175
176
177
178
# File 'lib/assert/stub.rb', line 174

def self.get_param_name(param_index)
  param_index += LETTERS.size # avoid getting 0 for the number of letters
  number_of_letters, letter_index = param_index.divmod(LETTERS.size)
  LETTERS[letter_index] * number_of_letters
end

.new(object, method_name) ⇒ Object



153
154
155
156
157
158
159
# File 'lib/assert/stub.rb', line 153

def self.new(object, method_name)
  arity = get_arity(object, method_name)
  params = build_params_from_arity(arity)
  params << '*args' if arity < 0
  params << '&block'
  params.join(', ')
end