Module: JekyllOpenAPI::Parameters
- Defined in:
- lib/jekyll_openapi/parameters.rb
Overview
Helpers for OpenAPI Parameter objects.
Constant Summary collapse
- LOCATIONS =
%w[query path header cookie].freeze
Class Method Summary collapse
-
.group(params, logger: JekyllOpenAPI.logger) ⇒ Hash{String => Array<Hash>}
Groups a parameter list by location ("in").
-
.merge(path_params, operation_params) ⇒ Array<Hash>
Merges path-item level and operation level parameter lists.
Class Method Details
.group(params, logger: JekyllOpenAPI.logger) ⇒ Hash{String => Array<Hash>}
Groups a parameter list by location ("in"). Always returns all four location keys so templates can test emptiness.
13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/jekyll_openapi/parameters.rb', line 13 def self.group(params, logger: JekyllOpenAPI.logger) output = LOCATIONS.to_h { |location| [location, []] } Array(params).each do |param| location = param.is_a?(Hash) ? param["in"] : nil if output.key?(location) output[location] << param else logger.warn("invalid parameter location #{location.inspect} in #{param.inspect}") end end output end |
.merge(path_params, operation_params) ⇒ Array<Hash>
Merges path-item level and operation level parameter lists. An operation parameter overrides a path one with the same (name, in) pair.
30 31 32 33 34 35 36 37 |
# File 'lib/jekyll_openapi/parameters.rb', line 30 def self.merge(path_params, operation_params) merged = {} (Array(path_params) + Array(operation_params)).each do |param| next unless param.is_a?(Hash) merged[[param["name"], param["in"]]] = param end merged.values end |