예제 #1
0
파일: workspace.py 프로젝트: lerouxb/ni
    def filepaths(self, named_filtr=None, glob_filter=None, re_filter=None,
                  skip_hidden=True):

        kwargs = {
            'rootpath': self.root_path,
            'dirpath': self.root_path,
            'exclude_globs': self.exclude_globs,
            'exclude_regulars': self.exclude_regulars,
            'exclude_hidden': skip_hidden
        }

        if named_filtr:
            if self.filter_globs.has_key(named_filtr):
                pattern = self.filter_globs[named_filtr]
                kwargs['match_func'] = lambda s: glob_match(s, pattern)

            elif self.filter_regulars.has_key(named_filtr):
                pattern = re.compile(self.filter_regulars[named_filtr])
                kwargs['match_func'] = lambda s: bool(pattern.match(s))

            else:
                raise InvalidFilter(named_filtr)

        elif glob_filter:
            kwargs['match_func'] = lambda s: glob_match(s, glob_filter)

        elif re_filter:
            kwargs['match_func'] = lambda s: bool(re_filter.match(s))

        for f in filtered_files(**kwargs):
            yield f
예제 #2
0
파일: test_files.py 프로젝트: lerouxb/ni
    def test_filtered_files_exclude_globs(self):
        prefixes = 'text'.split(' ')

        output = []
        for filename in filtered_files(self.rootpath, self.rootpath,
                                       ['sub*'], [], True):
            output.append(filename)

        # make sure the filenames start with prefixes in the expected order
        assert len(prefixes) == len(output)
        for prefix, filename in zip(prefixes, output):
            assert os.path.basename(filename).startswith(prefix)
예제 #3
0
파일: test_files.py 프로젝트: lerouxb/ni
    def test_filtered_files_all(self):
        prefixes = 'text settings 0 1 2'.split(' ')

        output = []
        for filename in filtered_files(self.rootpath, self.rootpath,
                                       [], [], False):
            output.append(filename)

        # make sure the filenames start with prefixes in the expected order
        assert len(prefixes) == len(output)
        for prefix, filename in zip(prefixes, output):
            assert os.path.basename(filename).startswith(prefix)
예제 #4
0
파일: test_files.py 프로젝트: lerouxb/ni
    def test_filtered_files_exclude_regulars(self):
        # filtered_files(rootpath, dirpath, exclude_globs, exclude_regulars, exclude_hidden, match_func)
        prefixes = 'text 2'.split(' ')

        reg_str = '.*\/0.*'             # not compiled yet
        reg_obj = re.compile('.*\/1.*') # already compiled

        output = []
        for filename in filtered_files(self.rootpath, self.rootpath,
                                       [], [reg_str, reg_obj], True):
            output.append(filename)

        # make sure the filenames start with prefixes in the expected order
        assert len(prefixes) == len(output)
        for prefix, filename in zip(prefixes, output):
            assert os.path.basename(filename).startswith(prefix)
예제 #5
0
파일: test_files.py 프로젝트: lerouxb/ni
    def test_filtered_files_match_func(self):
        def starts_with_digit(filename):
            # dummy match function that matches filenames that start with
            # a digit
            if os.path.basename(filename)[0].isdigit():
                return True
            return False

        prefixes = '0 1 2'.split(' ')
        output = []
        for filename in filtered_files(self.rootpath, self.rootpath,
                                       [], [], True, starts_with_digit):
            output.append(filename)

        # make sure the filenames start with prefixes in the expected order
        assert len(prefixes) == len(output)
        for prefix, filename in zip(prefixes, output):
            assert os.path.basename(filename).startswith(prefix)