Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-12-01 23:40:44

0001 #!/usr/bin/env python3
0002 
0003 import os, sys, string
0004 
0005 from xml.parsers import expat
0006 
0007 # ================================================================================
0008 
0009 class SimpleAsciiFormatter :
0010 
0011     def __init__(self, title="CMS SDT pages", style=None, outFile=sys.stdout) :
0012         self.format = ""
0013         self.title = title
0014         return
0015     
0016     def showLine(self) :
0017         print("\n================================================================================\n")
0018         return
0019     
0020     def write(self, arg="") :
0021         print(arg)
0022         return
0023 
0024     def writeB(self, arg="") :
0025         print(arg)
0026         return
0027 
0028     def writeBr(self) :
0029         print() 
0030         return
0031 
0032     def writeH1(self, arg="") :
0033         print(arg)
0034         return
0035     
0036     def writeH2(self, arg="") :
0037         print(arg)
0038         return
0039 
0040     def writeH3(self, arg="") :
0041         print(arg)
0042         return
0043     
0044     def startTable(self, colSizes, colLabels) :
0045         self.cols = colSizes
0046         self.format = ""
0047         for fmt in self.cols :
0048             self.format += "%"+str(fmt)+"s "
0049         print(self.format % tuple(colLabels))
0050 
0051         return
0052 
0053     def writeRow(self, args) :
0054         print(self.format % tuple(args))
0055 
0056         return
0057 
0058     def endTable(self) :
0059         self.format = None
0060         self.cols   = None
0061         
0062     
0063 # ================================================================================
0064 
0065 class SimpleHTMLFormatter :
0066 
0067     def __init__(self, title="CMS SDT pages ", style=None, outFile=sys.stdout, scriptCode='') :
0068         import time
0069 
0070         self.headersDone = False
0071         self.title=title
0072         self.style = style
0073         self.scriptCode = scriptCode
0074         self.outFile = outFile
0075         self.format = ""
0076 
0077         return
0078 
0079     def addScriptCode(self, scriptCode):
0080         self.scriptCode += scriptCode
0081 
0082     def __del__(self) :
0083         if self.headersDone :
0084             self.trailers()
0085         else: # in case nothing has been written yet, output an empty page ...
0086             self.outFile.write( "Content-Type: text/html" + '\n')     # HTML is following
0087             self.outFile.write( '\n')   # blank line, end of headers
0088             self.outFile.write( "<html> " + '\n')
0089             self.outFile.write( "</html> " + '\n')
0090         
0091         return
0092 
0093     def showLine(self) :
0094         self.headers()
0095         self.outFile.write( "<hr />" + '\n')
0096         return
0097     
0098     def write(self, arg="", bold=False) :
0099         self.headers()
0100         if bold:
0101             self.writeB(arg)
0102         else:
0103             self.outFile.write( arg + '\n')
0104         return
0105 
0106     def writeBr(self) :
0107         self.headers()
0108         self.outFile.write( "<br /> <br /> " + '\n')
0109         return
0110     
0111     def writeB(self, arg="") :
0112         self.headers()
0113         self.outFile.write( "<b> " + arg + " </b>" + '\n')
0114         return
0115     
0116     def writeH1(self, arg="") :
0117         self.headers()
0118         self.outFile.write( "<h1> " + arg + " </h1>" + '\n')
0119         return
0120     
0121     def writeH2(self, arg="") :
0122         self.headers()
0123         self.outFile.write( "<h2> " + arg + " </h2>" + '\n')
0124         return
0125 
0126     def writeH3(self, arg="") :
0127         self.headers()
0128         self.outFile.write( "<h3> " + arg + " </h3>" + '\n')
0129         return
0130     
0131     def writeAnchor(self, ref="") :
0132         self.headers()
0133         self.outFile.write( '<a name="' + ref + '">&nbsp;</a>')
0134         return
0135     
0136     def startTable(self, colSizes, colLabels, id=None, cls=None, tableAttr=None) :
0137         # we assume that html headers are done by now !!
0138         tableString = '<table '
0139         if tableAttr:
0140             tableString += tableAttr
0141         if id:
0142             tableString += ' id="'+id+'" '
0143         if cls:
0144             tableString += ' class="'+cls+'" '
0145         tableString += '>'
0146         self.outFile.write( tableString + '\n')
0147 
0148         self.outFile.write( " <thead>\n  <tr>"  + '\n')
0149         for col in colLabels :
0150             self.outFile.write( "   <th> <b>" + col + "</b> </th>" + '\n')
0151         self.outFile.write( "  </tr>\n</thead>" + '\n')
0152         self.outFile.write( "  <tbody>" + '\n')
0153         return
0154 
0155     def writeRow(self, args, bold=False, cls=None) :
0156         # we assume that headers are done by now !!
0157 
0158         if cls:
0159             self.outFile.write( ' <tr class="'+cls+'"> \n')
0160         else:
0161             self.outFile.write( " <tr>" + '\n')
0162         for arg in args:
0163             if str(arg).strip() == "" : arg = "&nbsp;"
0164             if bold: self.outFile.write( '<td class=cellbold> ' )
0165             else:    self.outFile.write( "  <td> " )
0166             self.outFile.write( arg )
0167             
0168             self.outFile.write( " </td>" + '\n')
0169         self.outFile.write( " </tr> " + '\n')
0170 
0171         return
0172 
0173     def writeStyledRow(self, args, styles) :
0174         # we assume that headers are done by now !!
0175         self.outFile.write( " <tr>" + '\n')
0176         for arg, cellStyle in zip(args, styles):
0177             if str(arg).strip() == "" : arg = "&nbsp;"
0178             cellStyle = cellStyle.strip()
0179             if cellStyle != '' : self.outFile.write( '<td class='+cellStyle+'> ' )
0180             else:    self.outFile.write( "  <td> " )
0181             self.outFile.write( arg )
0182             self.outFile.write( " </td>" + '\n')
0183         self.outFile.write( " </tr> " + '\n')
0184 
0185         return
0186 
0187     def endTable(self) :
0188         # we assume that headers are done by now !!
0189         self.outFile.write( "</tbody>" + '\n')
0190         self.outFile.write( "</table>" + '\n')
0191         
0192     # --------------------------------------------------------------------------------
0193     def headers(self) :
0194         # make sure to write the headers only once ...
0195         if not self.headersDone :
0196         
0197             self.outFile.write( "<html> " + '\n')
0198 
0199             self.outFile.write( "<head> " + '\n')
0200 
0201             if self.style:
0202                 self.outFile.write( self.style + '\n')
0203             
0204             self.outFile.write( "<TITLE>" + self.title + "</TITLE>" + '\n')
0205             if self.scriptCode:
0206                 self.outFile.write( self.scriptCode + '\n' )
0207             self.outFile.write( "</head> " + '\n')
0208             self.outFile.write( "<body>" + '\n')
0209         self.headersDone = True
0210 
0211         return
0212 
0213     # --------------------------------------------------------------------------------
0214     def trailers(self) :
0215         # write only if headers have been written ...
0216         if self.headersDone :
0217             self.outFile.write( "</body>" + '\n')
0218             self.outFile.write( "</html> " + '\n')
0219             pass
0220         return
0221 
0222