"""模板渲染模块"""

from typing import Dict
from jinja2 import Template


class TemplateRenderer:
    """模板渲染器
    
    功能：
    1. 使用Jinja2渲染XML模板
    2. 支持变量填充
    3. 集成Markdown转HTML功能
    """
    
    def __init__(self):
        """初始化渲染器"""
        pass
    
    def render(self, template_content: str, variables: Dict[str, str]) -> str:
        """渲染模板
        
        Args:
            template_content: 模板内容
            variables: 变量字典
            
        Returns:
            str: 渲染后的内容
        """
        # 创建Jinja2模板
        template = Template(template_content)
        
        # 渲染模板
        rendered_content = template.render(**variables)
        
        return rendered_content
    
    def render_file(self, template_file: str, variables: Dict[str, str]) -> str:
        """从文件渲染模板
        
        Args:
            template_file: 模板文件路径
            variables: 变量字典
            
        Returns:
            str: 渲染后的内容
        """
        with open(template_file, 'r', encoding='utf-8') as f:
            template_content = f.read()
        
        return self.render(template_content, variables)
    
    def render_with_markdown(self, template_content: str, variables: Dict[str, str], markdown_fields: list = None) -> str:
        """渲染模板并处理Markdown字段
        
        Args:
            template_content: 模板内容
            variables: 变量字典
            markdown_fields: 需要转换为HTML的Markdown字段列表
            
        Returns:
            str: 渲染后的内容
        """
        if markdown_fields:
            # 导入MarkdownConverter
            from .markdown_converter import MarkdownConverter
            converter = MarkdownConverter()
            
            # 转换Markdown字段为HTML
            for field in markdown_fields:
                if field in variables:
                    variables[field] = converter.convert(variables[field])
        
        # 渲染模板
        return self.render(template_content, variables)
