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)
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))
def write_doc(self, docname, doctree): destination = StringOutput(encoding='utf-8') self.current_docname = docname self.docwriter.write(doctree, destination) self.docwriter.assemble_parts()
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
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
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)
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"))