Support for HTML Generator Objects

Andreas Franke

provides
x-ozlib://mathweb/html/Buffered.ozf
x-ozlib://mathweb/html/Html.ozf

Purpose

The module Buffered provides buffered versions of Open.file, Open.socket and Open.pipe. The write(vs:VS) method appends VS to an internal buffer. A method flushBuffer is provided that causes the buffer's content to be flushed via Open.xyz, write(...). The flushBuffer method is automatically triggered by

Additionally, the methods push and pop($) allow for nesting buffers.

Html.'class' provides a tag method similar to Open.html (I just copied the code from Open.html and modified/extended it). The main difference is that in this version each tag is written via {self write(vs:...)} instead of first generating one virtual string and writing it in one go. Together with classes like Buffered.file, however, the advantage of concatenation is back again, it happens just somewhere else. (In principle, it is possible to use this class together with the original classes Open.file etc., but this may be very slow.)
So why are we doing all this? The main new feature of this aproach is that it allows for method calls somewhere deep down in the argument of tag(...). See Html.document for a demo application.

To view the interface documentation generated by ozh, click here.

Example

class MyHtml from Html.'class'

   meth writeTitle
      {self write(vs:"Oh, Happy Day... :-)")}
   end
   meth writeHtml(Content)}
      {self tag(html(head(title('self'(writeTitle)))
                     body(h1('self'(writeTitle))#Content)))}
   end

end

Installation

This package can be installed by following the usual configure, build, install procedure, i.e. by executing a the shell: ./configure make install By default, all files of the package are installed in the user's ~/.oz directory tree. In particular, all modules are installed in the user's private cache.


Andreas Franke