Example #1
0
    def processFile(self, fname):
        """
        Process a single xuff file
        """
        xml = parse_xml(fname)
        for e in xml:
            if self.isXuffElement(e):
                handler = None
                try:
                    handler = getattr(self, 'handle_' + self.local_name(e))
                except AttributeError:
                    self.error("Didn't understand %s instruction" % (e.tag))

                if handler:
                    global _verbose
                    doVerbose = self.getAttr(e, 'verbose', 'unchanged')
                    oldVerbose = _verbose
                    if doVerbose != 'unchanged':
                        _verbose = doVerbose.lower() in [
                            '1', 'true', 't', 'on', 'yes', 'y'
                        ]
                    timer = Timer()
                    handler(e)
                    if self.timing:
                        timer.show("<%10s>" % e.tag)
                    _verbose = oldVerbose
Example #2
0
 def startElement(self, name, attrs):
     vars = self.stack[-1].copy()
     self.stack.append(vars)
     handler = self.handlers[name]
     locator = self.locator
     if locator is not None:
         source = (locator.getSystemId(), locator.getLineNumber())
     else:
         source = ("unknown", 0)
     handler(source, vars, attrs)
Example #3
0
 def startElement(self, name, attrs):
     vars = self.stack[-1].copy()
     self.stack.append(vars)
     handler = self.handlers[name]
     locator = self.locator
     if locator is not None:
         source = (locator.getSystemId(), locator.getLineNumber())
     else:
         source = ("unknown", 0)
     handler(source, vars, attrs)
Example #4
0
    def endElementNS(self, name, qname):
        last = self.stack.pop()
        handler = self.end_handlers.get(name)
        if handler:
            try:
                handler(self, last)
            except:
                raise HandlerError(sys.exc_info()[1], name[1], self.locator
                    ), None, sys.exc_info()[2]

        self.textstack.pop()
Example #5
0
    def endElementNS(self, name, qname):
        last = self.stack.pop()
        handler = self.end_handlers.get(name)
        if handler:
            try:
                handler(self, last)
            except:
                raise HandlerError(sys.exc_info()[1], name[1],
                                   self.locator), None, sys.exc_info()[2]

        self.textstack.pop()
Example #6
0
    def endElement(self, name):
        """
        Handle closing elements

        :param name: Name of the element
        :type name: String
        """
        if name in self.ignore_end:
            return
        try:
            handler = getattr(self, '_handle_end_%s' % name)
        except AttributeError:
            raise KeyError("Unknown element start '%s'" % name)
        handler()
Example #7
0
    def endElement(self, name):
        """
        Handle closing elements

        :param name: Name of the element
        :type name: String
        """
        if name in self.ignore_end:
            return
        try:
            handler = getattr(self, '_handle_end_%s' % name)
        except AttributeError:
            raise KeyError("Unknown element start '%s'" % name)
        handler()
Example #8
0
    def startElement(self, name, attrs):
        """
        Handle opening elements.

        :param name: Name of the element
        :type name: String
        :param attrs: Attributes of the element
        :type attrs: Dict
        """
        if name in self.ignore_start:
            return
        try:
            handler = getattr(self, '_handle_start_%s' % name)
        except AttributeError:
            raise KeyError("Unknown element start '%s'" % name)
        handler(attrs)
Example #9
0
    def startElement(self, name, attrs):
        """
        Handle opening elements.

        :param name: Name of the element
        :type name: String
        :param attrs: Attributes of the element
        :type attrs: Dict
        """
        if name in self.ignore_start:
            return
        try:
            handler = getattr(self, '_handle_start_%s' % name)
        except AttributeError:
            raise KeyError("Unknown element start '%s'" % name)
        handler(attrs)
Example #10
0
 def walk(cls, n, handler=None, deepfirst=True):
     if handler is None: handler = lambda x:x
     node = n
     if deepfirst:
         stack = [node]
         while stack:
             node = stack.pop(0)
             stack = list(node) + stack
             yield handler(node)
     else:
         nodes = [node]
         while nodes:
             tohandle, nodes = nodes, []
             for node in tohandle:
                 nodes.extend(node)
                 yield handler(node)
Example #11
0
 def readContent(self, handler, result=None):
     buffer = ""
     while True:
         type = self.token[0]
         if type == IgnorableWhitespace:
             buffer += self.token[1]
         elif type == Characters:
             buffer += self.token[1]
         elif type == EndElement:
             break
         yield
     
     if isinstance(handler, types.ListType):
         handler[0] = buffer
     else:
         handler(buffer)
     
     if result:
         yield Return(result)
Example #12
0
    def processFile(self, fname):
        """
        Process a single xuff file
        """
        xml = parse_xml(fname)
        for e in xml:
            if self.isXuffElement(e):
                handler = None
                try:
                    handler = getattr(self, 'handle_' + self.local_name(e))
                except AttributeError:
                    self.error("Didn't understand %s instruction" % (e.tag))

                if handler:
                    global _verbose
                    doVerbose = self.getAttr(e, 'verbose', 'unchanged')
                    oldVerbose = _verbose
                    if doVerbose != 'unchanged':
                        _verbose = doVerbose.lower() in ['1', 'true', 't', 'on', 'yes', 'y']
                    timer = Timer()
                    handler(e)
                    if self.timing:
                        timer.show("<%10s>" % e.tag)
                    _verbose = oldVerbose
Example #13
0
    def startElementNS(self, name, qname, attrs):
        handler = self.start_handlers.get(name)
        if handler:
            try:
                result = handler(self, attrs)
            except:
                raise HandlerError(sys.exc_info()[1], name[1], self.locator
                    ), None, sys.exc_info()[2]
        else:
            result = None

        if result is None:
            # Just dup the top of the stack
            result = self.stack[-1]

        self.stack.append(result)
        self.textstack.append(u'')
Example #14
0
    def startElementNS(self, name, qname, attrs):
        handler = self.start_handlers.get(name)
        if handler:
            try:
                result = handler(self, attrs)
            except:
                raise HandlerError(sys.exc_info()[1], name[1],
                                   self.locator), None, sys.exc_info()[2]
        else:
            result = None

        if result is None:
            # Just dup the top of the stack
            result = self.stack[-1]

        self.stack.append(result)
        self.textstack.append(u'')
Example #15
0
def parse(parser, exporter, entity_type, handler, options):
    input_file = None
    match_string = '_%s.xml' % entity_type
    in_file = first_file_match(match_string, options)
    if options.date is not None:
        input_file = "discogs_%s_%s.xml.gz" % (options.date, entity_type)
        if not path.exists(input_file):
            input_file = "discogs_%s_%s.xml" % (options.date, entity_type)
    elif in_file is not None:
        input_file = in_file
    if input_file is None:
        return
    elif not path.exists(input_file):
        return
    parser.setContentHandler(handler(exporter, options))
    try:
        if input_file.endswith('.gz'):
            parser.parse(gzip.open(input_file, 'rb'))
        else:
            parser.parse(input_file)
    except ParserStopError as pse:
        print "Parsed %d %s then stopped as requested." % (pse.records_parsed,
                                                           entity_type)
Example #16
0
 def fire(self, *args, **keywargs):
     for handler in self.__handlers:
         handler(*args, **keywargs)