Simple template language written in python
git clone git://git.janzachar.dev/stempl.git
0from pathlib import Path1import yaml2import re34from interpreter import Interpreter5from parser import Parser6from context import Context7import lexer89RE_FRONT_MATTER = re.compile(r"^---\s*\n(.*?)\n---\s*\n", re.DOTALL)1011class Page:12 def __init__(self, path: Path, ctx: Context = None):13 self.path = path14 self.ctx = Context(ctx)1516 with open(self.path) as fp:17 self.text = fp.read()1819 m = RE_FRONT_MATTER.match(self.text)2021 if not m:22 return2324 fm_text = m.group(1)25 self.ctx.data.update(yaml.safe_load(fm_text) or {})26 self.text = self.text[m.end():]2728 def run(self):29 lex = lexer.lex(self.text)30 ast = Parser(lex).parse()31 inter = Interpreter(ast, self.ctx)3233 return inter.interpret()3435