#!/usr/bin/python
import sys
import HTMLParser

class MyHTMLParser(HTMLParser.HTMLParser):
    def __init__(self):
        HTMLParser.HTMLParser.__init__(self)
        self.__inCourseList = False              # Reading the list of course
        self.__inCourseRow  = False              # Reading a row in list
        self.__inCourseItem = False              # Reading an item in a row
        self.__readCourseList = False            # Courses completely read
        self.__courseItems = []
        self.__lastData = None
    def handle_starttag(self, tag, attrs):
        if self.__inCourseList and tag=='tr':
            self.__inCourseRow = True
            self.__inCourseItem = False
            self.__courseItems = []
        elif self.__inCourseRow and tag=='td':
            self.__inCourseItem = True
    def handle_endtag(self, tag):
        if self.__inCourseRow and tag=='tr':
            self.__inCourseRow = False
            self.__inCourseItem = False
            if len(self.__courseItems)>2:
                print '{0:15s} {1}'.format(self.__courseItems[0],
                                           self.__courseItems[2])
            else:
                print 'Oops: too few items in course'
        elif self.__inCourseItem and tag=='td':
            self.__inCourseItem = False
            if self.__lastData is None:
                self.__courseItems.append('')
            else:
                self.__courseItems.append(self.__lastData)
            self.__lastData = None
    def handle_data(self, data):
        if self.__inCourseItem:
            if self.__lastData is None:
                self.__lastData = data
            else:
                self.__lastData = self.__lastData + data
    def handle_comment(self, data):
        if (data == '- Begin Class Schedule '):
            self.__inCourseList = True
        elif (data == '- End Class Schedule ' and self.__inCourseList):
            self.__inCourseList = False
            self.__doneCourseList = True

# instantiate the parser and fed it some HTML
def ParseSchedule(fileName):
    print 'Parsing {0}'.format(fileName)
    fileHand = open(fileName, 'r')
    parser = MyHTMLParser()
    for line in fileHand:
        try:
            parser.feed(line)
        except HTMLParser.HTMLParseError as he:
            print 'I/O error on line {0}: {1}'.format(he.lineno, he.msg)
            print '  {0}'.format(line)
            parser.reset()

if __name__ == "__main__":
    if (len(sys.argv)>1):
        ParseSchedule(sys.argv[1])
    else:
        print 'No argument'
