Beispiel #1
0
    def write_doc(self, docname, doctree):
        if docname in self.omitted_docnames:
            return

        if self.prev_next_loc in ('top', 'both'):
            navnode = self._build_navigation_node(docname)
            if navnode:
                navnode.top = True
                doctree.insert(0, navnode)

        if self.prev_next_loc in ('bottom', 'both'):
            navnode = self._build_navigation_node(docname)
            if navnode:
                navnode.bottom = True
                doctree.append(navnode)

        self.secnumbers = self.env.toc_secnumbers.get(docname, {})
        self.fignumbers = self.env.toc_fignumbers.get(docname, {})

        # remove title from page contents (if any)
        if self.config.confluence_remove_title:
            title_element = self._find_title_element(doctree)
            if title_element:
                # If the removed title is referenced to from within the same
                # document (i.e. a local table of contents entry), flag any
                # references pointing to it as a "top" (anchor) reference. This
                # can be used later in a translator to hint at what type of link
                # to build.
                ids = []

                if 'ids' in title_element:
                    ids.extend(title_element['ids'])

                parent = title_element.parent
                if isinstance(parent, nodes.section) and 'ids' in parent:
                    ids.extend(parent['ids'])

                if ids:
                    for node in doctree.traverse(nodes.reference):
                        if 'refid' in node and node['refid']:
                            if node['refid'] in ids:
                                node['top-reference'] = True
                                break

                title_element.parent.remove(title_element)

        # This method is taken from TextBuilder.write_doc()
        # with minor changes to support :confval:`rst_file_transform`.
        destination = StringOutput(encoding='utf-8')

        self.writer.write(doctree, destination)
        outfilename = path.join(self.outdir, self.file_transform(docname))
        if self.writer.output is not None:
            ensuredir(path.dirname(outfilename))
            try:
                with io.open(outfilename, 'w', encoding='utf-8') as file:
                    if self.writer.output:
                        file.write(self.writer.output)
            except (IOError, OSError) as err:
                ConfluenceLogger.warn("error writing file "
                                      "%s: %s" % (outfilename, err))
 def write_doc(self, docname, doctree):
     destination = StringOutput(encoding='utf-8')
     self.current_docname = docname
     self.writer.write(doctree, destination)
     ctx = None
     self.handle_page(docname, ctx, event_arg=doctree)
Beispiel #3
0
def onIconDoubleClick(tag, keywords):

    v = keywords.get("p") or keywords.get("v")
    c = keywords.get("c")
    # g.trace(c)

    h = v.headString().strip()
    if g.match_word(h, 0, "@text"):
        fname = h[5:]
        ext = os.path.splitext(fname)[1].lower()
        if ext in ('.htm', '.html', '.tex'):
            #@            << write rST as HTML/LaTeX >>
            #@+node:edream.111803100242.4:<< write rST as HTML/LaTeX >>
            try:
                import docutils
            except ImportError:
                docutils = None
                g.es('HTML/LaTeX generation requires docutils')

            if docutils:
                import StringIO
                rstFile = StringIO.StringIO()
                writeTreeAsRst(rstFile, fname, v, c)
                rstText = rstFile.getvalue()
                # Set the writer and encoding for the converted file
                if ext in ('.html', '.htm'):
                    writer = 'html'
                    enc = "utf-8"
                else:
                    writer = 'latex'
                    enc = "iso-8859-1"
                #@    << convert rST to HTML/LaTeX >>
                #@+node:edream.111803100242.5:<< convert rST to HTML/LaTeX >>
                # this code snipped has been taken from code contributed by Paul Paterson 2002-12-05
                from docutils.core import Publisher
                from docutils.io import StringOutput, StringInput

                pub = Publisher()
                # Initialize the publisher
                pub.source = StringInput(source=rstText)
                pub.destination = StringOutput(pub.settings, encoding=enc)
                pub.set_reader('standalone', None, 'restructuredtext')
                pub.set_writer(writer)
                output = pub.publish(argv=[''])
                #@nonl
                #@-node:edream.111803100242.5:<< convert rST to HTML/LaTeX >>
                #@nl
                convertedFile = file(fname, 'w')
                convertedFile.write(output)
                convertedFile.close()
                rstFile.close()
                g.es('written: ' + str(fname))
            #@nonl
            #@-node:edream.111803100242.4:<< write rST as HTML/LaTeX >>
            #@nl
        else:
            #@            << write rST file >>
            #@+node:edream.111803100242.6:<< write rST file >>
            rstFile = file(fname, 'w')
            writeTreeAsRst(rstFile, fname, v, c)
            rstFile.close()
            g.es('written: ' + str(fname))
Beispiel #4
0
    def write_doc(self, docname, doctree):
        destination = StringOutput(encoding='utf-8')

        self.current_docname = docname
        self.docwriter.write(doctree, destination)
        self.docwriter.assemble_parts()
Beispiel #5
0
def doctree_assert(doctree, writer, expected):
    destination = StringOutput(encoding='utf8')
    assert_equal(writer.write(doctree, destination), expected)
 def write_doc(self, docname, doctree):
     self.current_docname = docname
     destination = StringOutput(encoding='utf-8')
     self.writer.write(doctree, destination)
     self.output[docname] = self.writer.output
Beispiel #7
0
class VBMethod(object):
    """Represents a method of a control object"""

    # << VBMethod methods >> (1 of 3)
    def __init__(self, name, parameters=None):
        """Initialize the method"""
        self.name = name
        self.parameters = parameters or []
    # << VBMethod methods >> (2 of 3)
    def __repr__(self):
        """Representation of this method"""
        return "VBMethod('%s', %s)" % (self.name, self.parameters)
    # << VBMethod methods >> (3 of 3)
    def __str__(self):
    """String representation of this method"""
    try:
        if self.parameters:
            return "%s(*%s*)" % (self.name, ", ".join([str(item) for item in self.parameters]))
        else:
            return "%s()" % (self.name,)
    except:
        print "Failed on ", self.name
    # -- end -- << VBMethod methods >>
# << tlbrowse methods >> (4 of 4)
def enumerate(lst):
    "Mimic 2.3's enumerate function"
    return zip(xrange(sys.maxint), lst)
# -- end -- << tlbrowse methods >>


if __name__=='__main__':
    import sys
    fname = None
    try:
        fname = sys.argv[1]
    except:
        pass

    dlg = TypeBrowseDialog(fname)	
    if fname:
        controls = dlg.dumpProperties()
    else:
        dlg.DoModal()
        sys.exit()

    results = []
    l = results.append

    l("All VB Controls in %s\n\n" % fname)
    l("\n".join(["* %s_" % control for control in controls]))
    l("\n\n")

    for control in controls:
        l("\n%s\n%s\n\n" % (control, "="*len(control)))

        properties = controls[control].properties.keys()
        properties.sort()
        l("    *Properties*\n%s" % ("\n\n".join(["        %s" % 
                    prop for prop in properties]),)	)						

        methods = controls[control].methods.keys()
        methods.sort()					
        l("\n    *Methods*\n%s" % ("\n\n".join(["        %s" % 
                    str(controls[control].methods[method]) for method in methods]),))

    text = "\n".join(results)

    # << Convert to HTML >>
    import StringIO
    rstFile = StringIO.StringIO(text)

    from docutils.core import Publisher
    from docutils.io import StringOutput, StringInput

    pub = Publisher()
    # Initialize the publisher
    pub.source = StringInput(source=text)
    pub.destination = StringOutput(encoding="utf-8")
    pub.set_reader('standalone', None, 'restructuredtext')
    pub.set_writer('html')
    output = pub.publish()

    print output
Beispiel #8
0
        app.emit('doctree-read', doctree)

print('docnames', docnames)
updated_docnames = set(docnames)
print('updated_docnames:', updated_docnames)


# app.builder.write(set(), list(updated_docnames), 'update')
docnames = set(updated_docnames)
app.builder.prepare_writing(docnames)
# app.builder._write_serial(sorted(docnames))
for docname in docnames:
    print('docname:', docname)
    doctree = app.builder.env.get_and_resolve_doctree(docname, app.builder, doctree)
    app.builder.write_doc_serialized(docname, doctree)
    # app.builder.write_doc(docname, doctree)
    destination = StringOutput(encoding='utf-8')
    doctree.settings = app.builder.docsettings

    app.builder.secnumbers = app.builder.env.toc_secnumbers.get(docname, {})
    app.builder.fignumbers = app.builder.env.toc_fignumbers.get(docname, {})
    app.builder.imgpath = relative_uri(app.builder.get_target_uri(docname), '_images')
    app.builder.dlpath = relative_uri(app.builder.get_target_uri(docname), '_downloads')
    app.builder.current_docname = docname
    app.builder.docwriter.write(doctree, destination)
    app.builder.docwriter.assemble_parts()
    body = app.builder.docwriter.parts['fragment']
    print(body)

print('time elapsed:', time() - start_time)
Beispiel #9
0
def onIconDoubleClick(tag, keywords):

    c = keywords.get("c")
    p = keywords.get("p")
    # g.trace(c)

    if not c or not p:
        return

    applyConfiguration(c)
    config.tag = tag

    h = p.headString().strip()

    if g.match_word(h, 0, "@rst"):
        if len(h) > 5:
            fname = h[5:]
            ext = os.path.splitext(fname)[1].lower()
            if ext in ('.htm', '.html', '.tex'):
                #@                << write rST as HTML/LaTeX >>
                #@+node:ekr.20040331071319.4:<< write rST as HTML/LaTeX >>
                try:
                    import docutils
                except:
                    g.es('HTML/LaTeX generation requires docutils')
                    return
                else:
                    import docutils.parsers.rst
                    from docutils.core import Publisher
                    from docutils.io import StringOutput, StringInput, FileOutput, FileInput
                    import StringIO

                # Set the writer and encoding for the converted file
                if ext in ('.html', '.htm'):
                    writer = 'html'
                    enc = "utf-8"
                else:
                    writer = 'latex'
                    enc = "iso-8859-1"

                syntax = False
                if writer == 'html':
                    try:
                        import SilverCity

                        #@        << define code-block >>
                        #@+node:ekr.20040331071319.5:<< define code-block >>
                        def code_block(name, arguments, options, content,
                                       lineno, content_offset, block_text,
                                       state, state_machine):
                            """Create a code-block directive for docutils."""

                            # See http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/252170
                            language = arguments[0]
                            module = getattr(SilverCity, language)
                            generator = getattr(module,
                                                language + "HTMLGenerator")
                            io = StringIO.StringIO()
                            generator().generate_html(io, '\n'.join(content))
                            html = '<div class="code-block">\n%s\n</div>\n' % io.getvalue(
                            )
                            raw = docutils.nodes.raw(
                                '', html, format='html'
                            )  #(self, rawsource='', text='', *children, **attributes):
                            return [raw]

                        # These are documented at http://docutils.sourceforge.net/spec/howto/rst-directives.html.
                        code_block.arguments = (
                            1,  # Number of required arguments.
                            0,  # Number of optional arguments.
                            0
                        )  # True if final argument may contain whitespace.

                        # A mapping from option name to conversion function.
                        code_block.options = {
                            'language': docutils.parsers.rst.directives.
                            unchanged  # Return the text argument, unchanged
                        }

                        code_block.content = 1  # True if content is allowed.

                        # Register the directive with docutils.
                        docutils.parsers.rst.directives.register_directive(
                            'code-block', code_block)

                        config.do_replace_code_blocks = False
                        #@nonl
                        #@-node:ekr.20040331071319.5:<< define code-block >>
                        #@nl
                        syntax = True
                    except ImportError:
                        g.es(
                            'SilverCity not present so no syntax highlighting')
                        #@        << define alternate code block implementation>>
                        #@+node:bwmulder.20050326114320: << define alternate code block implementation>>
                        # Don't know what to do here: Can someone make a suggestion?
                        #import docutils.parsers.rst.directives.admonitions
                        #import docutils.parsers.rst.directives.body
                        # docutils.parsers.rst.directives._directives['code-block'] = docutils.parsers.rst.directives.body.block
                        # docutils.parsers.rst.directives.register_directive('code-block', docutils.parsers.rst.directives.admonitions.admonition)
                        #docutils.parsers.rst.directives._directives['code-block'] = docutils.parsers.rst.directives.body.pull_quote
                        # g.es("Registered some alternate implementation for code-block directive")
                        config.do_replace_code_blocks = config.rst2_replace_code_blocks
                        #@-node:bwmulder.20050326114320: << define alternate code block implementation>>
                        #@nl

                if config.rst2file:
                    rstFileName = os.path.splitext(fname)[0] + ".txt"
                    rstFile = file(rstFileName, "w")
                    g.es("Using %s as rst file" % rstFileName)
                else:
                    rstFile = StringIO.StringIO()
                config.current_file = fname
                writeTreeAsRst(rstFile, fname, p, c, syntax=syntax)
                if config.rst2file:
                    rstFile.close()
                else:
                    rstText = rstFile.getvalue()

                # This code snipped has been taken from code contributed by Paul Paterson 2002-12-05.
                pub = Publisher()
                if config.rst2file:
                    pub.source = FileInput(source_path=rstFileName)
                    pub.destination = FileOutput(destination_path=fname,
                                                 encoding='unicode')
                else:
                    pub.source = StringInput(source=rstText)
                    pub.destination = StringOutput(pub.settings, encoding=enc)
                pub.set_reader('standalone', None, 'restructuredtext')
                pub.set_writer(writer)
                output = pub.publish(argv=[''])

                if config.rst2file:
                    pass
                else:
                    convertedFile = file(fname, 'w')
                    convertedFile.write(output)
                    convertedFile.close()
                rstFile.close()
                writeFullFileName(fname)
                return http_support_main(tag, fname)

                #@-node:ekr.20040331071319.4:<< write rST as HTML/LaTeX >>
                #@nl
            else:
                #@                << write rST file >>
                #@+node:ekr.20040331071319.6:<< write rST file >>
                rstFile = file(fname, 'w')
                writeTreeAsRst(rstFile, fname, p, c)
                rstFile.close()
                writeFullFileName(fname)
                #@nonl
                #@-node:ekr.20040331071319.6:<< write rST file >>
                #@nl
        else:
            # if the headline only contains @rst then open the node and its parent in text editor
            # this works for me but needs to be generalized and should probably be a component
            # of the open_with plugin.
            if 0:
                c.openWith(("os.startfile", None, ".txt"))
                c.selectVnode(p.parent())
                c.openWith(("os.startfile", None, ".tp"))