from . import skipWhitespace, ParserError from .property import Property, GAME_INFO class Node: def __init__(self): self.properties=dict() self.parent=None self.children=[] @staticmethod def create(s,start): res=Node() if s[start]!=";": # print("error when parsing Node") return (start,None) i=skipWhitespace(s,start+1) i,x=Property.create(s,start+1) while x is not None: if x.name in res.properties: print(res.properties) raise ParserError(0,0,'duplicate "{0}" property in node at position {1}. second value ignored'.format(x.name,start)) else: res.properties[x.name]=x i=skipWhitespace(s,i) i,x=Property.create(s,i) return (i,res) def isGINode(self): return any(prop.type==GAME_INFO for prop in self.properties.values()) def setProperty(self,name,value): self.properties[name]=value # zkontrolovat typ value def setParent(self,node): self.parent=node def setChildren(self,children): self.children=children def addChild(self,node): if node in self.children: return node self.children.append(node) return node def removeChild(self,node): if node not in self.children: return None del self.children[self.children.index(node)] return node def removeChildAt(self,i): if -len(self.children)