Example #1
0
class Parser:

    CONTENT_ORDER = ContentHandler.ORDER_REVISION

    def __init__ (self):
        self.handler = ContentHandler ()
        self.repo_uri = None
        
        self.n_line = 0

    def set_content_handler (self, handler):
        self.handler = handler

    def set_repository (self, repo, uri):
        self.repo_uri = uri

    def flush (self):
        pass
        
    def _parse_line (self):
        raise NotImplementedError

    def feed (self, data):
        if self.n_line == 0:
            self.handler.begin (self.CONTENT_ORDER)

            if self.repo_uri is not None:
                self.handler.repository (self.repo_uri)
            
        for line in data.splitlines ():
            self.n_line += 1
            self._parse_line (line)

    def end (self):
        if self.n_line <= 0:
            return
        self.flush ()
        self.handler.end ()