docs: def __split_info(self, info_part, patternsname, patterns):
          """
          Splits info from SAR parts into logical stuff :-)
          :param info_part: Part of SAR output we want to split into usable data
          :param patternsname: ???
          :param patterns: ???
          :return: ``List``-style info from SAR files, now finally \
              completely parsed into meaningful data for further processing
          """
  
          pattern = patterns['PATTERN']
          if pattern == '':
              return False
  
          return_dict = {}
  
          pattern_re = re.compile(pattern)
  
          for part_line in info_part.split('\n'):
  
              if part_line.strip() != '' and not pattern_re.search(part_line):
  
                  # Take care of AM/PM timestamps in SAR file
                  is_24hr = True
                  is_AM = False
  
                  if part_line[9:11] == 'AM':
                      is_24hr = False
                      is_AM = True
                  elif part_line[9:11] == 'PM':
                      is_24hr = False
                      is_AM = False
  
                  if is_24hr is False:
                      part_line =  ('%s_%s XX %s' % (part_line[:8], part_line[9:11], part_line[12:]))
  
                  # Line is not empty, nor it's header.
                  # let's hit the road Jack!
                  elems = part_line.split()
                  full_time = elems[0].strip()
  
                  if full_time != "Average:":
  
                      # Convert time to 24hr format if needed
                      if is_24hr is False:
                          full_time = full_time[:-3]
  
                          # 12 is a bitch in AM/PM notation
                          if full_time[:2] == '12':
                              if is_AM is True:
                                  full_time = ('%s:%s' % ('00', full_time[3:]))
                              is_AM = not is_AM
  
                          if is_AM is False and full_time[0:2] != '00':
                              hours = int(full_time[:2]) + 12
                              hours = ('%02d' % (hours,))
                              full_time = ('%s:%s' % (hours, full_time[3:]))
  
                      try:
                          blah = return_dict[full_time]
                          del blah
                      except KeyError:
                          return_dict[full_time] = {}
  
                      fields = self.__fields[patternsname]
                      pairs = patterns["PAIRS"]
  
                      for sectionname in pairs.iterkeys():
  
                          value = elems[fields[pairs[sectionname]]]
  
                          if sectionname == 'membuffer' or \
                                  sectionname == 'memcache' or \
                                  sectionname == 'memfree' or \
                                  sectionname == 'memused' or \
                                  sectionname == 'swapfree' or \
                                  sectionname == 'swapused':
                              value = int(value)
                          else:
                              value = float(value)
  
                          if patternsname == 'CPU':
                              cpuid = elems[(1 if is_24hr is True else 2)]
                              try:
                                  blah = return_dict[full_time][cpuid]
                                  del blah
                              except KeyError:
                                  return_dict[full_time][cpuid] = {}
                              return_dict[full_time][cpuid][sectionname] = \
                                  value
                          else:
                              return_dict[full_time][sectionname] = value
  
          return return_dict