def format_additional_param(additional, context_format = 'searching')
      if additional.is_a? Hash
        additional = additional.map do |field, value|
          if value.is_a?(Hash)
            value = {
              proc: nil,
              all: [],
              description: ''
            }.merge(value)
          elsif value.is_a? Array
            value = {
              proc: value.try(:at, 0),
              all: value.try(:at, 1) || [],
              description: value.try(:at, 2) || ''
            }
          elsif value.is_a? Proc
            value = {
              proc: value,
              all: [],
              description: ''
            }
          else
            raise "Unable to format addional #{context_format} params (got #{additional})"
          end
          [field, value]
        end.to_h
      end
      additional
    end
def format_additional_param(additional, context_format = 'searching')
      if additional.is_a? Hash
        additional = additional.map do |field, value|
          if value.is_a?(Hash)
            value = {
              proc: nil,
              all: [],
              description: ''
            }.merge(value)
          elsif value.is_a? Array
            value = {
              proc: value.try(:at, 0),
              all: value.try(:at, 1) || [],
              description: value.try(:at, 2) || ''
            }
          elsif value.is_a? Proc
            value = {
              proc: value,
              all: [],
              description: ''
            }
          else
            raise "Unable to format addional #{context_format} params (got #{additional})"
          end
          [field, value]
        end.to_h
      end
      additional
    end
On va essayer de garder un format commun, qui est:

 ```
 search: {
   proc: -> (values) { * je fais des trucs avec les values * },
   all: ['les', 'valeurs', 'aceptées'],
   description: "La description dans la doc"
 }
 ```

 On va donc transformer `additional` dans le format ci-dessus