Changeset e794d0a in rtems-source-builder


Ignore:
Timestamp:
Dec 8, 2014, 5:44:56 AM (5 years ago)
Author:
Sebastian Huber <sebastian.huber@…>
Branches:
4.10, 4.11, 4.9, master
Children:
6733a85
Parents:
28410eb
git-author:
Sebastian Huber <sebastian.huber@…> (12/08/14 05:44:56)
git-committer:
Sebastian Huber <sebastian.huber@…> (12/11/14 06:50:10)
Message:

sb: Add HTML generation to formatter class

File:
1 edited

Legend:

Unmodified
Added
Removed
  • source-builder/sb/reports.py

    r28410eb re794d0a  
    149149                c.line('       %s' % (h))
    150150        return c.get()
     151
     152    def post_process(self, out):
     153        return out
    151154
    152155class asciidoc_formatter(formatter):
     
    272275
    273276class html_formatter(asciidoc_formatter):
     277    def __init__(self):
     278        super(html_formatter, self).__init__()
     279        try:
     280            import asciidocapi
     281        except:
     282            raise error.general('installation error: no asciidocapi found')
     283        asciidoc_py = _make_path(self.sbpath, options.basepath, 'asciidoc', 'asciidoc.py')
     284        try:
     285            self.asciidoc = asciidocapi.AsciiDocAPI(asciidoc_py)
     286        except:
     287            raise error.general('application error: asciidocapi failed')
     288
    274289    def format(self):
    275290        return 'html'
     
    277292    def ext(self):
    278293        return '.html'
     294
     295    def post_process(self, out):
     296        import StringIO
     297        infile = StringIO.StringIO(out)
     298        outfile = StringIO.StringIO()
     299        self.asciidoc.execute(infile, outfile)
     300        out = outfile.getvalue()
     301        infile.close()
     302        outfile.close()
     303        return out
    279304
    280305class text_formatter(formatter):
     
    475500    def __init__(self, formatter, _configs, opts, macros = None):
    476501        self.formatter = formatter
    477         self.format = formatter.format()
    478502        self.configs = _configs
    479503        self.opts = opts
     
    486510        self.bset_nesting = 0
    487511        self.out = ''
    488         self.asciidoc = None
    489         if self.is_ini():
    490             self.cini = ';'
    491         else:
    492             self.cini = ''
    493512        self.tree = {}
    494513        self.files = { 'buildsets':[], 'configs':[] }
     
    497516        self.out += text + '\n'
    498517
    499     def is_text(self):
    500         return self.format == 'text'
    501 
    502     def is_asciidoc(self):
    503         return self.format == 'asciidoc' or self.format == 'html'
    504 
    505     def is_html(self):
    506         return self.format == 'html'
    507 
    508518    def is_ini(self):
    509         return self.format == 'ini'
    510 
    511     def setup(self):
    512         if self.is_html():
    513             try:
    514                 import asciidocapi
    515             except:
    516                 raise error.general('installation error: no asciidocapi found')
    517             asciidoc_py = _make_path(self.sbpath, options.basepath, 'asciidoc', 'asciidoc.py')
    518             try:
    519                 self.asciidoc = asciidocapi.AsciiDocAPI(asciidoc_py)
    520             except:
    521                 raise error.general('application error: asciidocapi failed')
     519        return self.formatter.format() == 'ini'
    522520
    523521    def header(self):
     
    731729
    732730    def write(self, name):
    733         if self.is_html():
    734             if self.asciidoc is None:
    735                 raise error.general('asciidoc not initialised')
    736             import StringIO
    737             infile = StringIO.StringIO(self.out)
    738             outfile = StringIO.StringIO()
    739             self.asciidoc.execute(infile, outfile)
    740             self.out = outfile.getvalue()
    741             infile.close()
    742             outfile.close()
    743         elif self.is_ini():
     731        self.out = self.formatter.post_process(self.out)
     732        if self.is_ini():
    744733            self.generate_ini()
    745734        if name is not None:
     
    776765
    777766    def create(self, inname, outname = None, intro_text = None):
    778         self.setup()
    779767        self.introduction(inname, intro_text)
    780768        self.generate(inname)
Note: See TracChangeset for help on using the changeset viewer.