コード例 #1
0
ファイル: __init__.py プロジェクト: teaolivia/apertium-python
    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
コード例 #2
0
ファイル: __init__.py プロジェクト: teaolivia/apertium-python
 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]
コード例 #3
0
ファイル: __init__.py プロジェクト: rjraj01/apertium-python
 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]
コード例 #4
0
    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)
コード例 #5
0
ファイル: utils.py プロジェクト: srbhr/apertium-python
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)