(self, start, tag_style, parent_style)
handles various text emphases
handles various text emphases
handles various text emphases
def handle_emphasis(self, start, tag_style, parent_style):
        """handles various text emphases"""
        tag_emphasis = google_text_emphasis(tag_style)
        parent_emphasis = google_text_emphasis(parent_style)

        # handle Google's text emphasis
        strikethrough =  'line-through' in tag_emphasis and self.hide_strikethrough
        bold = 'bold' in tag_emphasis and not 'bold' in parent_emphasis
        italic = 'italic' in tag_emphasis and not 'italic' in parent_emphasis
        fixed = google_fixed_width_font(tag_style) and not \
                google_fixed_width_font(parent_style) and not self.pre

        if start:
            # crossed-out text must be handled before other attributes
            # in order not to output qualifiers unnecessarily
            if bold or italic or fixed:
                self.emphasis += 1
            if strikethrough:
                self.quiet += 1
            if italic:
                self.o(self.emphasis_mark)
                self.drop_white_space += 1
            if bold:
                self.o(self.strong_mark)
                self.drop_white_space += 1
            if fixed:
                self.o('`')
                self.drop_white_space += 1
                self.code = True
        else:
            if bold or italic or fixed:
                # there must not be whitespace before closing emphasis mark
                self.emphasis -= 1
                self.space = 0
                self.outtext = self.outtext.rstrip()
            if fixed:
                if self.drop_white_space:
                    # empty emphasis, drop it
                    self.drop_last(1)
                    self.drop_white_space -= 1
                else:
                    self.o('`')
                self.code = False
            if bold:
                if self.drop_white_space:
                    # empty emphasis, drop it
                    self.drop_last(2)
                    self.drop_white_space -= 1
                else:
                    self.o(self.strong_mark)
            if italic:
                if self.drop_white_space:
                    # empty emphasis, drop it
                    self.drop_last(1)
                    self.drop_white_space -= 1
                else:
                    self.o(self.emphasis_mark)
            # space is only allowed after *all* emphasis marks
            if (bold or italic) and not self.emphasis:
                    self.o(" ")
            if strikethrough:
                self.quiet -= 1
def handle_emphasis ( self , start , tag_style , parent_style ) : tag_emphasis = google_text_emphasis ( tag_style ) parent_emphasis = google_text_emphasis ( parent_style ) # handle Google's text emphasis strikethrough = 'line-through' in tag_emphasis and self . hide_strikethrough bold = 'bold' in tag_emphasis and not 'bold' in parent_emphasis italic = 'italic' in tag_emphasis and not 'italic' in parent_emphasis fixed = google_fixed_width_font ( tag_style ) and not google_fixed_width_font ( parent_style ) and not self . pre if start : # crossed-out text must be handled before other attributes # in order not to output qualifiers unnecessarily if bold or italic or fixed : self . emphasis += 1 if strikethrough : self . quiet += 1 if italic : self . o ( self . emphasis_mark ) self . drop_white_space += 1 if bold : self . o ( self . strong_mark ) self . drop_white_space += 1 if fixed : self . o ( '`' ) self . drop_white_space += 1 self . code = True else : if bold or italic or fixed : # there must not be whitespace before closing emphasis mark self . emphasis -= 1 self . space = 0 self . outtext = self . outtext . rstrip ( ) if fixed : if self . drop_white_space : # empty emphasis, drop it self . drop_last ( 1 ) self . drop_white_space -= 1 else : self . o ( '`' ) self . code = False if bold : if self . drop_white_space : # empty emphasis, drop it self . drop_last ( 2 ) self . drop_white_space -= 1 else : self . o ( self . strong_mark ) if italic : if self . drop_white_space : # empty emphasis, drop it self . drop_last ( 1 ) self . drop_white_space -= 1 else : self . o ( self . emphasis_mark ) # space is only allowed after *all* emphasis marks if ( bold or italic ) and not self . emphasis : self . o ( " " ) if strikethrough : self . quiet -= 1