docs: def email_quoted_txt2html(text,
                            tabs_before=0,
                            indent_txt='>>',
                            linebreak_txt="\n",
                            indent_html=('<div class="commentbox">', "</div>"),
                            linebreak_html='<br/>',
                            indent_block=True):
      """
      Takes a typical mail quoted text, e.g.::
          hello,
          you told me:
          >> Your mother was a hamster and your father smelt of elderberries
          I must tell you that I'm not convinced. Then in this discussion:
          >>>> Is there someone else up there we could talk to?
          >> No. Now, go away, or I shall taunt you a second time-a!
          I think we're not going to be friends!
  
      and return an html formatted output, e.g.::
          hello,<br/>
          you told me:<br/>
          <div>
            Your mother was a hamster and your father smelt of elderberries
          </div>
          I must tell you that I'm not convinced. Then in this discussion:
          <div>
            <div>
              Is there someone else up there we could talk to?
            </div>
            No. Now, go away, or I shall taunt you a second time-a!
          </div>
          I think we're not going to be friends!
  
      The behaviour is different when C{indent_block} is C{True} or C{False}.
      When C{True} the when C{indent_html} is only added at each change of
      level of indentation, while it is added for each line when C{False}.
      For eg::
          >> a
          >> b
          >>>> c
  
      would result in (if C{True})::
          <div class="commentbox">
              a<br/>
              b<br/>
              <div class="commentbox">
                  c<br/>
              </div>
          </div>
  
      or would be (if C{False})::
          <div class="commentbox"> a</div><br/>
          <div class="commentbox"> b</div><br/>
          <div class="commentbox"><div class="commentbox"> c</div></div><br/>
  
      @param text: the text in quoted format
      @param tabs_before: number of tabulations before each line
      @param indent_txt: quote separator in email (default:'>>')
      @param linebreak_txt: line separator in email
      @param indent_html: tuple of (opening, closing) html tags.
                          default: ('<div class="commentbox">', "</div>")
      @param linebreak_html: line separator in html (default: '<br/>')
      @param indent_block: if indentation should be done per 'block'
                           i.e. only at changes of indentation level
                           (+1, -1) or at each line.
      @return: string containing html formatted output
      """
      washer = HTMLWasher()
  
      final_body = ""
      nb_indent = 0
      text = text.strip('\n')
      lines = text.split(linebreak_txt)
      for line in lines:
          new_nb_indent = 0
          while True:
              if line.startswith(indent_txt):
                  new_nb_indent += 1
                  line = line[len(indent_txt):]
              else:
                  break
          if indent_block:
              if (new_nb_indent > nb_indent):
                  for dummy in range(nb_indent, new_nb_indent):
                      final_body += tabs_before * "\t" + indent_html[0] + "\n"
                      tabs_before += 1
              elif (new_nb_indent < nb_indent):
                  for dummy in range(new_nb_indent, nb_indent):
                      tabs_before -= 1
                      final_body += (tabs_before) * "\t" + indent_html[1] + "\n"
              else:
                  final_body += (tabs_before) * "\t"
          else:
              final_body += tabs_before * "\t" + new_nb_indent * indent_html[0]
          try:
              line = washer.wash(line)
          except HTMLParseError:
              # Line contained something like "foo<bar"
              line = cgi.escape(line)
          if indent_block:
              final_body += tabs_before * "\t"
          final_body += line
          if not indent_block:
              final_body += new_nb_indent * indent_html[1]
          final_body += linebreak_html + "\n"
          nb_indent = new_nb_indent
      if indent_block:
          for dummy in range(0, nb_indent):
              tabs_before -= 1
              final_body += (tabs_before) * "\t" + "</div>\n"
      return final_body