aiogram/generator/generator.py

35 lines
970 B
Python
Raw Normal View History

2019-06-30 22:50:51 +03:00
import datetime
import pathlib
import black
import jinja2
from generator.parser import Parser
templates_dir: pathlib.Path = pathlib.Path(__file__).parent / "templates"
class Generator:
def __init__(self, parser: Parser):
self.parser = parser
self.env = jinja2.Environment(loader=jinja2.FileSystemLoader(searchpath=[templates_dir]))
@property
def context(self):
return {
"groups": self.parser.groups,
"timestamp": datetime.datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S UTC"),
}
def _render_template(self, template: str) -> str:
template = self.env.get_template(template)
content = template.render(self.context)
return content
def _reformat_code(self, code: str) -> str:
return black.format_str(code, mode=black.FileMode())
def render_types(self):
content = self._render_template("types.py.jinja2")
return self._reformat_code(content)