# coding=utf-8 # Hint.instantiate takes a hint object (dictionary) to be sent to the client # and sets additional fields based on previously sent hints. # Simple hint: don't do anything on instantiation. class Hint(object): hint_type = 'static' def __init__(self, name): self.name = name def instantiate(self, hint, prev_hints): pass # Hint sequence: static type, but each time a hint is sent, increase the # message index until the last message is reached, then repeat that. class HintSequence(Hint): def __init__(self, name, length): self.name = name self.length = length def instantiate(self, hint, prev_hints): index = 0 for prev_hint in prev_hints: if prev_hint['id'] == self.name: index = max(index, prev_hint['indices'][0]+1) index = min(index, self.length-1) hint['indices'] = [index] # Popup hints: don't do anything on instantiation. class HintPopup(Hint): hint_type = 'popup' def __init__(self, name): self.name = name def instantiate(self, hint, prev_hints): pass