def convertRSTfilesToHTML(root_list): """This routine creates .html files from all .rst files in root_list, the list of files that have just been tangled.""" for root in root_list: base,fullname = g.os_path_split(root) name,ext = g.os_path_splitext(fullname) if ext == ".rst": file = g.os_path_join(base,name+".html") #@ << Convert root to corresponding .html file >> #@+node:EKR.20040502194930.3:<< Convert root to corresponding .html file >> # Leo will report the execption if docutils is not installed. from docutils.core import Publisher from docutils.io import FileInput,StringOutput,StringInput # Read .rst file into s. f = open(root,"r") s = f.read() f.close() # Restucture s into output. pub = Publisher() pub.source = StringInput(pub.settings,source=s) pub.destination = StringOutput(pub.settings,encoding="utf-8") pub.set_reader('standalone',None,'restructuredtext') pub.set_writer('html') output = pub.publish() # EKR: 3/7/03: convert output using the present encoding. dict = g.scanDirectives(self.c,p=root) encoding = dict.get("encoding",None) if encoding == None: encoding = g.app.config.default_derived_file_encoding output = g.toEncodedString(output,encoding,reportErrors=True) # Write the corresponding html file. f = open(file,"w") f.write(output) f.close()
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 # -- end -- << Convert to HTML >>
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 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 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"))
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"))