teleport/server/www/packages/packages-linux/x64/mako/ext/linguaplugin.py

58 lines
1.9 KiB
Python
Raw Normal View History

2019-11-20 19:41:46 +00:00
# ext/linguaplugin.py
2020-06-05 07:17:58 +00:00
# Copyright 2006-2020 the Mako authors and contributors <see AUTHORS file>
2019-11-20 19:41:46 +00:00
#
# This module is part of Mako and is released under
# the MIT License: http://www.opensource.org/licenses/mit-license.php
import io
2019-11-20 19:41:46 +00:00
from lingua.extractors import Extractor
from lingua.extractors import get_extractor
2019-11-20 19:41:46 +00:00
from lingua.extractors import Message
from mako import compat
2019-11-20 19:41:46 +00:00
from mako.ext.extract import MessageExtractor
class LinguaMakoExtractor(Extractor, MessageExtractor):
2019-11-20 19:41:46 +00:00
"""Mako templates"""
extensions = [".mako"]
default_config = {"encoding": "utf-8", "comment-tags": ""}
def __call__(self, filename, options, fileobj=None):
self.options = options
self.filename = filename
2019-11-20 19:41:46 +00:00
self.python_extractor = get_extractor("x.py")
if fileobj is None:
2019-11-20 19:41:46 +00:00
fileobj = open(filename, "rb")
return self.process_file(fileobj)
def process_python(self, code, code_lineno, translator_strings):
source = code.getvalue().strip()
2019-11-20 19:41:46 +00:00
if source.endswith(compat.b(":")):
if source in (
compat.b("try:"),
compat.b("else:"),
) or source.startswith(compat.b("except")):
source = compat.b("") # Ignore try/except and else
elif source.startswith(compat.b("elif")):
source = source[2:] # Replace "elif" with "if"
source += compat.b("pass")
code = io.BytesIO(source)
for msg in self.python_extractor(
2019-11-20 19:41:46 +00:00
self.filename, self.options, code, code_lineno - 1
):
if translator_strings:
2019-11-20 19:41:46 +00:00
msg = Message(
msg.msgctxt,
msg.msgid,
msg.msgid_plural,
msg.flags,
compat.u(" ").join(translator_strings + [msg.comment]),
msg.tcomment,
msg.location,
)
yield msg