예제 #1
0
class Grepper(object):
    def __init__(self, commandline_parser_results):
        self.commandline_parser_results = commandline_parser_results
        self.regex_searcher = RegexSearcher(
            self.commandline_parser_results.regexes,
            invert_match=self.commandline_parser_results.invert_match)

    def grep_stdin(self):
        """
        Process grep operation on stdin.

        :return: If any match occurred
        """

        for result in self.regex_searcher.search_in_stdin():
            yield result

    def handle_directory(self, file_name):
        if not self.commandline_parser_results.recursion_any:
            printer_helper.print_is_directory(file_name)
        else:
            for filename in file_helper.files_from_directory_recursive(
                    file_name,
                    self.commandline_parser_results.dereference_recursive):
                for match in self.regex_searcher.search_in_file(filename):
                    yield match

    def grep_files_from_commandline(self):
        """
        Process grep operation on files specified via commandline.

        following symlinks
        :return: If any match occurred
        """

        for file_name in self.commandline_parser_results.PATH:
            if file_helper.file_is_directory(file_name):
                for match in self.handle_directory(file_name):
                    yield match
            else:
                for match in self.regex_searcher.search_in_file(file_name):
                    yield match

    def grep(self):
        if self.commandline_parser_results.PATH:
            for result in self.grep_files_from_commandline():
                yield result

        for result in self.grep_stdin():
            yield result
예제 #2
0
class Grepper(object):
    def __init__(self, commandline_parser_results):
        self.commandline_parser_results = commandline_parser_results
        self.regex_searcher = RegexSearcher(
            self.commandline_parser_results.regexes, invert_match=self.commandline_parser_results.invert_match
        )

    def grep_stdin(self):
        """
        Process grep operation on stdin.

        :return: If any match occurred
        """

        for result in self.regex_searcher.search_in_stdin():
            yield result

    def handle_directory(self, file_name):
        if not self.commandline_parser_results.recursion_any:
            printer_helper.print_is_directory(file_name)
        else:
            for filename in file_helper.files_from_directory_recursive(
                file_name, self.commandline_parser_results.dereference_recursive
            ):
                for match in self.regex_searcher.search_in_file(filename):
                    yield match

    def grep_files_from_commandline(self):
        """
        Process grep operation on files specified via commandline.

        following symlinks
        :return: If any match occurred
        """

        for file_name in self.commandline_parser_results.PATH:
            if file_helper.file_is_directory(file_name):
                for match in self.handle_directory(file_name):
                    yield match
            else:
                for match in self.regex_searcher.search_in_file(file_name):
                    yield match

    def grep(self):
        if self.commandline_parser_results.PATH:
            for result in self.grep_files_from_commandline():
                yield result

        for result in self.grep_stdin():
            yield result
예제 #3
0
 def __init__(self, commandline_parser_results):
     self.commandline_parser_results = commandline_parser_results
     self.regex_searcher = RegexSearcher(
         self.commandline_parser_results.regexes,
         invert_match=self.commandline_parser_results.invert_match)
예제 #4
0
 def __init__(self, commandline_parser_results):
     self.commandline_parser_results = commandline_parser_results
     self.regex_searcher = RegexSearcher(
         self.commandline_parser_results.regexes, invert_match=self.commandline_parser_results.invert_match
     )