def add_accent_char(char, accent): """ Add accent to a single char. Parameter accent is member of class Accent """ if char == "": return "" case = char.isupper() char = char.lower() index = utils.VOWELS.find(char) if (index != -1): index = index - index % 6 + 5 char = utils.VOWELS[index - accent] return utils.change_case(char, case)
def _get_transformation_list(key, im, fallback_sequence): """ Return the list of transformations inferred from the entered key. The map between transform types and keys is given by module bogo_config (if exists) or by variable simple_telex_im if entered key is not in im, return "+key", meaning appending the entered key to current text """ # if key in im: # lkey = key # else: # lkey = key.lower() lkey = key.lower() if lkey in im: if isinstance(im[lkey], list): trans_list = im[lkey] else: trans_list = [im[lkey]] for i, trans in enumerate(trans_list): if trans[0] == '<' and key.isalpha(): trans_list[i] = trans[0] + \ utils.change_case(trans[1], int(key.isupper())) if trans_list == ['_']: if len(fallback_sequence) >= 2: # TODO Use takewhile()/dropwhile() to process the last IM keypress # instead of assuming it's the last key in fallback_sequence. t = list( map( lambda x: "_" + x, _get_transformation_list(fallback_sequence[-2], im, fallback_sequence[:-1]))) # print(t) trans_list = t # else: # trans_list = ['+' + key] return trans_list else: return ['+' + key]
def add_mark_char(char, mark): """ Add mark to a single char. """ if char == "": return "" case = char.isupper() ac = accent.get_accent_char(char) char = accent.add_accent_char(char.lower(), Accent.NONE) new_char = char if mark == Mark.HAT: if char in FAMILY_A: new_char = "â" elif char in FAMILY_O: new_char = "ô" elif char in FAMILY_E: new_char = "ê" elif mark == Mark.HORN: if char in FAMILY_O: new_char = "ơ" elif char in FAMILY_U: new_char = "ư" elif mark == Mark.BREVE: if char in FAMILY_A: new_char = "ă" elif mark == Mark.BAR: if char in FAMILY_D: new_char = "đ" elif mark == Mark.NONE: if char in FAMILY_A: new_char = "a" elif char in FAMILY_E: new_char = "e" elif char in FAMILY_O: new_char = "o" elif char in FAMILY_U: new_char = "u" elif char in FAMILY_D: new_char = "d" new_char = accent.add_accent_char(new_char, ac) return utils.change_case(new_char, case)
def _get_transformation_list(key, im, fallback_sequence): """ Return the list of transformations inferred from the entered key. The map between transform types and keys is given by module bogo_config (if exists) or by variable simple_telex_im if entered key is not in im, return "+key", meaning appending the entered key to current text """ # if key in im: # lkey = key # else: # lkey = key.lower() lkey = key.lower() if lkey in im: if isinstance(im[lkey], list): trans_list = im[lkey] else: trans_list = [im[lkey]] for i, trans in enumerate(trans_list): if trans[0] == '<' and key.isalpha(): trans_list[i] = trans[0] + \ utils.change_case(trans[1], int(key.isupper())) if trans_list == ['_']: if len(fallback_sequence) >= 2: # TODO Use takewhile()/dropwhile() to process the last IM keypress # instead of assuming it's the last key in fallback_sequence. t = list(map(lambda x: "_" + x, _get_transformation_list(fallback_sequence[-2], im, fallback_sequence[:-1]))) # print(t) trans_list = t # else: # trans_list = ['+' + key] return trans_list else: return ['+' + key]