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()