📄 html.py
字号:
# Author: David Goodger# Contact: goodger@users.sourceforge.net# Revision: $Revision: 3038 $# Date: $Date: 2005-03-14 17:16:57 +0100 (Mon, 14 Mar 2005) $# Copyright: This module has been placed in the public domain."""Directives for typically HTML-specific constructs."""__docformat__ = 'reStructuredText'import sysfrom docutils import nodes, utilsfrom docutils.parsers.rst import statesfrom docutils.transforms import componentsdef meta(name, arguments, options, content, lineno, content_offset, block_text, state, state_machine): node = nodes.Element() if content: new_line_offset, blank_finish = state.nested_list_parse( content, content_offset, node, initial_state='MetaBody', blank_finish=1, state_machine_kwargs=metaSMkwargs) if (new_line_offset - content_offset) != len(content): # incomplete parse of block? error = state_machine.reporter.error( 'Invalid meta directive.', nodes.literal_block(block_text, block_text), line=lineno) node += error else: error = state_machine.reporter.error( 'Empty meta directive.', nodes.literal_block(block_text, block_text), line=lineno) node += error return node.childrenmeta.content = 1def imagemap(name, arguments, options, content, lineno, content_offset, block_text, state, state_machine): return []class MetaBody(states.SpecializedBody): class meta(nodes.Special, nodes.PreBibliographic, nodes.Element): """HTML-specific "meta" element.""" pass def field_marker(self, match, context, next_state): """Meta element.""" node, blank_finish = self.parsemeta(match) self.parent += node return [], next_state, [] def parsemeta(self, match): name = self.parse_field_marker(match) indented, indent, line_offset, blank_finish = \ self.state_machine.get_first_known_indented(match.end()) node = self.meta() pending = nodes.pending(components.Filter, {'component': 'writer', 'format': 'html', 'nodes': [node]}) node['content'] = ' '.join(indented) if not indented: line = self.state_machine.line msg = self.reporter.info( 'No content for meta tag "%s".' % name, nodes.literal_block(line, line), line=self.state_machine.abs_line_number()) return msg, blank_finish tokens = name.split() try: attname, val = utils.extract_name_value(tokens[0])[0] node[attname.lower()] = val except utils.NameValueError: node['name'] = tokens[0] for token in tokens[1:]: try: attname, val = utils.extract_name_value(token)[0] node[attname.lower()] = val except utils.NameValueError, detail: line = self.state_machine.line msg = self.reporter.error( 'Error parsing meta tag attribute "%s": %s.' % (token, detail), nodes.literal_block(line, line), line=self.state_machine.abs_line_number()) return msg, blank_finish self.document.note_pending(pending) return pending, blank_finishmetaSMkwargs = {'state_classes': (MetaBody,)}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -