/
liquid-g
/
liquid-code
Обзор
Документация
Войти
/
liquid-g
/
liquid-code
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop-0.4
src/liquidcode/commands/core/template_utils.py
83 строки
3 KB
User
0.4.8 - переработка документации, рефакторинг кода
06 июл 2026, 12:38
06 июл 2026, 12:38
2cfe3f4
Код
Авторство
О чём код?
import os try: from jinja2 import Environment, BaseLoader except ImportError: raise ImportError( "Jinja2 is required for template rendering. " "Install with: pip install Jinja2" ) # Директория с шаблонами (относительно текущего файла) TEMPLATES_DIR = os.path.join(os.path.dirname(__file__), '..', 'templates') class TemplateError(Exception): """Исключение, связанное с ошибками в шаблонах.""" pass def load_template_file(template_name: str, extension: str = '.py.j2') -> str: """ Загружает содержимое файла шаблона. Args: template_name: Имя шаблона (например, 'controller', 'entity', 'api'). extension: Расширение файла шаблона (по умолчанию '.py.j2'). Returns: Содержимое файла шаблона. Raises: TemplateError: Если файл не найден или не удалось прочитать. """ filename = f"{template_name}{extension}" filepath = os.path.join(TEMPLATES_DIR, filename) if not os.path.exists(filepath): raise TemplateError(f"Файл шаблона не найден: {filepath}") try: with open(filepath, 'r', encoding='utf-8') as f: return f.read() except OSError as e: raise TemplateError(f"Не удалось прочитать шаблон {filepath}: {e}") from e def render_template(template_str: str, **kwargs) -> str: """ Рендерит шаблон с использованием Jinja2. Args: template_str: Строка шаблона с синтаксисом Jinja2. **kwargs: Значения для подстановки. Returns: Отрендеренная строка. Raises: TemplateError: При ошибке рендеринга. """ try: env = Environment(loader=BaseLoader()) template = env.from_string(template_str) return template.render(**kwargs) except Exception as e: raise TemplateError(f"Ошибка рендеринга шаблона: {e}") from e def get_template(template_name: str, extension: str = '.py.j2', **kwargs) -> str: """ Загружает и рендерит шаблон по имени. Args: template_name: Имя шаблона ('controller', 'entity', 'middleware', 'crud', 'api'). extension: Расширение файла шаблона (по умолчанию '.py.j2'). **kwargs: Параметры подстановки. Returns: Строка с содержимым файла. Raises: TemplateError: Если шаблон не найден или ошибка рендеринга. """ template_str = load_template_file(template_name, extension) return render_template(template_str, **kwargs)