docs: def matchPrefix(text):
      """
      This is silver bullet, cornerstone and magic wand of speed of this algorithm
      it filters patterns using manually selected rules. Yes, yes, it's "dirty" code and it could be beautified in
      many ways but this library intended to be fast, not beautiful. Without matching is x1.3 slower so let it be.
      :param text: text with date to match
      :return: list of patterns to run against
      """
      basekeys = []
      if not text[0].isdigit():
          if ord(text[0].lower()) in range(ord('a'), ord('z') + 1):
              basekeys = ['dt:date:eng1', 'dt:date:date_eng1x', 'dt:date:eng3', 'dt:date:date_eng2_lc', 'dt:date:date_eng2',
                          'dt:date:date_eng2_short', 'dt:date:date_eng3',
                          'dt:date:weekday_eng', 'dt:date:weekday_eng_lc', 'dt:date:weekday_eng_wshort',
                          'dt:date:weekday_eng_iso',
                          'dt:date:weekday_short_eng_iso',
                          'dt:date:fr_base_article', 'dt:date:fr_base_lc_article', 'dt:date:weekday_eng_mshort_wshort', ]
              basekeys += ['dt:date:pt_base', 'dt:date:pt_base_lc', 'dt:date:pt_base_article',
                           'dt:date:pt_base_lc_article']
              basekeys += ['dt:date:es_base', 'dt:date:es_base_lc', 'dt:date:es_base_article',
                           'dt:date:es_base_lc_article', 'dt:date:es_rare_1', 'dt:date:es_rare_2']
              basekeys += ['dt:date:it_base', 'dt:date:it_base_lc', 'dt:date:it_base_article',
                           'dt:date:it_base_lc_article', 'dt:date:it_rare_1', 'dt:date:it_rare_2']
          else:
              basekeys = ['dt:date:weekday_rus', 'dt:date:weekday_rus_lc1', 'dt:date:rare_5', 'dt:date:rare_6', ]
      else:
          if text[1] == '.' or text[2] == '.':
              basekeys = ['dt:date:date_2', 'dt:date:date_4', 'dt:date:date_rus3', 'dt:date:date_4_point',
                          'dt:date:date_eng1', 'dt:date:noyear_1',
                          'dt:date:rare_2', 'dt:date:rare_3', ]
              basekeys += ['dt:date:de_base', 'dt:date:de_base_lc']
          elif text[1] == ',' or text[2] == ',':
              basekeys = ['dt:date:date_rus', ]
          elif text[1] == '/' or text[2] == '/':
              basekeys = ['dt:date:date_1', 'dt:date:date_9', "dt:date:date_8", 'dt:date:date_usa', 'dt:date:date_usa_1',
                          'dt:date:rare_1']
          elif text[1] == '-' or text[2] == '-':
              basekeys = ['dt:date:date_iso8601', 'dt:date:date_iso8601_short']
          elif text[4] == '-':
              basekeys = ['dt:date:date_iso8601', 'dt:date:date_9']
          elif text[4] == '.':
              basekeys = ['dt:date:date_10']
          else:
              basekeys = ['dt:date:date_3', 'dt:date:date_5', 'dt:date:date_6', 'dt:date:date_7', 'dt:date:date_rus',
                          'dt:date:date_rus2', 'dt:date:date_rus_lc1',
                          'dt:date:date_rus_lc2', 'dt:date:date_eng1', 'dt:date:date_eng1_short',
                          'dt:date:date_eng1_lc', 'dt:date:date_eng1xx']
              # I have to add others date keys since sometimes spaces used in date inside
              basekeys += ['dt:date:date_1', 'dt:date:date_9', "dt:date:date_8", 'dt:date:date_usa', 'dt:date:date_usa_1',
                           'dt:date:rare_1',
                           'dt:date:rare_2', 'dt:date:rare_3', 'dt:date:rare_4', 'dt:date:date_5', 'dt:date:fr_base',
                           'dt:date:fr_base_lc']
              # Adding portugal dates
              basekeys += ['dt:date:pt_base_article', 'dt:date:pt_base_lc_article', 'dt:date:pt_base',
                           'dt:date:pt_base_lc']
              # Adding german dates
              basekeys += ['dt:date:de_base', 'dt:date:de_base_lc']
              # Adding bulgarian dates
              basekeys += ['dt:date:bg_base', 'dt:date:bg_base_lc']
              # Adding spanish dates
              basekeys += ['dt:date:es_base', 'dt:date:es_base_lc', 'dt:date:es_base_article',
                           'dt:date:es_base_lc_article']
              basekeys += ['dt:date:it_base', 'dt:date:it_base_lc', 'dt:date:it_base_article',
                           'dt:date:it_base_lc_article']
      #        print('Basekeys', basekeys, 'for', text)
      return basekeys