def __init__(self, name, description, lexer, file_patterns, comment_token="", keywords="", indent_width=4, tab_width=8, use_tabs=False): self.name = name self.description = description self.lexer = lexer self.file_patterns = file_patterns self.comment_token = comment_token self.indent_width = indent_width self.tab_width = tab_width self.use_tabs = use_tabs self.keywords = keywords file_patterns_list = file_patterns.split(";") file_patterns = ";".join(file_patterns_list + [ext + ".in" for ext in file_patterns_list]) self.file_regex = compile_file_patterns(file_patterns)
def find(self, details): self.stop() matcher = make_matcher(details.find, case_sensitive=details.case, is_regexp=details.regexp) if details.hidden: def dir_filter(info): return True else: def dir_filter(info): return bool(not info.hidden and not re_hidden_dirs.match(info.filename)) if details.file_patterns.strip(): file_pattern_re = compile_file_patterns(details.file_patterns) if details.hidden: def file_filter(info): return bool(file_pattern_re.match(info.filename)) else: def file_filter(info): return bool(not info.hidden and not re_hidden_files.match(info.filename) and file_pattern_re.match(info.filename)) else: if details.hidden: def file_filter(info): return True else: def file_filter(info): return bool(not info.hidden and not re_hidden_files.match(info.filename)) self.start_time = time.time() self.details = details self.finder = Search(details.path, matcher, output=self, file_filter=file_filter, dir_filter=dir_filter) async_call(self.finder.search) self.Clear() self.output.start()
import re from util import compile_file_patterns hidden_files = ".*;*~;*.swp;*.pyc;*.pyo;*.o;*.a;*.obj;*.lib;*.class" hidden_dirs = ".*;CVS;__pycache__" re_hidden_files = compile_file_patterns(hidden_files) re_hidden_dirs = compile_file_patterns(hidden_dirs) class DirTreeFilter(object): def __init__(self, show_hidden=False, show_files=True, show_dirs=True, hidden_files=hidden_files, hidden_dirs=hidden_dirs): self.show_hidden = show_hidden self.show_files = show_files self.show_dirs = show_dirs self.re_hidden_file = re_hidden_files self.re_hidden_dirs = re_hidden_dirs def __call__(self, info): if info.hidden and not self.show_hidden: return False if info.is_file and not self.show_files: return False if info.is_dir: if not self.show_dirs: return False if self.re_hidden_dirs.match(info.filename): return False else: if self.re_hidden_file.match(info.filename): return False