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

📄 body.py

📁 Requirement =====================================================================================
💻 PY
字号:
# Author: David Goodger# Contact: goodger@python.org# Revision: $Revision: 3963 $# Date: $Date: 2005-10-28 18:12:56 +0200 (Fri, 28 Oct 2005) $# Copyright: This module has been placed in the public domain."""Directives for additional body elements.See `docutils.parsers.rst.directives` for API details."""__docformat__ = 'reStructuredText'import sysfrom docutils import nodesfrom docutils.parsers.rst import directivesfrom docutils.parsers.rst.roles import set_classes              def topic(name, arguments, options, content, lineno,          content_offset, block_text, state, state_machine,          node_class=nodes.topic):    if not (state_machine.match_titles            or isinstance(state_machine.node, nodes.sidebar)):        error = state_machine.reporter.error(              'The "%s" directive may not be used within topics '              'or body elements.' % name,              nodes.literal_block(block_text, block_text), line=lineno)        return [error]    if not content:        warning = state_machine.reporter.warning(            'Content block expected for the "%s" directive; none found.'            % name, nodes.literal_block(block_text, block_text),            line=lineno)        return [warning]    title_text = arguments[0]    textnodes, messages = state.inline_text(title_text, lineno)    titles = [nodes.title(title_text, '', *textnodes)]    # sidebar uses this code    if options.has_key('subtitle'):        textnodes, more_messages = state.inline_text(options['subtitle'],                                                     lineno)        titles.append(nodes.subtitle(options['subtitle'], '', *textnodes))        messages.extend(more_messages)    text = '\n'.join(content)    node = node_class(text, *(titles + messages))    node['classes'] += options.get('class', [])    if text:        state.nested_parse(content, content_offset, node)    return [node]topic.arguments = (1, 0, 1)topic.options = {'class': directives.class_option}topic.content = 1def sidebar(name, arguments, options, content, lineno,            content_offset, block_text, state, state_machine):    if isinstance(state_machine.node, nodes.sidebar):        error = state_machine.reporter.error(              'The "%s" directive may not be used within a sidebar element.'              % name, nodes.literal_block(block_text, block_text), line=lineno)        return [error]    return topic(name, arguments, options, content, lineno,                 content_offset, block_text, state, state_machine,                 node_class=nodes.sidebar)sidebar.arguments = (1, 0, 1)sidebar.options = {'subtitle': directives.unchanged_required,                   'class': directives.class_option}sidebar.content = 1def line_block(name, arguments, options, content, lineno,               content_offset, block_text, state, state_machine):    if not content:        warning = state_machine.reporter.warning(            'Content block expected for the "%s" directive; none found.'            % name, nodes.literal_block(block_text, block_text), line=lineno)        return [warning]    block = nodes.line_block(classes=options.get('class', []))    node_list = [block]    for line_text in content:        text_nodes, messages = state.inline_text(line_text.strip(),                                                 lineno + content_offset)        line = nodes.line(line_text, '', *text_nodes)        if line_text.strip():            line.indent = len(line_text) - len(line_text.lstrip())        block += line        node_list.extend(messages)        content_offset += 1    state.nest_line_block_lines(block)    return node_listline_block.options = {'class': directives.class_option}line_block.content = 1def parsed_literal(name, arguments, options, content, lineno,                   content_offset, block_text, state, state_machine):    set_classes(options)    return block(name, arguments, options, content, lineno,                 content_offset, block_text, state, state_machine,                 node_class=nodes.literal_block)parsed_literal.options = {'class': directives.class_option}parsed_literal.content = 1def block(name, arguments, options, content, lineno,          content_offset, block_text, state, state_machine, node_class):    if not content:        warning = state_machine.reporter.warning(            'Content block expected for the "%s" directive; none found.'            % name, nodes.literal_block(block_text, block_text), line=lineno)        return [warning]    text = '\n'.join(content)    text_nodes, messages = state.inline_text(text, lineno)    node = node_class(text, '', *text_nodes, **options)    node.line = content_offset + 1    return [node] + messagesdef rubric(name, arguments, options, content, lineno,             content_offset, block_text, state, state_machine):    rubric_text = arguments[0]    textnodes, messages = state.inline_text(rubric_text, lineno)    rubric = nodes.rubric(rubric_text, '', *textnodes, **options)    return [rubric] + messagesrubric.arguments = (1, 0, 1)rubric.options = {'class': directives.class_option}def epigraph(name, arguments, options, content, lineno,             content_offset, block_text, state, state_machine):    block_quote, messages = state.block_quote(content, content_offset)    block_quote['classes'].append('epigraph')    return [block_quote] + messagesepigraph.content = 1def highlights(name, arguments, options, content, lineno,             content_offset, block_text, state, state_machine):    block_quote, messages = state.block_quote(content, content_offset)    block_quote['classes'].append('highlights')    return [block_quote] + messageshighlights.content = 1def pull_quote(name, arguments, options, content, lineno,             content_offset, block_text, state, state_machine):    block_quote, messages = state.block_quote(content, content_offset)    block_quote['classes'].append('pull-quote')    return [block_quote] + messagespull_quote.content = 1def compound(name, arguments, options, content, lineno,             content_offset, block_text, state, state_machine):    text = '\n'.join(content)    if not text:        error = state_machine.reporter.error(            'The "%s" directive is empty; content required.' % name,            nodes.literal_block(block_text, block_text), line=lineno)        return [error]    node = nodes.compound(text)    node['classes'] += options.get('class', [])    state.nested_parse(content, content_offset, node)    return [node]compound.options = {'class': directives.class_option}compound.content = 1def container(name, arguments, options, content, lineno,              content_offset, block_text, state, state_machine):    text = '\n'.join(content)    if not text:        error = state_machine.reporter.error(            'The "%s" directive is empty; content required.' % name,            nodes.literal_block(block_text, block_text), line=lineno)        return [error]    try:        if arguments:            classes = directives.class_option(arguments[0])        else:            classes = []    except ValueError:        error = state_machine.reporter.error(            'Invalid class attribute value for "%s" directive: "%s".'            % (name, arguments[0]),            nodes.literal_block(block_text, block_text), line=lineno)        return [error]    node = nodes.container(text)    node['classes'].extend(classes)    state.nested_parse(content, content_offset, node)    return [node]container.arguments = (0, 1, 1)container.content = 1

⌨️ 快捷键说明

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