⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tohtml.py

📁 winNT技术操作系统,国外开放的原代码和LIUX一样
💻 PY
📖 第 1 页 / 共 2 页
字号:
            else:
                lines.append( self.make_html_para( item.words ) )

        return string.join( lines, '\n' )


    def  print_html_items( self, items ):
        print self.make_html_items( items )


    def print_html_field( self, field ):
        if field.name:
            print "<table><tr valign=top><td><p><b>"+field.name+"</b></p></td><td>"

        print self.make_html_items( field.items )

        if field.name:
            print "</td></tr></table>"


    def html_source_quote( self, line, block_name = None ):
        result = ""
        while line:
            m = re_source_crossref.match( line )
            if m:
                name   = m.group(2)
                prefix = html_quote( m.group(1) )
                length = len( m.group(0) )

                if name == block_name:
                    # this is the current block name, if any
                    result = result + prefix + '<b>' + name + '</b>'

                elif re_source_keywords.match(name):
                    # this is a C keyword
                    result = result + prefix + keyword_prefix + name + keyword_suffix

                elif self.identifiers.has_key(name):
                    # this is a known identifier
                    block = self.identifiers[name]
                    result = result + prefix + '<a href="' + \
                             self.make_block_url(block) + '">' + name + '</a>'
                else:
                    result = result + html_quote(line[:length])

                line = line[length:]
            else:
                result = result + html_quote(line)
                line   = []

        return result


    def print_html_field_list( self, fields ):
        print "<table cellpadding=3 border=0>"
        for field in fields:
            if len(field.name) > 22:
              print "<tr valign=top><td colspan=0><b>"+field.name+"</b></td></tr>"
              print "<tr valign=top><td></td><td>"
            else:
              print "<tr valign=top><td><b>" + field.name + "</b></td><td>"

            self.print_html_items( field.items )
            print "</td></tr>"
        print "</table>"


    def print_html_markup( self, markup ):
        table_fields = []
        for field in markup.fields:
            if field.name:
                # we begin a new series of field or value definitions, we
                # will record them in the 'table_fields' list before outputting
                # all of them as a single table
                #
                table_fields.append( field )

            else:
                if table_fields:
                    self.print_html_field_list( table_fields )
                    table_fields = []

                self.print_html_items( field.items )

        if table_fields:
            self.print_html_field_list( table_fields )

    #
    #  Formatting the index
    #

    def  index_enter( self ):
        print self.html_header
        self.index_items = {}

    def  index_name_enter( self, name ):
        block = self.identifiers[name]
        url   = self.make_block_url( block )
        self.index_items[name] = url

    def  index_exit( self ):

        # block_index already contains the sorted list of index names
        count = len( self.block_index )
        rows  = (count + self.columns - 1) / self.columns

        print "<table align=center border=0 cellpadding=0 cellspacing=0>"
        for r in range(rows):
            line = "<tr>"
            for c in range(self.columns):
                i = r + c*rows
                if i < count:
                    bname = self.block_index[r + c * rows]
                    url   = self.index_items[bname]
                    line = line + '<td><a href="' + url + '">' + bname + '</a></td>'
                else:
                    line = line + '<td></td>'
            line = line + "</tr>"
            print line

        print "</table>"

        print index_footer_start + \
              self.file_prefix + "toc.html" + \
              index_footer_end

        self.index_items = {}

    def  index_dump( self, index_filename = None ):

        if index_filename == None:
            index_filename = self.file_prefix + "index.html"

        Formatter.index_dump( self, index_filename )

    #
    #  Formatting the table of content
    #
    def  toc_enter( self ):
        print self.html_header
        print "<center><h1>Table of Contents</h1></center>"

    def  toc_chapter_enter( self, chapter ):
        print  chapter_header + string.join(chapter.title) + chapter_inter
        print "<table cellpadding=5>"

    def  toc_section_enter( self, section ):
        print "<tr valign=top><td>"
        print '<a href="' + self.make_section_url( section ) + '">' + \
               section.title + '</a></td><td>'

        print self.make_html_para( section.abstract )

    def  toc_section_exit( self, section ):
        print "</td></tr>"

    def  toc_chapter_exit( self, chapter ):
        print "</table>"
        print  chapter_footer

    def  toc_index( self, index_filename ):
        print chapter_header + '<a href="' + index_filename + '">Global Index</a>' + chapter_inter + chapter_footer

    def  toc_exit( self ):
        print self.html_footer

    def  toc_dump( self, toc_filename = None, index_filename = None ):
        if toc_filename == None:
            toc_filename = self.file_prefix + "toc.html"

        if index_filename == None:
            index_filename = self.file_prefix + "index.html"

        Formatter.toc_dump( self, toc_filename, index_filename )

    #
    #  Formatting sections
    #
    def  section_enter( self, section ):
        print self.html_header

        print section_title_header
        print section.title
        print section_title_footer

        maxwidth = 0
        for b in section.blocks.values():
            if len( b.name ) > maxwidth:
                maxwidth = len( b.name )

        width  = 70  # XXX magic number
        if maxwidth <> 0:
            # print section synopsis
            print section_synopsis_header
            print "<table align=center cellspacing=5 cellpadding=0 border=0>"

            columns = width / maxwidth
            if columns < 1:
                columns = 1

            count = len( section.block_names )
            rows  = ( count + columns - 1 ) / columns

            for r in range( rows ):
                line = "<tr>"
                for c in range( columns ):
                    i = r + c * rows
                    line = line + '<td></td><td>'
                    if i < count:
                        name = section.block_names[i]
                        line = line + '<a href="#' + name + '">' + name + '</a>'

                    line = line + '</td>'
                line = line + "</tr>"
                print line

            print "</table><br><br>"
            print section_synopsis_footer

        print description_header
        print self.make_html_items( section.description )
        print description_footer

    def  block_enter( self, block ):
        print block_header

        # place html anchor if needed
        if block.name:
            print '<h4><a name="' + block.name + '">' + block.name + '</a></h4>'

        # dump the block C source lines now
        if block.code:
            print source_header
            for l in block.code:
                print self.html_source_quote( l, block.name )
            print source_footer


    def  markup_enter( self, markup, block ):
        if markup.tag == "description":
            print description_header
        else:
            print marker_header + markup.tag + marker_inter

        self.print_html_markup( markup )

    def  markup_exit( self, markup, block ):
        if markup.tag == "description":
            print description_footer
        else:
            print marker_footer

    def  block_exit( self, block ):
        print block_footer_start + self.file_prefix + "index.html" + \
              block_footer_middle + self.file_prefix + "toc.html" + \
              block_footer_end


    def  section_exit( self, section ):
        print html_footer


    def section_dump_all( self ):
        for section in self.sections:
            self.section_dump( section, self.file_prefix + section.name + '.html' )

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -