/**
  * @param FilterDatasourceAdapterInterface $ds
  * @param mixed                            $data
  *
  * @return array|bool
  */
 protected function prepareData(FilterDatasourceAdapterInterface $ds, $data)
 {
     if (!is_array($data) || !array_key_exists('value', $data) || !array_key_exists('type', $data) || !$data['value'] && FilterType::TYPE_EMPTY !== $data['type']) {
         return false;
     }
     $data['value'] = preg_quote($data['value']);
     $data['type'] = isset($data['type']) ? $data['type'] : null;
     if ('in' === $data['type']) {
         $data['value'] = explode(',', $data['value']);
     } else {
         $format = $ds->getFormatByComparisonType($data['type']);
         $data['value'] = sprintf($format, $data['value']);
     }
     return $data;
 }