# custom_filters.py
from django import template

import nh3

from bs4 import BeautifulSoup

register = template.Library()


def is_html(string):
    '''
    Check if string is HTML
    '''
    soup = BeautifulSoup(string, "html.parser")
    # Remove leading and trailing white space
    stripped_string = string.strip()
    stripped_soup = str(soup).strip()
    # If the string remained the same after parsing with BeautifulSoup, it's probably not HTML
    if stripped_string == stripped_soup:
        return False
    # If the string changed when parsed by BeautifulSoup, it's probably HTML
    else:
        return True


@register.filter
def is_image(file_url):
    image_extensions = ['.png', '.jpg', '.jpeg', '.gif', '.webp']
    return file_url.lower().endswith(tuple(image_extensions))
 

@register.filter
def is_flash(file_url):
    flash_extensions = ['.swf']
    return file_url.lower().endswith(tuple(flash_extensions))


@register.filter
def is_pdf(file_url):
    pdf_extensions = ['.pdf']
    return file_url.lower().endswith(tuple(pdf_extensions))

@register.filter
def descriptionHtml2Text(description):
    if is_html(description):
        cleanHtml = nh3.clean(description)
        soup = BeautifulSoup(cleanHtml, "html.parser")
        text = soup.get_text()
        return text
    else:
        return description


@register.filter
def stylizeDescription(description):
    if description.startswith("<div"):
        stylizedDescription = nh3.clean(description)
    
    else:
        stylizedDescription = description
    
    return stylizedDescription
