Spaces:
Runtime error
Runtime error
| #!/usr/bin/env python | |
| # -*- coding: UTF-8 -*- | |
| """ | |
| Braille symbols declaration | |
| """ | |
| import numpy as np | |
| def angelina_label_map(): | |
| # constants for special symbols label | |
| num_sign = "##" | |
| caps_sign = "CC" | |
| markout_sign = "XX" | |
| # general symbols common for various languages | |
| sym_map = { | |
| "256": ".", | |
| "2": ",", | |
| "25": ":", | |
| "26": "?", | |
| "23": ";", | |
| "235": "!", | |
| "2356": "()", # postprocess to (, ). Labeled as ((, )), () | |
| "126": "(", | |
| "345": ")", | |
| "36": "-", | |
| "34": "/", | |
| "3456": num_sign, | |
| "123456": markout_sign, | |
| # '6': "en", | |
| # '46': "EN", # TODO only for Russian ? | |
| } | |
| # RU symbols | |
| alpha_map_RU = { | |
| "1": "а", | |
| "12": "б", | |
| "2456": "в", | |
| "1245": "г", | |
| "145": "д", | |
| "15": "е", | |
| "16": "ё", | |
| "245": "ж", | |
| "1356": "з", | |
| "24": "и", | |
| "12346": "й", | |
| "13": "к", | |
| "123": "л", | |
| "134": "м", | |
| "1345": "н", # preprocess to № if followed by number | |
| "135": "о", | |
| "1234": "п", | |
| "1235": "р", | |
| "234": "с", | |
| "2345": "т", | |
| "136": "у", | |
| "124": "ф", | |
| "125": "х", | |
| "14": "ц", | |
| "12345": "ч", | |
| "156": "ш", | |
| "1346": "щ", | |
| "12356": "ъ", | |
| "2346": "ы", | |
| "23456": "ь", | |
| "246": "э", | |
| "1256": "ю", | |
| "1246": "я", | |
| "45": caps_sign, | |
| "236": "«", # << | |
| "356": "»", # >> | |
| "4": "'", | |
| "456": "|", | |
| "346": "§", # mark as && | |
| } | |
| # UZ symbols | |
| alpha_map_UZ = { | |
| **alpha_map_RU, | |
| "1236": "ў", | |
| "13456": "қ", | |
| "12456": "ғ", | |
| "1456": "ҳ", | |
| } | |
| # EN symbols | |
| alpha_map_EN = { | |
| "1": "a", | |
| "12": "b", | |
| "14": "c", | |
| "145": "d", | |
| "15": "e", | |
| "124": "f", | |
| "1245": "g", | |
| "125": "h", | |
| "24": "i", | |
| "245": "j", | |
| "13": "k", | |
| "123": "l", | |
| "134": "m", | |
| "1345": "n", | |
| "135": "o", | |
| "1234": "p", | |
| "12345": "q", | |
| "1235": "r", | |
| "234": "s", | |
| "2345": "t", | |
| "136": "u", | |
| "1236": "v", | |
| "2456": "w", | |
| "1346": "x", | |
| "13456": "y", | |
| "1356": "z", | |
| #'6': caps_sign, # TODO duplicate оf RU caps_sign | |
| "3": "'", | |
| "236": "«", # << | |
| "356": "»", # >> | |
| # '236': '"', # mark as << | |
| # '356': '"', # mark as >> | |
| } | |
| # UZL symbols | |
| alpha_map_UZL = { | |
| **alpha_map_EN, | |
| "1236": "o`", | |
| "12456": "g`", | |
| "156": "sh", | |
| "12345": "ch", | |
| } | |
| # Greek letters | |
| alpha_map_GR = { | |
| "1": "α", | |
| "12": "β", | |
| "1245": "γ", | |
| "145": "δ", | |
| "15": "ε", | |
| "1356": "ζ", | |
| "345": "η", | |
| "1456": "θ", | |
| "24": "ι", | |
| "13": "κ", | |
| "123": "λ", | |
| "134": "μ", | |
| "1345": "ν", | |
| "1346": "ξ", | |
| "135": "ο", | |
| "1234": "π", | |
| "1235": "ρ", | |
| "234": "σ", | |
| "2345": "τ", | |
| "13456": "υ", | |
| "124": "φ", | |
| "125": "χ", | |
| "12346": "ψ", | |
| "245": "ω", | |
| "46": caps_sign, | |
| "5": "'", # stress | |
| "126": "αι", | |
| "146": "ει", | |
| "246": "οι", | |
| "12456": "υι", | |
| "16": "αυ", | |
| "156": "ευ", | |
| "1256": "ηυ", | |
| "136": "ου", | |
| } | |
| # Latvian letters | |
| alpha_map_LV = { | |
| "1": "a", | |
| "16": "ā", | |
| "12": "b", | |
| "14": "c", | |
| "146": "č", | |
| "145": "d", | |
| "15": "e", | |
| "156": "ē", | |
| "124": "f", | |
| "1245": "g", | |
| "12456": "ģ", | |
| "125": "h", | |
| "24": "i", | |
| "246": "ī", | |
| "245": "j", | |
| "13": "k", | |
| "136": "ķ", | |
| "123": "l", | |
| "1236": "ļ", | |
| "134": "m", | |
| "1345": "n", | |
| "13456": "ņ", | |
| "135": "o", | |
| "1234": "p", | |
| "1235": "r", | |
| "234": "s", | |
| "2346": "š", | |
| "2345": "t", | |
| "34": "u", | |
| "346": "ū", | |
| "2456": "v", | |
| "345": "z", | |
| "3456": "ž", | |
| "46": caps_sign, | |
| } | |
| # PL symbols | |
| alpha_map_PL = { | |
| **alpha_map_EN, | |
| "16": "ą", | |
| "146": "ć", | |
| "156": "ę", | |
| "126": "ł", | |
| "1456": "ń", | |
| "346": "ó", | |
| "246": "ś", | |
| "2346": "ź", | |
| "12346": "ż", | |
| "3": ".", | |
| "256": "/", | |
| "34": "\\", | |
| } | |
| # DE symbols | |
| alpha_map_DE = { | |
| "236": '"', | |
| "356": '"', | |
| "35": "*", | |
| "235": "+", | |
| "2": ",", | |
| "36": "-", | |
| "3": ".", | |
| "346": "ie", | |
| "16": "au", | |
| "126": "eu", | |
| "146": "ei", | |
| "1456": "ch", | |
| "156": "sch", | |
| "1256": "ü", | |
| "246": "ö", | |
| "25": ":", | |
| "23": ";", | |
| "2356": "=", | |
| "26": "?", | |
| "345": "ä", | |
| "1": "a", | |
| "12": "b", | |
| "14": "c", | |
| "145": "d", | |
| "15": "e", | |
| "124": "f", | |
| "1245": "g", | |
| "125": "h", | |
| "24": "i", | |
| "245": "j", | |
| "13": "k", | |
| "123": "l", | |
| "134": "m", | |
| "1345": "n", | |
| "135": "o", | |
| "1234": "p", | |
| "12345": "q", | |
| "1235": "r", | |
| "234": "s", | |
| "2345": "t", | |
| "136": "u", | |
| "1236": "v", | |
| "2456": "w", | |
| "1346": "x", | |
| "13456": "y", | |
| "1356": "z", | |
| "34": "äu", | |
| "23456": "st", | |
| "2346": "ß", | |
| "46": caps_sign, | |
| } | |
| # Digit symbols (after num_sign) | |
| num_map = { | |
| "1": "1", | |
| "12": "2", | |
| "14": "3", | |
| "145": "4", | |
| "15": "5", | |
| "124": "6", | |
| "1245": "7", | |
| "125": "8", | |
| "24": "9", | |
| "245": "0", | |
| } | |
| # Digits in denominators of fraction | |
| num_denominator_map = { | |
| "2": "/1", | |
| "23": "/2", | |
| "25": "/3", | |
| "256": "/4", | |
| "26": "/5", | |
| "235": "/6", | |
| "2356": "/7", | |
| "236": "/8", | |
| "35": "/9", | |
| "356": "/0", # postprocess num 0 /0 to % | |
| } | |
| # Symbols for Math Braille (in Russian braille, I suppose) | |
| math_RU = { | |
| "2": ",", # decimal separator | |
| "3": "..", # postprocess to "." (thousand separator) if between digits else to * (multiplication). | |
| "235": "+", | |
| "36": "-", | |
| "236": "*", | |
| "256": "::", # postprocess to ":" (division). | |
| "246": "<", | |
| "135": ">", | |
| "2356": "=", | |
| "126": "(", | |
| "345": ")", | |
| "12356": "[", | |
| "23456": "]", | |
| "246": "{", | |
| "135": "}", | |
| "456": "|", | |
| "6": "en", | |
| "46": "EN", | |
| } | |
| # Codes for dicts | |
| letter_dicts = { | |
| "SYM": sym_map, | |
| "RU": alpha_map_RU, | |
| "EN": alpha_map_EN, | |
| "EN2": alpha_map_EN, | |
| "GR": alpha_map_GR, | |
| "LV": alpha_map_LV, | |
| "PL": alpha_map_PL, | |
| "DE": alpha_map_DE, | |
| "UZ": alpha_map_UZ, | |
| "UZL": alpha_map_UZL, | |
| "NUM": num_map, | |
| "NUM_DENOMINATOR": num_denominator_map, | |
| "MATH_RU": math_RU, | |
| } | |
| return letter_dicts | |
| def reversed_mapping(angelina_map=angelina_label_map()): | |
| concat_dict = {} | |
| for key in angelina_map.keys(): | |
| single_dict = angelina_map[key] | |
| # invert single_dict | |
| inverted_dict = {v: k for k, v in single_dict.items()} | |
| for k, v in inverted_dict.items(): | |
| concat_dict[k] = v | |
| return concat_dict | |
| def transform_angelina_label(russian_label, mapping=reversed_mapping()): | |
| russian_label = russian_label.strip() | |
| if russian_label in mapping.keys(): | |
| return mapping[russian_label] | |
| else: | |
| # remove "~" from russian_label if russian_label is numeric | |
| russian_label = russian_label.replace("~", "") | |
| if russian_label.isnumeric(): | |
| return russian_label | |
| # other cases where letters are capitalized | |
| else: | |
| if russian_label.lower() in mapping.keys(): | |
| return mapping[russian_label.lower()] | |
| # other cases where letters are special letters | |
| else: | |
| if russian_label == "CC" or russian_label == "CC": # capitalize | |
| return "46" | |
| elif russian_label == "ХХ": # markout | |
| return "123456" | |
| elif russian_label == ">>": | |
| return "356" | |
| elif russian_label == "<<": | |
| return "236" | |
| else: | |
| print(russian_label) | |
| return "46" | |