import os from itertools import count from jinja2 import Environment,FileSystemLoader class DiagramPoint: def __init__(self,x,y,color="",label=""): self.x=x self.y=y self.color=color self.label=label def __repr__(self): return 'DiagramPoint({0},{1},"{2}","{3}")'.format(self.x,self.y,self.color,self.label) class Base: highNumbers=True def __init__(self,start=0): self.overlays=[] self._letter="a" self._index=dict() self._indexGen=count(start) curDir=os.path.dirname(__file__) templateDir=os.path.join(curDir,"..","templ") self._env=Environment(loader=FileSystemLoader(templateDir)) self._env.trim_blocks=True self._env.lstrip_blocks=True def addStone(self,x,y,color): assert (x,y) not in self._index self._index[(x,y)]=(next(self._indexGen),DiagramPoint(x,y,color)) def addMove(self,x,y,color,label): if (not self.highNumbers) and isinstance(label,int) and label%100!=0: label%=100 if (x,y) not in self._index: self._index[(x,y)]=(next(self._indexGen),DiagramPoint(x,y,color,label)) else: (_,point)=self._index[(x,y)] if not point.label: point.label=self._letter self._letter=chr(ord(self._letter)+1) self.overlays.append((label, point.label)) def addLabel(self,x,y,label): self._index[(x,y)]=(next(self._indexGen),DiagramPoint(x,y,"",label)) def save(self,filename): notes=open(filename+".txt", 'w') notes.write("\n".join("{0} = {1}".format(a,b) for (a,b) in self.overlays)) notes.close()