# python
import re
from cStringIO import StringIO
# django
from django.test import TestCase


class BaseTestCase(TestCase):

    def _zoom_html(self, html, css_selector):

        try:
            from lxml.html import parse
            from lxml import etree
            from lxml.cssselect import CSSSelector
        except ImportError:
            return html

        parser = etree.HTMLParser()
        tree = etree.parse(StringIO(html), parser)
        page = tree.getroot()

        if isinstance(css_selector, basestring):
            selector = CSSSelector(css_selector)
        else:
            raise ValueError("css_select must be a string")

        html_chunks = []
        for part in selector(page):
            html_chunks.append(etree.tostring(part, pretty_print=True))

        return ''.join(html_chunks)

    def _strip_html(self, html):
        return re.sub('</?\w.*?>', '', html)