module ActionController::ParamsWrapper

def _wrap_parameters(parameters)

Returns the list of parameters which will be selected for wrapped.
def _wrap_parameters(parameters)
  value = if include_only = _wrapper_options[:include]
    parameters.slice(*include_only)
  else
    exclude = _wrapper_options[:exclude] || []
    parameters.except(*(exclude + EXCLUDE_PARAMETERS))
  end
  { _wrapper_key => value }
end

def _wrapper_enabled?

Checks if we should perform parameters wrapping.
def _wrapper_enabled?
  ref = request.content_mime_type.try(:ref)
  _wrapper_formats.include?(ref) && _wrapper_key && !request.request_parameters[_wrapper_key]
end

def _wrapper_formats

Returns the list of enabled formats.
def _wrapper_formats
  _wrapper_options[:format]
end

def _wrapper_key

Returns the wrapper key which will use to stored wrapped parameters.
def _wrapper_key
  _wrapper_options[:name]
end

def process_action(*args)

by the metal call stack.
Performs parameters wrapping upon the request. Will be called automatically
def process_action(*args)
  if _wrapper_enabled?
    wrapped_hash = _wrap_parameters request.request_parameters
    wrapped_filtered_hash = _wrap_parameters request.filtered_parameters
    # This will make the wrapped hash accessible from controller and view
    request.parameters.merge! wrapped_hash
    request.request_parameters.merge! wrapped_hash
    # This will make the wrapped hash displayed in the log file
    request.filtered_parameters.merge! wrapped_filtered_hash
  end
  super
end