from django import template
from django.utils.safestring import mark_safe
from django.utils.html import conditional_escape

register = template.Library()

def check_autoescape(autoescape):
    if autoescape:
        return  conditional_escape
    return lambda x: x


@register.filter
def breadcrumbs(path, args, autoescape=None):
    """Usage: url|breadcrumbs:"home_link,li_class
    Pass home_link empty if you just want to set li_class
    Returns <li> elements representing breadcrumbs of your current location"""

    esc = check_autoescape(autoescape)
    home_link, sep, li_class = args.partition(',')
    if li_class:
        li_class = ' class="%s"' % (esc(li_class))
    link_base = '/'

    output = ['<li><a title="/" href="/">%s/</a></li>' % (esc(home_link))]
    for crumb in path.strip("/").split("/"):
        if crumb:
            output.append('<li><a title="%(link_base)s%(crumb)s" href="%(link_base)s%(crumb)s/"%(li_class)s>%(crumb)s/</a></li>' % {'link_base': link_base, 'crumb': esc(crumb), 'li_class': li_class})
            link_base += '%s/' % (esc(crumb))
    return mark_safe(''.join(output))

breadcrumbs.needs_autoescape = True