docs: def savvyize(self, input_string, recursive=False, stemma=False):
          '''
          Determines which files should be processed
          NB: this is the PUBLIC method
          @returns filenames_list
          '''
          input_string = os.path.abspath(input_string)
          tasks = []
  
          restricted = [ symbol for symbol in self.settings['skip_if_path'] ] if self.settings['skip_if_path'] else []
  
          # given folder
          if os.path.isdir(input_string):
              if recursive:
                  for root, dirs, files in os.walk(input_string): # beware of broken links on unix! (NB find ~ -type l -exec rm -f {} \;)
                      # skip_if_path directive
                      to_filter = []
                      for dir in dirs:
                          dir = u(dir)
                          for rs in restricted:
                              if dir.startswith(rs) or dir.endswith(rs):
                                  to_filter.append(dir)
                                  break
                      dirs[:] = [x for x in dirs if x not in to_filter]
                      for filename in files:
                          # skip_if_path directive
                          filename = u(filename)
                          if restricted:
                              for rs in restricted:
                                  if filename.startswith(rs) or filename.endswith(rs):
                                      break
                              else:
                                  tasks.append(root + os.sep + filename)
                          else:
                              tasks.append(root + os.sep + filename)
              else:
                  for filename in os.listdir(input_string):
                      filename = u(filename)
                      if os.path.isfile(input_string + os.sep + filename):
                          # skip_if_path directive
                          if restricted:
                              for rs in restricted:
                                  if filename.startswith(rs) or filename.endswith(rs):
                                      break
                              else:
                                  tasks.append(input_string + os.sep + filename)
                          else:
                              tasks.append(input_string + os.sep + filename)
  
          # given full filename
          elif os.path.isfile(input_string):
              tasks.append(input_string) # skip_if_path directive is not applicable here
  
          # given filename stemma
          else:
              if stemma:
                  parent = os.path.dirname(input_string)
                  for filename in os.listdir(parent):
                      filename = u(filename)
                      if input_string in parent + os.sep + filename and not os.path.isdir(parent + os.sep + filename):
                          # skip_if_path directive
                          if restricted:
                              for rs in restricted:
                                  if filename.startswith(rs) or filename.endswith(rs):
                                      break
                              else:
                                  tasks.append(parent + os.sep + filename)
                          else:
                              tasks.append(parent + os.sep + filename)
          return tasks