Exemplo n.º 1
0
def ParseNamespaceCode(NamespaceName,code):
    from Class import Class,ClassRegister
    from settings import PrivateDefinition,PublicDefinition
    from settings import ProtectedDefinition,PartialDefinition
    from settings import StaticDefinition
    tmp = code
    for CLdef in ClassDefinition: #settings.ClassDefinition
        CLstart = CLdef[0]
        CLend = CLdef[1]
        while (tmp.find(CLstart)>-1):
            CLstartPos = tmp.find(CLstart)
            CLlogBlockStartPos = tmp[CLstartPos:].find(Tag.format(name="LogicalBlockStart",idValue=0)[:19]) + CLstartPos
            CLlogBlockID=tmp[CLlogBlockStartPos:]
            CLlogBlockID = CLlogBlockID[CLlogBlockID.find("ID=")+3:]
            CLlogBlockID = CLlogBlockID[:CLlogBlockID.find(Tag.format(name="LogicalBlockStart",idValue=0)[-3:])]
            CLlogBlockEndPos = tmp.find(Tag.format(name="LogicalBlockEnd",idValue=CLlogBlockID)) + len(Tag.format(name="LogicalBlockEnd",idValue=CLlogBlockID))
            CLendPos = CLlogBlockEndPos
            i = CLstartPos
            while not(tmp[i-1] in ['\n',EndlineSeparator] or i==0):
                i=i-1
            FullClassName=tmp[i:CLlogBlockStartPos].replace(CLstart," "+NamespaceName+".").replace("\n","").replace("  "," ")
            if FullClassName[0]==" ":
                FullClassName=FullClassName[1:]
                    
            cls = Class(FullClassName,tmp[CLlogBlockStartPos:CLlogBlockEndPos])
                
            if (FullClassName.find(PrivateDefinition)>-1):
                cls.Private=True
                FullClassName = FullClassName.replace(PrivateDefinition,"")
                    
            if (FullClassName.find(PublicDefinition)>-1):
                cls.Public=True
                FullClassName = FullClassName.replace(PublicDefinition,"")
                    
            if (FullClassName.find(ProtectedDefinition)>-1):
                cls.Protected=True
                FullClassName = FullClassName.replace(ProtectedDefinition,"")
                    
            if (FullClassName.find(PartialDefinition)>-1):
                cls.Partial=True
                FullClassName = FullClassName.replace(PartialDefinition,"")
                    
            if (FullClassName.find(StaticDefinition)>-1):
                cls.Static=True
                FullClassName = FullClassName.replace(StaticDefinition,"")
                    
            if (len(FullClassName.replace(" ",""))>0):
                cls.Name = FullClassName
            
            ParseClassName(cls)
            
            ClassRegister.AddClass(cls)
                
            tmp = tmp[:i]+Tag.format(name="Class",idValue=cls.ID) + tmp[CLendPos:]    
    return tmp