in pachi_py/pachi/tools/sgflib/sgflib.py [0:0]
def parsePropertyValue(self):
""" Called when "[" encountered (but not consumed), ends when the next
property, node, or variation encountered. Parses and returns a list
of property values. Raises 'PropertyValueParseError' if there is a
problem."""
pvlist = []
while self.index < self.datalen:
match = self.rePropertyStart.match(self.data, self.index)
if match:
self.index = match.end()
v = "" # value
# scan for escaped characters (using '\'), unescape them (remove linebreaks)
mend = self.rePropertyEnd.search(self.data, self.index)
mesc = self.reEscape.search(self.data, self.index)
while mesc and mend and (mesc.end() < mend.end()):
# copy up to '\', but remove '\'
v = v + self.data[self.index:mesc.start()]
mbreak = self.reLineBreak.match(self.data, mesc.end())
if mbreak:
self.index = mbreak.end() # remove linebreak
else:
v = v + self.data[mesc.end()] # copy escaped character
self.index = mesc.end() + 1 # move to point after escaped char
mend = self.rePropertyEnd.search(self.data, self.index)
mesc = self.reEscape.search(self.data, self.index)
if mend:
v = v + self.data[self.index:mend.start()]
self.index = mend.end()
pvlist.append(self._convertControlChars(v))
else:
raise PropertyValueParseError
else: # reached end of Property
break
if len(pvlist) >= 1:
return pvlist
else:
raise PropertyValueParseError