def visitPinyin(self, pinyin): self.checkLength(1) character, self.characters = utils.splitat(self.characters, 1) if character.isdecimal(): # Avoid making the numbers from the supplementary dictionary into toned # things, because it confuses users :-) return Text(character) else: return TonedCharacter(character, pinyin.toneinfo)
def visitTonedCharacter(self, tonedcharacter): self.checkLength(1) character, self.characters = utils.splitat(self.characters, 1) return self.checkToken(character, tonedcharacter)
def visitText(self, text): self.checkLength(len(text)) corresponding_text, self.characters = utils.splitat(self.characters, len(text)) return self.checkToken(corresponding_text, text)