HTML/text formatting question

Steven Bethard steven.bethard at gmail.com
Wed Aug 3 12:17:12 EDT 2005


Dr. Who wrote:
> I have a tool that outputs data in either html or text output.
> 
> Currently I'm writing chucnks like:
> 
> if html:
>     print '<html><body bgcolor="FFFFCC">'
>     print '<table border="1" bgcolor="CCCCFF" width="800">'
>     print '<tr><td colspan="2"><h2>'
> print 'Differences %s: %s' % (htypestr, lbl1)
> if html:
> 	...

I'd create two Formatter classes, one for HTML and one for text.  It 
looks like, in your case, the HTML one should inherit from the text one. 
  Something like:

py> class TextFormatter(object):
...     def print_differences(self, htypestr, lbll):
...         print 'Differences %s: %s' % (htypestr, lbll)
...
py> class HTMLFormatter(TextFormatter):
...     def print_differences(self, htypestr, lbll):
...         print '<html><body bgcolor="FFFFCC">'
...         print '<table border="1" bgcolor="CCCCFF" width="800">'
...         print '<tr><td colspan="2"><h2>'
...         super(HTMLFormatter, self).print_differences(htypestr, lbll)
...         print '</h2></td></tr></table></body></html>'
...
py> formatter = TextFormatter()
py> formatter.print_differences('test', 'one')
Differences test: one
py> formatter = HTMLFormatter()
py> formatter.print_differences('test', 'one')
<html><body bgcolor="FFFFCC">
<table border="1" bgcolor="CCCCFF" width="800">
<tr><td colspan="2"><h2>
Differences test: one
</h2></td></tr></table></body></html>

Using this strategy, you would replace all your print statements with 
calls to a formatter object.  Which formatter you use would be 
determined wherever you currently set 'html' to True or False.

HTH,

STeVe



More information about the Python-list mailing list