def o(self, data, puredata=0, force=0):
    if (self.abbr_data is not None):
        self.abbr_data += data
    if (not self.quiet):
        if self.google_doc:
            lstripped_data = data.lstrip()
            if (self.drop_white_space and (not (self.pre or self.code))):
                data = lstripped_data
            if (lstripped_data != ''):
                self.drop_white_space = 0
        if (puredata and (not self.pre)):
            data = re.sub('\\s+', ' ', data)
            if (data and (data[0] == ' ')):
                self.space = 1
                data = data[1:]
        if ((not data) and (not force)):
            return
        if self.startpre:
            if (not data.startswith('\n')):
                data = ('\n' + data)
        bq = ('>' * self.blockquote)
        if ((not (force and data and (data[0] == '>'))) and self.blockquote):
            bq += ' '
        if self.pre:
            if (not self.list):
                bq += '    '
            for i in xrange(len(self.list)):
                bq += '    '
            data = data.replace('\n', ('\n' + bq))
        if self.startpre:
            self.startpre = 0
            if self.list:
                data = data.lstrip('\n')
        if self.start:
            self.space = 0
            self.p_p = 0
            self.start = 0
        if (force == 'end'):
            self.p_p = 0
            self.out('\n')
            self.space = 0
        if self.p_p:
            self.out((((self.br_toggle + '\n') + bq) * self.p_p))
            self.space = 0
            self.br_toggle = ''
        if self.space:
            if (not self.lastWasNL):
                self.out(' ')
            self.space = 0
        if (self.a and (((self.p_p == 2) and self.links_each_paragraph) or (force == 'end'))):
            if (force == 'end'):
                self.out('\n')
            newa = []
            for link in self.a:
                if (self.outcount > link['outcount']):
                    self.out(((('   [' + str(link['count'])) + ']: ') + urlparse.urljoin(self.baseurl, link['href'])))
                    if has_key(link, 'title'):
                        self.out(((' (' + link['title']) + ')'))
                    self.out('\n')
                else:
                    newa.append(link)
            if (self.a != newa):
                self.out('\n')
            self.a = newa
        if (self.abbr_list and (force == 'end')):
            for (abbr, definition) in self.abbr_list.items():
                self.out((((('  *[' + abbr) + ']: ') + definition) + '\n'))
        self.p_p = 0
        self.out(data)
        self.outcount += 1
def o(self, data, puredata=0, force=0):
    if (self.abbr_data is not None):
        self.abbr_data += data
    if (not self.quiet):
        if self.google_doc:
            lstripped_data = data.lstrip()
            if (self.drop_white_space and (not (self.pre or self.code))):
                data = lstripped_data
            if (lstripped_data != ):
                self.drop_white_space = 0
        if (puredata and (not self.pre)):
            data = re.sub('\\s+', ' ', data)
            if (data and (data[0] == ' ')):
                self.space = 1
                data = data[1:]
        if ((not data) and (not force)):
            return
        if self.startpre:
            if (not data.startswith('\n')):
                data = ('\n' + data)
        bq = ('>' * self.blockquote)
        if ((not (force and data and (data[0] == '>'))) and self.blockquote):
            bq += ' '
        if self.pre:
            if (not self.list):
                bq += '    '
            for i in xrange(len(self.list)):
                bq += '    '
            data = data.replace('\n', ('\n' + bq))
        if self.startpre:
            self.startpre = 0
            if self.list:
                data = data.lstrip('\n')
        if self.start:
            self.space = 0
            self.p_p = 0
            self.start = 0
        if (force == 'end'):
            self.p_p = 0
            self.out('\n')
            self.space = 0
        if self.p_p:
            self.out((((self.br_toggle + '\n') + bq) * self.p_p))
            self.space = 0
            self.br_toggle = 
        if self.space:
            if (not self.lastWasNL):
                self.out(' ')
            self.space = 0
        if (self.a and (((self.p_p == 2) and self.links_each_paragraph) or (force == 'end'))):
            if (force == 'end'):
                self.out('\n')
            newa = []
            for link in self.a:
                if (self.outcount > link['outcount']):
                    self.out(((('   [' + str(link['count'])) + ']: ') + urlparse.urljoin(self.baseurl, link['href'])))
                    if has_key(link, 'title'):
                        self.out(((' (' + link['title']) + ')'))
                    self.out('\n')
                else:
                    newa.append(link)
            if (self.a != newa):
                self.out('\n')
            self.a = newa
        if (self.abbr_list and (force == 'end')):
            for (abbr, definition) in self.abbr_list.items():
                self.out((((('  *[' + abbr) + ']: ') + definition) + '\n'))
        self.p_p = 0
        self.out(data)
        self.outcount += 1