# SPDX-License-Identifer: Apache-2.0 # Copyright 2023 The Meson development team from __future__ import annotations from pathlib import Path from .generatorbase import GeneratorBase from .model import ReferenceManual class GeneratorVim(GeneratorBase): def __init__(self, manual: ReferenceManual, out_dir: Path) -> None: super().__init__(manual) self.out_dir = out_dir def generate(self) -> None: template_dir = Path(__file__).resolve().parent / 'templates' outname = 'meson.vim' template_name = f'{outname}.mustache' template_file = template_dir / template_name builtin_funcs = [f.name for f in self.sorted_and_filtered(self.functions)] data = { 'builtin_funcs': '\n \\ '.join(builtin_funcs) } # Import here, so that other generators don't also depend on it import chevron result = chevron.render( template=template_file.read_text(encoding='utf-8'), data=data, warn=True, ) self.out_dir.mkdir(parents=True, exist_ok=True) out_file = self.out_dir / outname out_file.write_text(result, encoding='utf-8')