from django import template
import markdown
from django.utils.safestring import mark_safe
import logging

# Set up logging
logger = logging.getLogger(__name__)

register = template.Library()

@register.filter
def markdownify(text):
    """Convert markdown to HTML with enhanced features"""
    if text is None:
        return ''
    
    try:
        # Use markdown with extra extensions for better formatting
        extensions = [
            'markdown.extensions.extra',        # Tables, footnotes, etc.
            'markdown.extensions.nl2br',        # Newlines to <br> tags
            'markdown.extensions.sane_lists',   # Better list handling
            'markdown.extensions.smarty',       # Smart quotes and dashes
        ]
        
        # Convert markdown to HTML with enhanced features
        html = markdown.markdown(text, extensions=extensions)
        
        # Log success for debugging
        logger.debug(f"Markdown conversion successful. Input length: {len(text)}, Output length: {len(html)}")
        
        return mark_safe(html)
    except Exception as e:
        # Log any errors that occur during markdown conversion
        logger.error(f"Error converting markdown: {str(e)}")
        return mark_safe(f"<p>{text}</p>")  # Fallback to plain text in <p> tags