def parsemeta(self, match): name = self.parse_field_marker(match) name = utils.unescape(utils.escape2null(name)) 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'] = utils.unescape(utils.escape2null( ' '.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)) 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)) return msg, blank_finish
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
def set_attributes(self, node): """Set the node attributes.""" attrs = None if "attributes" in self.options: attrs = self.options.get("attributes", "") elif self.default_attributes: attrs = self.default_attributes if attrs is not None: tokens = attrs.split("\n") try: attname, val = utils.extract_name_value(tokens[0])[0] if attname == "id": node["ids"].append(val) else: node.attributes.update({attname: val}) except utils.NameValueError: node["name"] = tokens[0] for token in tokens[1:]: try: attname, val = utils.extract_name_value(token)[0] if attname == "id": node["ids"].append(val) else: node.attributes.update({attname: val}) except utils.NameValueError as detail: line = self.state_machine.line msg = self.state_machine.reporter.error( 'Error parsing %s tag attribute "%s": %s.' % (node.tagname, token, detail), nodes.literal_block(line, line), ) return [msg] return node
def parsemeta(self, match): name = self.parse_field_marker(match) name = utils.unescape(utils.escape2null(name)) ( 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"] = utils.unescape(utils.escape2null(" ".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)) 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 as detail: line = self.state_machine.line msg = self.reporter.error( 'Error parsing meta tag attribute "%s": %s.' % (token, detail), nodes.literal_block(line, line), ) return msg, blank_finish self.document.note_pending(pending) return pending, blank_finish
def run(self): # self.assert_has_content() text = '\n'.join(self.content) try: if self.default_class and self.arguments: classes = self.default_class + self.arguments elif self.arguments: classes = directives.class_option(self.arguments[0]) else: classes = self.default_class except ValueError: raise self.error( 'Invalid class attribute value for "%s" directive: "%s".' % (self.name, self.arguments[0])) node = nodes.container(text) if classes: node['classes'].extend(classes) try: if 'tagname' in self.options: # if self.options.has_key('tagname'): node.tagname = self.options.get('tagname', 'div') elif self.default_tagname: node.tagname = self.default_tagname else: node.tagname = 'div' except ValueError: raise self.error( 'Invalid tag name for "%s" directive: "%s".' % (self.name, node.tagname)) attrs = None if 'attributes' in self.options: attrs = self.options.get('attributes', '') elif self.default_attributes: attrs = self.default_attributes if attrs: tokens = attrs.split('\n') try: attname, val = utils.extract_name_value(tokens[0])[0] if attname == 'id': node['ids'].append(val) else: node.attributes.update({attname: val}) except utils.NameValueError: node['name'] = tokens[0] for token in tokens[1:]: try: attname, val = utils.extract_name_value(token)[0] if attname == 'id': node['ids'].append(val) else: node.attributes.update({attname: val}) except utils.NameValueError as detail: line = self.state_machine.line msg = self.state_machine.reporter.error( 'Error parsing %s tag attribute "%s": %s.' % (node.tagname, token, detail), nodes.literal_block(line, line)) return [msg] if 'endless' in self.options or self.default_endless: node['endless'] = True self.add_name(node) if self.content: self.state.nested_parse(self.content, self.content_offset, node) return [node]
def run(self): # self.assert_has_content() text = '\n'.join(self.content) node = nodes.container(text) try: if self.default_class is not None and self.arguments: classes = self.default_class + self.arguments elif self.arguments: classes = directives.class_option(self.arguments[0]) else: classes = self.default_class except ValueError: raise self.error( 'Invalid class attribute value for "{}" directive: "{}".'.format( self.name, self.arguments[0])) if classes: node['classes'].extend(classes) try: if 'tagname' in self.options: node.tagname = self.options.get('tagname', 'div') elif self.default_tagname is not None: node.tagname = self.default_tagname else: node.tagname = 'div' except ValueError: raise self.error( 'Invalid tag name for "{}" directive: "{}".'.format( self.name, node.tagname)) attrs = None if 'attributes' in self.options: attrs = self.options.get('attributes', '') elif self.default_attributes: attrs = self.default_attributes if attrs is not None: tokens = attrs.split('\n') try: attname, val = utils.extract_name_value(tokens[0])[0] if attname == 'id': node['ids'].append(val) else: node.attributes.update({attname: val}) except utils.NameValueError: node['name'] = tokens[0] for token in tokens[1:]: try: attname, val = utils.extract_name_value(token)[0] if attname == 'id': node['ids'].append(val) else: node.attributes.update({attname: val}) except utils.NameValueError as detail: line = self.state_machine.line msg = self.state_machine.reporter.error( 'Error parsing %s tag attribute "%s": %s.' % (node.tagname, token, detail), nodes.literal_block(line, line)) return [msg] if 'endless' in self.options or self.default_endless: node['endless'] = True # self.add_name(node) if self.content: self.state.nested_parse(self.content, self.content_offset, node) return [node]