class Markdown: def __init__(self,output): self._id=0 self._output = output # Write columns in markdown format def writeColumns(self,cols): colStr = "".join(joinit(cols,"|")) self._output.write("|") self._output.write(colStr) self._output.write("|\n") sepStr="".join(joinit([":-:" for x in cols],"|")) self._output.write("|") self._output.write(sepStr) self._output.write("|\n") # Write row in markdown format def writeRow(self,row): row=[str(x) for x in row] rowStr = "".join(joinit(row,"|")) self._output.write("|") self._output.write(rowStr) self._output.write("|\n") def visitTable(self,table): self.writeColumns(table.columns) for row in table.rows: self.writeRow(row) def visitSection(self,section): self._id = self._id + 1 header = "".join(["#" for i in range(self._id)]) self._output.write("%s %s\n" % (header,section.name)) def leaveSection(self,section): self._id = self._id - 1 def visitDocument(self,document): self._output.write("Run number %d on %s\n" % (document.runid, str(document.date))) def leaveDocument(self,document): pass styleSheet=""" """ script="""""" class HTMLToc: def __init__(self,output): self._id=0 self._sectionID = 0 self._output = output def visitTable(self,table): pass def visitSection(self,section): self._id = self._id + 1 self._sectionID = self._sectionID + 1 if section.hasChildren: self._output.write("
  • %s\n" % (self._sectionID,section.name)) self._output.write("
  • \n") self._id = self._id - 1 def visitDocument(self,document): self._output.write("

    Table of content

    %s\n" % script) class HTML: def __init__(self,output,regMode): self._id=0 self._sectionID = 0 self._output = output self._regMode = regMode def visitTable(self,table): self._output.write("\n") self._output.write("\n") self._output.write("\n") firstCore = False for col in table.params: firstCore = True self._output.write("\n") for col in table.cores: if firstCore: self._output.write("\n") firstCore = False self._output.write("\n") self._output.write("\n") nbParams = len(table.params) for row in table.rows: self._output.write("\n") i = 0 for elem in row: if i < nbParams: self._output.write("\n") elif i == nbParams and nbParams != 0: self._output.write("\n") else: self._output.write("\n") i = i + 1 self._output.write("\n") self._output.write("
    ") self._output.write(str(col)) self._output.write("") else: self._output.write("") self._output.write(str(col)) self._output.write("
    ") self._output.write(str(elem)) self._output.write("") self._output.write(str(elem)) self._output.write("") self._output.write(str(elem)) self._output.write("
    \n") def visitSection(self,section): self._id = self._id + 1 self._sectionID = self._sectionID + 1 self._output.write("%s\n" % (self._id,self._sectionID,section.name,self._id)) def leaveSection(self,section): self._id = self._id - 1 def visitDocument(self,document): self._output.write(""" Benchmarks%s\n""" % styleSheet) if self._regMode: self._output.write("

    ECPS Benchmark Regressions

    \n") else: self._output.write("

    ECPS Benchmark Summary

    \n") self._output.write("

    Run number %d on %s

    \n" % (document.runid, str(document.date))) def leaveDocument(self,document): document.accept(HTMLToc(self._output)) self._output.write("\n")