def _get_symbol_node( parser_config, src_url_fmt, path, symbol, h_level=2, full_path=True): src_link_nodes = [] if src_url_fmt: output_url = src_url_fmt.format( relative_path=symbol.relative_path, line_number=symbol.line_number) link = CWTagNode( 'a', {'href': output_url, 'class': 'autodoc-source-link'}, [CWTextNode('src')]) src_link_nodes = [link] name_nodes = [] if symbol.type in {'class', 'function'}: name_nodes.append( CWTagNode('span', {'class': 'autodoc-keyword'}, [ CWTextNode(symbol.type + ' ') ])) name_nodes.append( CWTagNode('span', {'class': 'autodoc-identifier'}, [ CWTextNode(path if full_path else symbol.name) ])) if symbol.string_inside_parens is not None: name_nodes.append( CWTagNode('span', {'class': 'autodoc-arguments'}, [ CWTextNode('(' + symbol.string_inside_parens + ')') ])) if symbol.return_value: name_nodes.append( CWTagNode('span', {'class': 'autodoc-return-value'}, [ CWTextNode(' → ', escape=False), CWTextNode(symbol.return_value) ])) heading_node = CWTagNode( 'h{}'.format(h_level), {}, [CWTagNode('code', {}, name_nodes)] + src_link_nodes ) heading_node.data['ref_id_override'] = path children = [heading_node] if symbol.docstring: css_class = 'autodoc-{}-docstring-body'.format(symbol.type) docstring_children = cfm_to_cwdom(symbol.docstring, parser_config) children.append(CWTagNode( 'div', {'class': css_class}, children=docstring_children)) node = CWTagNode( 'section', kwargs={'class': 'autodoc-{}'.format(symbol.type)}, children=children) return node
def _get_nav_html_part( config, options, library, tree, document_node, is_prev=False): entry_key = 'nav_previous_entry' if is_prev else 'nav_next_entry' if entry_key not in document_node.data: return '' entry = document_node.data[entry_key] ref_id = entry.ref_id if is_prev: css_class = 'previous-page' text = CWTextNode('← ', escape=False) else: css_class = 'next-page' text = CWTextNode(' →', escape=False) node = CWTagNode('nav', {'class': css_class}, [ CWDocumentLinkNode(entry.heading_node.document_id, [ text ]).deepcopy_children_from(entry.heading_node, at_end=is_prev) ]) node.deep_set_document_id(document_node.document_id) return _get_subtree_html(config, options, library, tree, node)
def lang_pygments_convert(tree, node): if node.data.get('pygments_done', False): return split = ( (node.kwargs.get('language', '') or '').split(maxsplit=1)) language = split[0] if split else None try: lexer = get_lexer_by_name(language) if language else None except ClassNotFound: # do nothing; user specified a language but we can't parse it. # (we do parse no-language blocks.) return args = split[1] if len(split) > 1 else '' kwargs = _dumb_parse_args(args) figure_children = [] if kwargs.get('filename', None): figure_children.append( CWTagNode('figcaption', {'class': 'filename'}, [ CWTextNode(kwargs['filename']) ])) if lexer: figure_children.append(CWTextNode( pygments.highlight( node.children[0].text, lexer, HtmlFormatter()), escape=False)) else: new_pre = CWTagNode('pre', {'class': 'raw'}, node.children) new_pre.data['pygments_done'] = True figure_children.append(new_pre) tree.replace_subtree( node, CWTagNode('figure', {'class': 'code'}, figure_children))