Source code for apertium.generation
from streamparser import parse, LexicalUnit # noqa: F401
import apertium
from apertium.utils import to_alpha3_code, execute, parse_mode_file
if False:
from typing import List, Union, Tuple, Dict # noqa: F401
[docs]class Generator:
"""
Attributes:
generation_cmds (Dict[str, List[List[str]]])
lang (str)
"""
def __init__(self, lang): # type: (Generator, str) -> None
"""
Args:
lang (str)
"""
self.generator_cmds = {} # type: Dict[str, List[List[str]]]
self.lang = lang # type: str
def _get_commands(self): # type: (Generator) -> List[List[str]]
"""
Returns:
List[List[str]]
"""
if self.lang not in self.generator_cmds:
mode_path, mode = apertium.generators[self.lang]
self.generator_cmds[self.lang] = parse_mode_file(mode_path+'/modes/'+mode+'.mode')
return self.generator_cmds[self.lang]
[docs] 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)
[docs]def generate(lang, in_text, formatting='none'): # type: (str, str, str) -> Union[str, List[str]]
"""
Args:
lang (str)
in_text (str)
formatting (str)
Returns:
Union[str, List[str]]
"""
generator = Generator(lang)
return generator.generate(in_text, formatting)