# -*- Ruby -*- =begin HtmlGenerator allows you to generate Html implementing an interface similar but not identical to CGI. It's a pre alpha based on software under a GNU licence. If it ever get's released it has to be GNU software too. =end require 'cgi' class HtmlGenerator def reset @page = '' @depth = "\n" end def incDepth @depth += ' ' end def decDepth @depth = @depth[0..-3] end def newFrame reset @page = '' end def newTransitional reset @page = '' end def escapeHTML(text) return CGI.escapeHTML(text) end def quote(aString) return '"' + aString + '"' end def formatTag(aTag) return aTag.downcase end def cr @page += @depth end def beginTag(tagname, parameters) cr @page += '<' + formatTag(tagname) parameters.each_pair { |key, value| @page += ' ' + key + '=' + quote(value) } @page += '>' end def endTag(aTag) cr @page += '' end def tag(tagname, parameters, &block) beginTag(tagname, parameters) incDepth block.call # assume block modifies @page, too decDepth endTag(tagname) end def html(&block) tag 'html', {}, &block end def head(&block) tag 'head', {}, &block end def meta(params) beginTag 'meta', params end def link(params) beginTag 'link', params end def title(&block) tag 'title', {}, &block end def body(params, &block) tag 'body', params, &block end def center(&block) tag 'center', {}, &block end def h1(params, &block) tag 'h1', params, &block end def a(params, &block) tag 'a', params, &block end def img(srcPath, altName) tag('img', { 'src'=>srcPath, 'alt'=>altName }) {} end def table(params, &block) tag 'table', params, &block end def tr(params, &block) tag 'tr', params, &block end def td(params, &block) tag 'td', params, &block end def frameset(params, &block) tag 'frameset', params, &block end def frame(params) beginTag 'frame', params end def noframes(&block) tag 'noframes', {}, &block end def br beginTag 'br', Hash.new end def addHtml(htmlString) @page += htmlString end def getPage return @page # CGI.pretty(@page) end end