# -*- coding: utf-8 -*-
# ci:si:et:sw=4:sts=4:ts=4
import re
import ox


def html_parser(text, nofollow=True):
    text = text.replace('<i>', '__i__').replace('</i>', '__/i__')
    text = text.replace('<b>', '__b__').replace('</b>', '__/b__')
    #truns links into wiki links, make sure to only take http links
    text = re.sub('<a .*?href="(http.*?)".*?>(.*?)</a>', '[\\1 \\2]', text)
    text = ox.escape(text)
    text = text.replace('__i__', '<i>').replace('__/i__', '</i>')
    text = text.replace('__b__', '<b>').replace('__/b__', '</b>')
    if nofollow:
        nofollow_rel = ' rel="nofollow"'
    else:
        nofollow_rel = ''

    links = re.compile('(\[(http.*?) (.*?)\])').findall(text)
    for t, link, txt in links:
        link = link.replace('http', '__LINK__').replace('.', '__DOT__')
        ll = '<a href="%s"%s>%s</a>' % (link, nofollow_rel, txt)
        text = text.replace(t, ll)
    links = re.compile('(\[(http.*?)\])').findall(text)
    for t, link in links:
        link = link.replace('http', '__LINK__').replace('.', '__DOT__')
        ll = '<a href="%s"%s>%s</a>' % (link, nofollow_rel, link)
        text = text.replace(t, ll)

    text = ox.urlize(text, nofollow=nofollow)

    #inpage links
    text = re.sub('\[(/.+?) (.+?)\]', '<a href="\\1">\\2</a>', text)

    text = text.replace('__LINK__', 'http').replace('__DOT__', '.')
    text = text.replace("\n", '<br />')
    return text