diff --git a/sgf.py b/sgf.py new file mode 100644 --- /dev/null +++ b/sgf.py @@ -0,0 +1,45 @@ +import re +import datetime + +class Sgf: + gameName=None + black=None + white=None + rankB=None + rankW=None + + result=None + komi=6.5 + + date=None + place=None + + moves=[] + + def __init__(self,s): + m=re.search("GN\[.*\]",s) + if m: self.gameName=m.group() + m=re.search("PB\[.*\]",s) + if m: self.black=m.group() + m=re.search("PW\[.*\]",s) + if m: self.white=m.group() + m=re.search("BR\[.*\]",s) + if m: self.rankB=m.group() + m=re.search("WR\[.*\]",s) + if m: self.rankW=m.group() + m=re.search("RE\[.*\]",s) + if m: self.result=m.group() + m=re.search("KM\[.*\]",s) + if m: self.komi=m.group() + m=re.search("PC\[.*\]",s) + if m: self.place=m.group() + m=re.search("DT\[.*\]",s) + if m: self.date=m.group() # naparsovat ho + + self.moves=re.findall("\W([BW])\[([a-s]{2})\]",s) # a pass? + char2int=lambda a:ord(a)-ord('a') + self.moves=[(c,(char2int(m[0]),char2int(m[1]))) for c,m in self.moves] + + def getMoves(self): + return self.moves.copy() + \ No newline at end of file