Exemple #1
0
 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
Exemple #3
0
    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
Exemple #4
0
 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
Exemple #5
0
 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]
Exemple #6
0
    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]