forked from boostorg/mpl
More MPL refmanual doc generation fixes
[SVN r53744]
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
|
||||
# Copyright Aleksey Gurtovoy 2004-2008
|
||||
# Copyright Aleksey Gurtovoy 2004-2009
|
||||
#
|
||||
# Distributed under the Boost Software License, Version 1.0.
|
||||
# (See accompanying file LICENSE_1_0.txt or copy at
|
||||
@@ -21,35 +21,76 @@ class Writer(html4_frames.Writer):
|
||||
self.translator = refdoc_translator
|
||||
|
||||
|
||||
class hacked_html_translator(nodes.NodeVisitor):
|
||||
|
||||
def __init__(self, document):
|
||||
self.__super = nodes.NodeVisitor
|
||||
self.__super.__init__(self, document)
|
||||
self.base = html4css1.HTMLTranslator(document)
|
||||
self.body = self.base.body
|
||||
self.head = self.base.head
|
||||
self.astext = self.base.astext
|
||||
self.starttag = self.base.starttag
|
||||
self.words_and_spaces = self.base.words_and_spaces
|
||||
self.encode = self.base.encode
|
||||
self.recursion_level = 0
|
||||
|
||||
def visit_section(self, node):
|
||||
if self.base.section_level == 1:
|
||||
self.base.section_level = 2
|
||||
|
||||
self.base.body_prefix = self.body_prefix
|
||||
self.base.visit_section(node)
|
||||
|
||||
def depart_section(self, node):
|
||||
self.base.depart_section(node)
|
||||
if self.base.section_level == 2:
|
||||
self.base.section_level = 1
|
||||
|
||||
|
||||
def visit_generated(self, node):
|
||||
if node.get('class', '') == 'sectnum':
|
||||
node[0].data = string.strip(node[0].data, u'\u00a0')
|
||||
|
||||
self.base.visit_generated(node)
|
||||
|
||||
def depart_generated(self, node):
|
||||
self.base.depart_generated(node)
|
||||
|
||||
|
||||
class refdoc_translator(html4_frames.frame_pages_translator):
|
||||
|
||||
tocframe_width = 25
|
||||
page_translator = hacked_html_translator
|
||||
re_include = re.compile(r'(\s*#include\s+<)(.*?\.hpp)?(>\s*)?')
|
||||
re_identifier = re.compile(r'(.*?\W*)(\w+)(\W.*?)?')
|
||||
re_modtime = re.compile(r'\s*modtime:\s*(.*)')
|
||||
re_auto_id = re.compile(r'^id(\d+)$')
|
||||
in_literal_block = 0
|
||||
in_reference = 0
|
||||
|
||||
def __init__(self, document, index_page, page_files_dir, extension):
|
||||
self.docframe += ' refmanual'
|
||||
self.__super = html4_frames.frame_pages_translator
|
||||
self.__super.__init__(self, document, index_page, page_files_dir, extension)
|
||||
self.page_translator = hacked_html_translator
|
||||
self.re_include = re.compile(r'(\s*#include\s+<)(.*?\.hpp)?(>\s*)?')
|
||||
self.re_identifier = re.compile(r'(.*?\W*)(\w+)(\W.*?)?')
|
||||
self.re_modtime = re.compile(r'\s*modtime:\s*(.*)')
|
||||
self.in_literal_block = 0
|
||||
self.in_reference = 0
|
||||
|
||||
|
||||
def visit_title( self, node ):
|
||||
old_len = len(self.active_visitor().body)
|
||||
self.__super.visit_title( self, node )
|
||||
|
||||
self = self.active_visitor()
|
||||
if len(self.body) - old_len > 1 and not node.has_key('refid'):
|
||||
if self.re_auto_id.match( self._node_id( node.parent ) ):
|
||||
name = nodes.make_id( node.astext() )
|
||||
self.body[-1] = self.starttag(
|
||||
self = self.active_visitor()
|
||||
self.body.append( self.starttag(
|
||||
{}, 'a', '', name=name, href='#%s' % name, CLASS='subsection-title'
|
||||
)
|
||||
) )
|
||||
|
||||
def depart_title( self, node ):
|
||||
self.__super.depart_title(self, node)
|
||||
base = self
|
||||
if self.re_auto_id.match( self._node_id( node.parent ) ):
|
||||
self = self.active_visitor()
|
||||
self.body.append( '</a>')
|
||||
|
||||
base.__super.depart_title( base, node )
|
||||
|
||||
|
||||
def visit_table(self, node):
|
||||
@@ -165,6 +206,7 @@ class refdoc_translator(html4_frames.frame_pages_translator):
|
||||
|
||||
def _handle_id_sub(base, self, match):
|
||||
identifier = match.group(2)
|
||||
|
||||
if not base.document.has_name( identifier.lower() ):
|
||||
return self.encode(match.group(0))
|
||||
|
||||
@@ -182,9 +224,12 @@ class refdoc_translator(html4_frames.frame_pages_translator):
|
||||
if not id:
|
||||
return self.encode(match.group(0))
|
||||
|
||||
if id == 'inserter':
|
||||
id = 'inserter-class'
|
||||
|
||||
result = self.encode(match.group(1))
|
||||
result += '<a href="%s" class="identifier">%s</a>' \
|
||||
% ( base._chunk_ref( base._active_chunk_id(), id )
|
||||
% ( base._chunk_ref( base._active_chunk_id(), base._make_chunk_id( id ) )
|
||||
, self.encode(identifier)
|
||||
)
|
||||
|
||||
@@ -194,41 +239,15 @@ class refdoc_translator(html4_frames.frame_pages_translator):
|
||||
return result
|
||||
|
||||
|
||||
class hacked_html_translator(nodes.NodeVisitor):
|
||||
def _make_chunk_id( self, node_id ):
|
||||
if self.re_auto_id.match( node_id ):
|
||||
node = self.document.ids[ node_id ]
|
||||
return '%s-%s' % ( self._node_id( node.parent ), node['dupnames'][0] )
|
||||
|
||||
def __init__(self, document):
|
||||
self.__super = nodes.NodeVisitor
|
||||
self.__super.__init__(self, document)
|
||||
self.base = html4css1.HTMLTranslator(document)
|
||||
self.body = self.base.body
|
||||
self.head = self.base.head
|
||||
self.astext = self.base.astext
|
||||
self.starttag = self.base.starttag
|
||||
self.words_and_spaces = self.base.words_and_spaces
|
||||
self.encode = self.base.encode
|
||||
self.recursion_level = 0
|
||||
if node_id.startswith( 'boost-mpl-' ):
|
||||
return node_id[ len( 'boost-mpl-' ): ]
|
||||
|
||||
def visit_section(self, node):
|
||||
if self.base.section_level == 1:
|
||||
self.base.section_level = 2
|
||||
|
||||
self.base.body_prefix = self.body_prefix
|
||||
self.base.visit_section(node)
|
||||
|
||||
def depart_section(self, node):
|
||||
self.base.depart_section(node)
|
||||
if self.base.section_level == 2:
|
||||
self.base.section_level = 1
|
||||
|
||||
|
||||
def visit_generated(self, node):
|
||||
if node.get('class', '') == 'sectnum':
|
||||
node[0].data = string.strip(node[0].data, u'\u00a0')
|
||||
|
||||
self.base.visit_generated(node)
|
||||
|
||||
def depart_generated(self, node):
|
||||
self.base.depart_generated(node)
|
||||
return node_id
|
||||
|
||||
|
||||
def _setup_forwarding(visitor):
|
||||
|
@@ -69,12 +69,11 @@ Example
|
||||
Models
|
||||
------
|
||||
|
||||
* |inserter|
|
||||
* |[inserter]|
|
||||
* |front_inserter|
|
||||
* |back_inserter|
|
||||
|
||||
See also
|
||||
--------
|
||||
|
||||
|Algorithms|, |Transformation Algorithms|, |inserter|, |front_inserter|, |back_inserter|
|
||||
|
||||
|Algorithms|, |Transformation Algorithms|, |[inserter]|, |front_inserter|, |back_inserter|
|
||||
|
@@ -91,4 +91,4 @@ Example
|
||||
See also
|
||||
--------
|
||||
|
||||
|Algorithms|, |Inserter|, |Reversible Algorithm|, |inserter|, |front_inserter|, |push_back|
|
||||
|Algorithms|, |Inserter|, |Reversible Algorithm|, |[inserter]|, |front_inserter|, |push_back|
|
||||
|
@@ -91,4 +91,4 @@ Example
|
||||
See also
|
||||
--------
|
||||
|
||||
|Algorithms|, |Inserter|, |Reversible Algorithm|, |inserter|, |back_inserter|, |push_front|
|
||||
|Algorithms|, |Inserter|, |Reversible Algorithm|, |[inserter]|, |back_inserter|, |push_front|
|
||||
|
@@ -5,11 +5,11 @@
|
||||
.. Software License, Version 1.0. (See accompanying
|
||||
.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
|inserter(title)|
|
||||
=================
|
||||
|
||||
.. _`inserter_`:
|
||||
|
||||
inserter (class)
|
||||
================
|
||||
|
||||
Synopsis
|
||||
--------
|
||||
|
||||
@@ -99,6 +99,4 @@ See also
|
||||
|
||||
|Algorithms|, |Inserter|, |Reversible Algorithm|, |front_inserter|, |back_inserter|
|
||||
|
||||
|
||||
.. |inserter(title)| replace:: inserter
|
||||
.. |inserter| replace:: ':refentry:`inserter` <|inserter_|>'__
|
||||
.. |[inserter]| replace:: `inserter (class)`_
|
||||
|
Reference in New Issue
Block a user