#!/usr/bin/env python
# htmltotext
# http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/5229h/htmltotext.py

import sys, os, htmllib, formatter

bold = os.popen('tput bold').read()
underline =  os.popen('tput smul').read()
reset = os.popen('tput sgr0').read()

class TtyFormatter(formatter.AbstractFormatter):
    def __init__(self, writer):
        formatter.AbstractFormatter.__init__(self, writer)
        self.fontStack = []
        self.fontState = (0,0)
    def push_font(self, font):
        size, italic, bold, tt = font
        self.fontStack.append((italic, bold))
        self.updateFontState()
    def pop_font(self, *args):
        try: self.fontStack.pop()
        except: pass
        self.updateFontState()
    def updateFontState(self):
        try: newState = self.fontStack[-1]
        except: newState = (0,0)
        if self.fontState != newState:
            print reset,
            if newState[0]: print underline,
            if newState[1]: print bold,
            self.fontState = newState

myWriter = formatter.DumbWriter()
if sys.stdout.isatty():
    myFormatter = TtyFormatter(myWriter)
else:
    myFormatter = formatter.AbstractFormatter(myWriter)
myParser = htmllib.HTMLParser(myFormatter)
myParser.feed(sys.stdin.read())
myParser.close()
