class Reynard::GroupedParameters

Groups parameters based on the parameters specification.

Public Class Methods

new(specification, params) click to toggle source
# File lib/reynard/grouped_parameters.rb, line 6
def initialize(specification, params)
  @specification = pivot(specification)
  @params = params
end

Public Instance Methods

to_h() click to toggle source
# File lib/reynard/grouped_parameters.rb, line 11
def to_h
  @params.each_with_object({}) do |(name, value), grouped|
    group_name = @specification.dig(name, 'in') || 'query'
    grouped[group_name] ||= {}
    grouped[group_name].merge!({ name => value })
  end
end

Private Instance Methods

pivot(specification) click to toggle source
# File lib/reynard/grouped_parameters.rb, line 21
def pivot(specification)
  return {} unless specification

  specification.each_with_object({}) do |attribute, pivot|
    pivot[attribute['name']] = attribute
  end
end