Exemple #1
0
 def literalinclude(self, filename, first_line, last_line):
     """Use literalinclude directive to return nodes for a literalinclude of specified lines in some file"""
     lines = "%s-%s" % (first_line, last_line)
     lineno = 0
     options = dict(lines=lines)
     content = ":lines: %s" % lines
     arguments = [filename]
     block_text = ""
     content_offset = 0
     
     directive_instance = LiteralInclude('literalinclude'
         , arguments, options, content, lineno
         , content_offset, block_text, self.state, self.state.state_machine
         )
     
     return directive_instance.run()
Exemple #2
0
    def run(self):
        document = self.state.document
        env = document.settings.env
        rel_filename, filename = env.relfn2path(self.arguments[0])
        make_changed_file(filename, env)
        self.arguments[0] = remove_extension(self.arguments[0])

        return LiteralInclude.run(self)
Exemple #3
0
    def run(self):
        literal = LiteralInclude.run(self)

        if self.prefix:
            prefix = nodes.Text(self.prefix, self.prefix)
            return [prefix, literal[0]]
        else:
            return literal
    def run(self):
        document = self.state.document
        env = document.settings.env
        rel_filename, filename = env.relfn2path(self.arguments[0])
        make_changed_file(filename, env)
        self.arguments[0] = remove_extension(self.arguments[0])

        return LiteralInclude.run(self)
Exemple #5
0
    def literalinclude(self, filename, first_line, last_line):
        """Use literalinclude directive to return nodes for a literalinclude of specified lines in some file"""
        lines = "%s-%s" % (first_line, last_line)
        lineno = 0
        options = dict(lines=lines)
        content = ":lines: %s" % lines
        arguments = [filename]
        block_text = ""
        content_offset = 0

        directive_instance = LiteralInclude('literalinclude', arguments,
                                            options, content, lineno,
                                            content_offset, block_text,
                                            self.state,
                                            self.state.state_machine)

        return directive_instance.run()
 def run(self):
     env = self.state.document.settings.env
     config = env.config
     resolve_link = config['viewsource_resolve_link']
     if callable(resolve_link):
         file_path = self.arguments[0]
         language = None if not self.options['language'] else self.options[
             'language']
         link = resolve_link(file_path, language)
         if 'caption' not in self.options:
             self.options['caption'] = ':viewsource:`%s`' % link
     return list(LiteralInclude.run(self))
Exemple #7
0
    def run(self):

        section = self.arguments[0].split(':')[1]
        if section == 'begin':
            self.options['end-before'] = section
        elif section == 'end':
            self.options['start-after'] = section
        else:
            self.options['start-after'] = section
            self.options['end-before'] = section
        uid = str(uuid.uuid1())[:6]
        result = tabpanel()
        nvtbs = navtabs()
        nvtbs.uid = uid
        for i, (target, _) in enumerate(context.target_languages):
            nvtb = navtab()
            nvtb.element_id = self.element_id(target, uid)
            nvtb.index = i
            nvtbs += nvtb

        result += nvtbs

        # save original node
        fname = self.arguments[0].split(':')[0].strip()
        fname = [context.generated_examples_path] + self.resolve_path(fname)[0].split(os.sep)[1:]

        tbcntnt = fluid_tab_content()

        # create nodes with parsed listings
        for i, (target, extension) in enumerate(context.target_languages):
            target_fname = list(fname)
            target_fname.insert(1, target)
            target_fname[-1] = os.path.splitext(target_fname[-1])[0] + '.' + extension
            target_fname = os.path.join(*target_fname)
            if not os.path.exists(target_fname):
                raise IOError(
                    'Generated listing %s not found, it is expected to be created from the corresponding meta-example' % (
                        os.path.abspath(target_fname)))

            relative_target_fname = os.path.relpath(target_fname, self.state.document.settings.env.srcdir)
            self.arguments[0] = '/' + relative_target_fname
            self.options['language'] = target
            # call base class, returns list
            include_container = sgexample()
            include_container.element_id = self.element_id(target, uid)
            include_container.language = target
            include_container.index = i
            include_container += LiteralInclude.run(self)
            tbcntnt += include_container
        result += tbcntnt

        return [result]
Exemple #8
0
    def run(self):

        section = self.arguments[0].split(':')[1]
        if section == 'begin':
            self.options['end-before'] = section
        elif section == 'end':
            self.options['start-after'] = section
        else:
            self.options['start-after'] = section
            self.options['end-before'] = section
        uid = str(uuid.uuid1())[:6]
        result = tabpanel()
        nvtbs = navtabs()
        nvtbs.uid = uid
        for i, (target, _) in enumerate(context.target_languages):
            nvtb = navtab()
            nvtb.language = self.element_id(target, uid)
            nvtb.index = i
            nvtbs += nvtb

        result += nvtbs

        # save original node
        fname = self.arguments[0].split(':')[0].strip()

        tbcntnt = fluid_tab_content()

        # create nodes with parsed listings
        for i, (target, extension) in enumerate(context.target_languages):
            self.convert_example(fname, target, extension)
            self.arguments[0] = fname+'.'+extension
            self.options['language'] = target
            # call base class, returns list
            include_container = sgexample()
            include_container.language = self.element_id(target, uid)
            include_container.index = i
            include_container += LiteralInclude.run(self)
            tbcntnt += include_container
        result += tbcntnt

        return [result]
    def run(self):
        # type: () -> List[nodes.Node]

        rel_filename, filename = self.env.relfn2path(self.arguments[0])
        code = open(filename, 'r').read().strip().split('\n')

        first_line = next(
            (idx for idx, line in enumerate(code) if 'SPDX' in line), 1)
        if first_line > 1:
            first_line += 3 if code[first_line][1] == '*' else 2
        last_line = len(code)

        while len(code[first_line - 1]) == 0:
            first_line += 1

        self.options['lines'] = '{}-{}'.format(first_line, last_line)
        self.options['lineno-start'] = first_line

        try:
            return LiteralInclude.run(self)
        except Exception as exc:
            return [document.reporter.warning(exc, line=self.lineno)]