예제 #1
0
def extractXml(prjPfx, filename):

    print "Parsing %s" % filename
    try:
        f = open(filename, "rb")
    except IOError:  # A broken symlink could cause this to be unopenable even though the directory entry exists
        print "Cannot open %s" % filename
        return ""

    text = f.read()

    if filename.startswith(prjPfx):
        filename = filename[len(prjPfx):]

    xmltxt = "<%s name='%s' language='text'>" % (
        TagFile, filename) + text + "</%s>" % TagFile

    try:
        xml = microdom.parseString(xmltxt)
    except microdom.ExpatError, e:
        print "File %s: XML ERROR '%s'" % (filename, str(e))
        f = open("error.xml", "wb")
        f.write(xmltxt)
        f.close()
        print "Errored file written to 'error.xml'"
        # print xmltxt
        pdb.set_trace()
예제 #2
0
def comments2MicroDom(comments, filename):
    """<fn>Convert a list of (line number,comment) to an xml doc</fn>"""

    xml = "<%s name='%s' language='c++'>" % (TagFile, filename) + "\n".join(
        comments) + "</%s>" % TagFile
    try:
        dom = microdom.parseString(xml)
    except microdom.ExpatError, e:
        print "File: %s: XML ERROR!" % filename, str(e)
        try:
            print "Clause: %s" % comments[e.lineno - 1]
        except:
            pass
        pdb.set_trace()
예제 #3
0
def extractXml(prjPfx, filename):

    print "Parsing %s" % filename
    f = open(filename, "rb")
    text = f.read()

    if filename.startswith(prjPfx):
        filename = filename[len(prjPfx):]

    xmltxt = "<%s name='%s' language='text'>" % (
        TagFile, filename) + text + "</%s>" % TagFile

    try:
        xml = microdom.parseString(xmltxt)
    except microdom.ExpatError, e:
        print "XML ERROR!", str(e)
        print str(xml)
        pdb.set_trace()
예제 #4
0
파일: dc.py 프로젝트: OpenClovis/yadog
def comments2MicroDom(comments, filename):
    """<fn>Convert a list of (line number,comment) to an xml doc</fn>"""

    xml = "<%s name='%s' language='c++'>" % (TagFile, filename) + "\n".join(
        comments) + "</%s>" % TagFile
    try:
        dom = microdom.parseString(xml)
    except microdom.ExpatError, e:
        print "Error: %s (error XML written to error.xml)" % str(e)
        print "> %s(%d)unknown()" % (filename, e.lineno)
        try:
            print "-> %s" % comments[e.lineno - 1]
        except:
            pass
        # write the bad xml out to an analysis file
        f = open("error.xml", "w")
        f.write(xml)
        f.close()
        raise
예제 #5
0
파일: dp.py 프로젝트: OpenClovis/yadog
def comments2MicroDom(comments, filename):
    """?<fn>Convert a list of (line number,comment) to an xml doc</fn>"""

    # Add a line num attribute to all xml tags
    text = []
    pat = re.compile("<(\w+)")

    for (line, comment) in comments:
        #print "c2md:", line,comment
        newcomment = re.sub(pat, lambda x, y=line: addLineAttr(x, y), comment)
        text.append(newcomment)

    #print text
    xml = "<%s name='%s' language='python'>" % (TagFile, filename) + "".join(
        text) + "</%s>" % TagFile
    try:
        dom = microdom.parseString(xml)
    except microdom.ExpatError, e:
        print "XML ERROR!", str(e)
        print str(xml)
        raise