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.
|
# Distributed under the Boost Software License, Version 1.0.
|
||||||
# (See accompanying file LICENSE_1_0.txt or copy at
|
# (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@@ -21,35 +21,76 @@ class Writer(html4_frames.Writer):
|
|||||||
self.translator = refdoc_translator
|
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):
|
class refdoc_translator(html4_frames.frame_pages_translator):
|
||||||
|
|
||||||
tocframe_width = 25
|
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):
|
def __init__(self, document, index_page, page_files_dir, extension):
|
||||||
self.docframe += ' refmanual'
|
self.docframe += ' refmanual'
|
||||||
self.__super = html4_frames.frame_pages_translator
|
self.__super = html4_frames.frame_pages_translator
|
||||||
self.__super.__init__(self, document, index_page, page_files_dir, extension)
|
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 ):
|
def visit_title( self, node ):
|
||||||
old_len = len(self.active_visitor().body)
|
|
||||||
self.__super.visit_title( self, node )
|
self.__super.visit_title( self, node )
|
||||||
|
if self.re_auto_id.match( self._node_id( node.parent ) ):
|
||||||
self = self.active_visitor()
|
|
||||||
if len(self.body) - old_len > 1 and not node.has_key('refid'):
|
|
||||||
name = nodes.make_id( node.astext() )
|
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'
|
{}, 'a', '', name=name, href='#%s' % name, CLASS='subsection-title'
|
||||||
)
|
) )
|
||||||
|
|
||||||
def depart_title( self, node ):
|
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):
|
def visit_table(self, node):
|
||||||
@@ -165,6 +206,7 @@ class refdoc_translator(html4_frames.frame_pages_translator):
|
|||||||
|
|
||||||
def _handle_id_sub(base, self, match):
|
def _handle_id_sub(base, self, match):
|
||||||
identifier = match.group(2)
|
identifier = match.group(2)
|
||||||
|
|
||||||
if not base.document.has_name( identifier.lower() ):
|
if not base.document.has_name( identifier.lower() ):
|
||||||
return self.encode(match.group(0))
|
return self.encode(match.group(0))
|
||||||
|
|
||||||
@@ -182,9 +224,12 @@ class refdoc_translator(html4_frames.frame_pages_translator):
|
|||||||
if not id:
|
if not id:
|
||||||
return self.encode(match.group(0))
|
return self.encode(match.group(0))
|
||||||
|
|
||||||
|
if id == 'inserter':
|
||||||
|
id = 'inserter-class'
|
||||||
|
|
||||||
result = self.encode(match.group(1))
|
result = self.encode(match.group(1))
|
||||||
result += '<a href="%s" class="identifier">%s</a>' \
|
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)
|
, self.encode(identifier)
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -194,41 +239,15 @@ class refdoc_translator(html4_frames.frame_pages_translator):
|
|||||||
return result
|
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):
|
if node_id.startswith( 'boost-mpl-' ):
|
||||||
self.__super = nodes.NodeVisitor
|
return node_id[ len( 'boost-mpl-' ): ]
|
||||||
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):
|
return node_id
|
||||||
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)
|
|
||||||
|
|
||||||
|
|
||||||
def _setup_forwarding(visitor):
|
def _setup_forwarding(visitor):
|
||||||
|
@@ -69,12 +69,11 @@ Example
|
|||||||
Models
|
Models
|
||||||
------
|
------
|
||||||
|
|
||||||
* |inserter|
|
* |[inserter]|
|
||||||
* |front_inserter|
|
* |front_inserter|
|
||||||
* |back_inserter|
|
* |back_inserter|
|
||||||
|
|
||||||
See also
|
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
|
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
|
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
|
.. Software License, Version 1.0. (See accompanying
|
||||||
.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|inserter(title)|
|
|
||||||
=================
|
|
||||||
|
|
||||||
.. _`inserter_`:
|
.. _`inserter_`:
|
||||||
|
|
||||||
|
inserter (class)
|
||||||
|
================
|
||||||
|
|
||||||
Synopsis
|
Synopsis
|
||||||
--------
|
--------
|
||||||
|
|
||||||
@@ -99,6 +99,4 @@ See also
|
|||||||
|
|
||||||
|Algorithms|, |Inserter|, |Reversible Algorithm|, |front_inserter|, |back_inserter|
|
|Algorithms|, |Inserter|, |Reversible Algorithm|, |front_inserter|, |back_inserter|
|
||||||
|
|
||||||
|
.. |[inserter]| replace:: `inserter (class)`_
|
||||||
.. |inserter(title)| replace:: inserter
|
|
||||||
.. |inserter| replace:: ':refentry:`inserter` <|inserter_|>'__
|
|
||||||
|
Reference in New Issue
Block a user