module Grape::DSL::InsideRoute::PostBeforeFilter
Methods which should not be available in filters until the before filter has completed
Public Instance Methods
declared(params, options = {}, declared_params = nil)
click to toggle source
# File lib/grape/dsl/inside_route.rb, line 29 def declared(params, options = {}, declared_params = nil) options = options.reverse_merge(include_missing: true, include_parent_namespaces: true) declared_params ||= (!options[:include_parent_namespaces] ? route_setting(:declared_params) : (route_setting(:saved_declared_params) || [])).flatten(1) || [] fail ArgumentError, 'Tried to filter for declared parameters but none exist.' unless declared_params if params.is_a? Array params.map do |param| declared(param || {}, options, declared_params) end else declared_params.each_with_object(Hashie::Mash.new) do |key, hash| key = { key => nil } unless key.is_a? Hash key.each_pair do |parent, children| output_key = options[:stringify] ? parent.to_s : parent.to_sym next unless options[:include_missing] || params.key?(parent) hash[output_key] = if children children_params = params[parent] || (children.is_a?(Array) ? [] : {}) declared(children_params, options, Array(children)) else params[parent] end end end end end