From: Brian M. <br...@gr...> - 2009-03-24 03:01:43
|
Benny and Gerald, <snip> > > We could have: > > > > src/BaseDoc.py --> contains class BaseDoc and > TextDoc. Html is a TextDoc > > (even if a canvas would be used :-) ) > > > > src/plugins/lib/libhtml.py --> library with the > Html class and a new class > > HtmlPage, which derives from TextDoc and Html, using > Html to implement the > > TextDoc calls of start/end (I guess the start sets up > data for Html object, > > writes go to the active element, and on end the Html > object is actually made > > and added to the document). > > Yes, what should happen is: > > - the start call instantiates a new Html object > - the writes append the data to that object using one of > the methods > in the Html class > - on end the newly completed object is either added to a > higher-level > (in the DOM) Html object or written out using the write() > method. I generally agree with the way things are going except for this previous part. I don't think HtmlPage should derive from TextDoc. I don't think the TextDoc interface is going to be sufficient for the things you need to support the NavWeb report. So you are going to end up adding a bunch of functions that are not part of the TextDoc interface. I would prefer this: 1) Create HtmlPage in libhtml.py with all the rich functionality you could possibly need to generating HTML files. Make it closely related to the .css files that we currently have for NavWeb and WebCal. 2) Make src/plugins/docgen/htmldoc.py:HtmlDoc implement TextDoc like it does today, but internally, make it use HtmlPage instead of the hard-coded HTML we have today. So now we have three classes that internally use libhtml.py:HtmlPage - NavWeb, WebCal and HtmlDoc. 3) Remove the "templates" that are currently used with HtmlDoc and replace them with the .css files that are currently used for NavWeb and WebCal. This should be easy because HtmlDoc now uses HtmlPage and HtmlPage is built to be used with the existing .css files. Does this make any sense, or am I missing the mark? If the motivation for making HtmlPage inherit from TextDoc is to reuse the styledtext functions, I think those could be easily extracted from TextDoc and put into a library. (Actually, I was disappointed to see those concrete functions get added to an otherwise perfectly abstract interface - but we can save that conversation for another time). Thanks for listening, ~Brian |