def translate(self, text: str, mark_unknown: bool = False, formatting: Optional[str] = None, deformat: str = 'txt', reformat: str = 'txt') -> str: """ Args: text (str) mark_unknown (bool) formatting (Optional[str]) deformat (str) reformat (str) Returns: str """ if '{}-{}'.format( *map(to_alpha3_code, [self.l1, self.l2])) in apertium.pairs: pair = map(to_alpha3_code, [self.l1, self.l2]) else: raise apertium.ModeNotInstalled() if pair is not None: l1, l2 = pair cmds = list(self._get_commands(l1, l2)) unsafe_deformat, unsafe_reformat = self._get_format( formatting, deformat, reformat) deformater, reformater = self._validate_formatters( unsafe_deformat, unsafe_reformat) deformatted = self._get_deformat(str(deformater), text) output = execute(deformatted, cmds) result = self._get_reformat(str(reformater), output).strip() return result.decode() # type: ignore
def __init__(self, lang: str) -> None: """ Args: lang (str) """ self.analyzer_cmds = {} # type: Dict[str, List[List[str]]] self.lang = to_alpha3_code(lang) # type: str if self.lang not in apertium.analyzers: raise apertium.ModeNotInstalled(self.lang) else: self.path, self.mode = apertium.analyzers[self.lang]
def __init__(self, lang: str) -> None: """ Args: lang (str) """ self.tagger_cmds: Dict[str, List[List[str]]] = {} self.lang: str = to_alpha3_code(lang) if self.lang not in apertium.taggers: raise apertium.ModeNotInstalled(self.lang) else: self.path, self.mode = apertium.taggers[self.lang]
def generate(self, in_text, formatting='none'): # type: (Generator, str, str) -> Union[str, List[str]] """ Args: in_text (str) formatting (str) Returns: Union[str, List[str]] """ self.lang = to_alpha3_code(self.lang) if self.lang in apertium.generators: commands = list(self._get_commands()) result = execute(in_text, commands) return result.rstrip('\x00') else: raise apertium.ModeNotInstalled(self.lang)
def parse_mode_file(mode_path: str) -> List[List[str]]: """ Args: mode_path (str) Returns: List[List[str]] """ with open(mode_path) as mode_file: mode_str = mode_file.read().strip() if mode_str: commands = [] for cmd in mode_str.strip().split('|'): # TODO: we should make language pairs install # modes.xml instead; this is brittle (what if a path # has | or ' in it?) cmd = cmd.replace('$2', '').replace('$1', '-g') commands.append([c.strip("'") for c in cmd.split()]) return commands else: raise apertium.ModeNotInstalled(mode_path)