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