def testFilterWords(self): """ This method tests :func:`foundations.strings.filterWords` definition. """ self.assertIsInstance(strings.filterWords("Users are John Doe and Jane Doe".split()), list) self.assertListEqual(strings.filterWords("Users are John Doe and Jane Doe".split(), filtersIn=("Users", "John")), "Users John".split()) self.assertListEqual(strings.filterWords("Users are John Doe and Jane Doe".split(), filtersIn=("users", "john"), flags=re.IGNORECASE), "Users John".split()) self.assertListEqual(strings.filterWords("Users are John Doe and Jane Doe".split(), filtersIn=("Nemo",)), []) self.assertListEqual(strings.filterWords("Users are John Doe and Jane Doe".split(), filtersOut=("Users", "John")), "are Doe and Jane Doe".split()) self.assertListEqual(strings.filterWords("Users are John Doe and Jane Doe".split(), filtersOut=("Users are John Doe and Jane Doe".split())), []) self.assertListEqual(strings.filterWords("Users are John Doe and Jane Doe".split(), filtersIn=("Users",), filtersOut=("Users",)), [])
def walk(self, filtersIn=None, filtersOut=None, flags=0, shorterHashKey=True, visitor=None): """ This method gets root directory files list as a dictionary using given filters. :param filtersIn: Regex filters in list. ( Tuple / List ) :param filtersIn: Regex filters out list. ( Tuple / List ) :param flags: Regex flags. ( Integer ) :param visitor: Visitor object. ( Object ) :return: Files list. ( Dictionary or None ) """ if filtersIn: LOGGER.debug("> Current filters in: '{0}'.".format(filtersIn)) if filtersOut: LOGGER.debug("> Current filters out: '{0}'.".format(filtersOut)) if not self.__root: return self.__files = {} for parentDirectory, directories, files in os.walk(self.__root, topdown=False, followlinks=True): for item in files: LOGGER.debug("> Current file: '{0}' in '{1}'.".format(item, self.__root)) path = strings.toForwardSlashes(os.path.join(parentDirectory, item)) if os.path.isfile(path): if not strings.filterWords((path,), filtersIn, filtersOut, flags): continue LOGGER.debug("> '{0}' file filtered in!".format(path)) hashKey = hashlib.md5(path).hexdigest() name = namespace.setNamespace(foundations.common.getFirstItem(os.path.splitext(item)), hashKey[:self.__hashSize] if shorterHashKey else hashKey) LOGGER.debug("> Adding '{0}' with path: '{1}' to files list.".format(name, path)) self.__files[name] = path visitor and visitor(self.__files, name) return self.__files