| # SPDX-License-Identifier: 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') |