Class: Blacklight::Parameters
- Inherits:
 - 
      Object
      
        
- Object
 - Blacklight::Parameters
 
 
- Defined in:
 - lib/blacklight/parameters.rb
 
Instance Attribute Summary collapse
- 
  
    
      #params  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
rubocop:enable Naming/MethodParameterName.
 - 
  
    
      #search_state  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
rubocop:enable Naming/MethodParameterName.
 
Class Method Summary collapse
- 
  
    
      .deep_merge_permitted_params(a, b)  ⇒ Array<Symbol, Hash> 
    
    
  
  
  
  
  
  
  
  
  
    
rubocop:disable Naming/MethodParameterName Merge two Rails strong_params-style permissions into a single list of permitted parameters, deep-merging complex values as needed.
 - 
  
    
      .sanitize(params)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Sanitize the search parameters by removing unnecessary parameters from the provided parameters.
 
Instance Method Summary collapse
- 
  
    
      #initialize(params, search_state)  ⇒ Parameters 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    
A new instance of Parameters.
 - #permit_search_params ⇒ Object
 
Constructor Details
#initialize(params, search_state) ⇒ Parameters
Returns a new instance of Parameters.
      51 52 53 54  | 
    
      # File 'lib/blacklight/parameters.rb', line 51 def initialize(params, search_state) @params = params.is_a?(Hash) ? params.with_indifferent_access : params @search_state = search_state end  | 
  
Instance Attribute Details
#params ⇒ Object (readonly)
rubocop:enable Naming/MethodParameterName
      47 48 49  | 
    
      # File 'lib/blacklight/parameters.rb', line 47 def params @params end  | 
  
#search_state ⇒ Object (readonly)
rubocop:enable Naming/MethodParameterName
      47 48 49  | 
    
      # File 'lib/blacklight/parameters.rb', line 47 def search_state @search_state end  | 
  
Class Method Details
.deep_merge_permitted_params(a, b) ⇒ Array<Symbol, Hash>
rubocop:disable Naming/MethodParameterName Merge two Rails strong_params-style permissions into a single list of permitted parameters, deep-merging complex values as needed.
      20 21 22 23 24 25 26 27 28 29 30  | 
    
      # File 'lib/blacklight/parameters.rb', line 20 def self.deep_merge_permitted_params(a, b) a = [a] if a.is_a? Hash b = [b] if b.is_a? Hash complex_params_from_a, scalar_params_from_a = a.flatten.uniq.partition { |x| x.is_a? Hash } complex_params_from_a = complex_params_from_a.inject({}) { |tmp, h| _deep_merge_permitted_param_hashes(h, tmp) } complex_params_from_b, scalar_params_from_b = b.flatten.uniq.partition { |x| x.is_a? Hash } complex_params_from_b = complex_params_from_b.inject({}) { |tmp, h| _deep_merge_permitted_param_hashes(h, tmp) } (scalar_params_from_a + scalar_params_from_b + [_deep_merge_permitted_param_hashes(complex_params_from_a, complex_params_from_b)]).compact_blank.uniq end  | 
  
.sanitize(params) ⇒ Object
Sanitize the search parameters by removing unnecessary parameters from the provided parameters.
      9 10 11 12  | 
    
      # File 'lib/blacklight/parameters.rb', line 9 def self.sanitize params params.reject { |_k, v| v.nil? } # not available in Rails 6.0 .except(:action, :controller, :id, :commit, :utf8) end  | 
  
Instance Method Details
#permit_search_params ⇒ Object
      57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75  | 
    
      # File 'lib/blacklight/parameters.rb', line 57 def permit_search_params # if the parameters were generated internally, we can (probably) trust that they're fine return params unless params.is_a?(ActionController::Parameters) # if the parameters were permitted already, we should be able to trust them return params if params.permitted? permitted_params = filter_fields.inject(blacklight_config.search_state_fields) do |allowlist, filter| Blacklight::Parameters.deep_merge_permitted_params(allowlist, filter.permitted_params) end deep_unmangle_params!(params, permitted_params) if blacklight_config.filter_search_state_fields params.permit(*permitted_params) else params.deep_dup.permit! end end  |