docs: def _parse_rule(self, rule):
          '''
          Parses an extraction rule.
  
          @rule - Rule string.
  
          Returns an array of ['<case insensitive matching string>', '<file extension>', '<command to run>', '<comma separated return codes>', <recurse into extracted directories: True|False>].
          '''
          values = rule.strip().split(self.RULE_DELIM, 4)
  
          if len(values) >= 4:
              codes = values[3].split(',')
              for i in range(0, len(codes)):
                  try:
                      codes[i] = int(codes[i], 0)
                  except ValueError as e:
                      binwalk.core.common.warning("The specified return code '%s' for extractor '%s' is not a valid number!" % (codes[i], values[0]))
              values[3] = codes
  
          if len(values) >= 5:
              values[4] = (values[4].lower() == 'true')
  
          return values