|
|
|
|
|
|
|
|
|
|
|
|
|
|
import re |
|
|
|
|
|
moduleMap = { |
|
|
'HTMLtree': 'HTML', |
|
|
'HTMLparser': 'HTML', |
|
|
'c14n': 'C14N', |
|
|
'catalog': 'CATALOG', |
|
|
'debugXML': 'DEBUG', |
|
|
'nanohttp': 'HTTP', |
|
|
'pattern': 'PATTERN', |
|
|
'relaxng': 'RELAXNG', |
|
|
'schemasInternals': 'SCHEMAS', |
|
|
'schematron': 'SCHEMATRON', |
|
|
'xinclude': 'XINCLUDE', |
|
|
'xlink': 'XPTR', |
|
|
'xmlautomata': 'REGEXP', |
|
|
'xmlmodule': 'MODULES', |
|
|
'xmlreader': 'READER', |
|
|
'xmlregexp': 'REGEXP', |
|
|
'xmlsave': 'OUTPUT', |
|
|
'xmlschemas': 'SCHEMAS', |
|
|
'xmlschemastypes': 'SCHEMAS', |
|
|
'xmlwriter': 'WRITER', |
|
|
'xpath': 'XPATH', |
|
|
'xpathInternals': 'XPATH', |
|
|
'xpointer': 'XPTR', |
|
|
} |
|
|
|
|
|
symbolMap1 = { |
|
|
|
|
|
'xmlValidateNCName': '', |
|
|
'xmlValidateNMToken': '', |
|
|
'xmlValidateName': '', |
|
|
'xmlValidateQName': '', |
|
|
|
|
|
'htmlDefaultSAXHandlerInit': 'HTML', |
|
|
'xmlSAX2InitHtmlDefaultSAXHandler': 'HTML', |
|
|
|
|
|
'xmlRegisterHTTPPostCallbacks': 'HTTP', |
|
|
|
|
|
'__xmlOutputBufferCreateFilename': 'OUTPUT', |
|
|
'xmlAttrSerializeTxtContent': 'OUTPUT', |
|
|
'xmlUTF8ToIsolat1': 'OUTPUT', |
|
|
'xmlSprintfElementContent': 'OUTPUT', |
|
|
|
|
|
'xmlCreatePushParserCtxt': 'PUSH', |
|
|
'xmlParseChunk': 'PUSH', |
|
|
|
|
|
'xmlParseBalancedChunkMemory': 'SAX1', |
|
|
'xmlParseBalancedChunkMemoryRecover': 'SAX1', |
|
|
'xmlParseDoc': 'SAX1', |
|
|
'xmlParseEntity': 'SAX1', |
|
|
'xmlParseExternalEntity': 'SAX1', |
|
|
'xmlParseFile': 'SAX1', |
|
|
'xmlParseMemory': 'SAX1', |
|
|
'xmlSAXDefaultVersion': 'SAX1', |
|
|
'xmlSetupParserForBuffer': 'SAX1', |
|
|
|
|
|
'xmlCtxtGetValidCtxt': 'VALID', |
|
|
'xmlFreeValidCtxt': 'VALID', |
|
|
'xmlNewValidCtxt': 'VALID', |
|
|
|
|
|
'xmlCatalogConvert': 'SGML_CATALOG', |
|
|
'xmlConvertSGMLCatalog': 'SGML_CATALOG', |
|
|
'xmlLoadSGMLSuperCatalog': 'SGML_CATALOG', |
|
|
} |
|
|
|
|
|
symbolMap2 = { |
|
|
|
|
|
'xmlOutputBufferCreateFilenameDefault': '', |
|
|
|
|
|
'xmlXPathDebugDumpCompExpr': 'DEBUG', |
|
|
'xmlXPathDebugDumpObject': 'DEBUG', |
|
|
'xmlSchemaDump': 'DEBUG', |
|
|
'xmlRelaxNGDump': 'DEBUG', |
|
|
|
|
|
'xmlACatalogDump': 'OUTPUT', |
|
|
'xmlCatalogDump': 'OUTPUT', |
|
|
'xmlIOHTTPOpenW': 'OUTPUT', |
|
|
'xmlNanoHTTPSave': 'OUTPUT', |
|
|
'xmlRegisterHTTPPostCallbacks': 'OUTPUT', |
|
|
'xmlRelaxNGDumpTree': 'OUTPUT', |
|
|
|
|
|
'xmlTextReaderPreservePattern': 'PATTERN', |
|
|
|
|
|
'htmlCreatePushParserCtxt': 'PUSH', |
|
|
'htmlParseChunk': 'PUSH', |
|
|
|
|
|
'xmlValidBuildContentModel': 'REGEXP', |
|
|
'xmlValidatePopElement': 'REGEXP', |
|
|
'xmlValidatePushCData': 'REGEXP', |
|
|
'xmlValidatePushElement': 'REGEXP', |
|
|
|
|
|
'xmlTextReaderRelaxNGSetSchema': 'RELAXNG', |
|
|
'xmlTextReaderRelaxNGValidate': 'RELAXNG', |
|
|
'xmlTextReaderRelaxNGValidateCtxt': 'RELAXNG', |
|
|
|
|
|
'xmlTextReaderSchemaValidate': 'SCHEMAS', |
|
|
'xmlTextReaderSchemaValidateCtxt': 'SCHEMAS', |
|
|
'xmlTextReaderSetSchema': 'SCHEMAS', |
|
|
|
|
|
'xmlTextReaderReadInnerXml': 'WRITER', |
|
|
'xmlTextReaderReadOuterXml': 'WRITER', |
|
|
} |
|
|
|
|
|
outputRegex = '|'.join(( |
|
|
'^(html|xml(Buf)?)(Doc(Content|Format)?|Elem|Node)Dump', |
|
|
'^(html|xml)Save(Format)?File', |
|
|
'^xmlDump.*(Decl|Table)', |
|
|
'^xml(Alloc)?OutputBuffer', |
|
|
'^xml.*OutputCallbacks', |
|
|
)) |
|
|
|
|
|
def findModules(filename, symbol): |
|
|
module1 = symbolMap1.get(symbol) |
|
|
|
|
|
if module1 is None: |
|
|
module1 = moduleMap.get(filename) |
|
|
|
|
|
if module1 is None: |
|
|
if re.search('^xml(Ctxt)?Valid|Parse(DTD|Dtd)', symbol): |
|
|
module1 = 'VALID' |
|
|
elif re.search('^xml(Recover|SAX(User)?Parse)', symbol): |
|
|
module1 = 'SAX1' |
|
|
elif re.search('^xmlIOHTTP', symbol): |
|
|
module1 = 'HTTP' |
|
|
|
|
|
module2 = symbolMap2.get(symbol) |
|
|
|
|
|
if module2 is None: |
|
|
if re.search(outputRegex, symbol): |
|
|
if module1 is None: |
|
|
module1 = 'OUTPUT' |
|
|
else: |
|
|
module2 = 'OUTPUT' |
|
|
|
|
|
if module1 is None: |
|
|
module1 = '' |
|
|
if module2 is None: |
|
|
module2 = '' |
|
|
|
|
|
return module1, module2 |
|
|
|