# Based on Camping flipbook_rdoc by _why. # http://code.whytheluckystiff.net/svn/camping/trunk/extras/flipbook_rdoc.rb SITE_DIR = File.expand_path(File.dirname(__FILE__)) module Generators class HTMLGenerator def generate_html @files_and_classes = { 'allfiles' => gen_into_index(@files), 'allclasses' => gen_into_index(@classes), "initial_page" => main_url, 'realtitle' => CGI.escapeHTML(@options.title), 'charset' => @options.charset } # the individual descriptions for files and classes gen_into(@files) gen_into(@classes) gen_main_index # this method is defined in the template file write_extra_pages if defined? write_extra_pages end def gen_into(list) hsh = @files_and_classes.dup list.each do |item| if item.document_self op_file = item.path hsh['root'] = item.path.split("/").map { ".." }[1..-1].join("/") item.instance_variable_set("@values", hsh) File.makedirs(File.dirname(op_file)) File.open(op_file, "w") { |file| item.write_on(file) } end end end def gen_into_index(list) res = [] list.each do |item| hsh = item.value_hash hsh['href'] = item.path hsh['name'] = item.index_name res << hsh end res end def gen_main_index template = TemplatePage.new(RDoc::Page::INDEX) File.open("index.html", "w") do |f| values = @files_and_classes.dup if @options.inline_source values['inline_source'] = true end template.write_html_on(f, values) end ['logo.gif'].each do |img| ipath = File.join(SITE_DIR, 'images', img) File.copy(ipath, img) end end end end module RDoc module Page ###################################################################### # # The following is used for the -1 option # FONTS = "verdana,arial,'Bitstream Vera Sans',helvetica,sans-serif" STYLE = File.read(SITE_DIR + '/style.css') CONTENTS_XML = %{ IF:description %description% ENDIF:description IF:requires Requires: START:requires IF:aref %name% ENDIF:aref IFNOT:aref %name% ENDIF:aref END:requires ENDIF:requires IF:attributes

Attributes

START:attributes END:attributes
%name%%rw%%a_desc%
ENDIF:attributes IF:includes

Includes

ENDIF:includes START:sections IF:method_list

Methods

START:method_list IF:methods START:methods

%type% %category% IF:callseq %callseq% ENDIF:callseq IFNOT:callseq %name%%params% ENDIF:callseq

IF:m_desc %m_desc% ENDIF:m_desc IF:sourcecode
%sourcecode%
ENDIF:sourcecode END:methods ENDIF:methods END:method_list ENDIF:method_list END:sections } ############################################################################ BODY = %{ IF:title %realtitle% » %title% ENDIF:title IFNOT:title %realtitle% ENDIF:title

%title%

!INCLUDE!
} ############################################################################### FILE_PAGE = <<_FILE_PAGE_
%full_path% / %dtm_modified%
#{CONTENTS_XML}
_FILE_PAGE_ ################################################################### CLASS_PAGE = %{
IF:parent

%classmod% %full_name% < HREF:par_url:parent:

ENDIF:parent IFNOT:parent

%classmod% %full_name%

ENDIF:parent IF:infiles (in files START:infiles HREF:full_path_url:full_path: END:infiles ) ENDIF:infiles } + CONTENTS_XML + %{
} ################################################################### METHOD_LIST = %{ IF:includes
Included modules

START:includes HREF:aref:name: END:includes
ENDIF:includes IF:method_list START:method_list IF:methods
%type% %category% methods
START:methods
IF:callseq %callseq% ENDIF:callseq IFNOT:callseq %name%%params% ENDIF:callseq IF:codeurl src ENDIF:codeurl
IF:m_desc
%m_desc%
ENDIF:m_desc IF:aka
This method is also aliased as START:aka %name% END:aka
ENDIF:aka IF:sourcecode
%sourcecode%
ENDIF:sourcecode END:methods ENDIF:methods END:method_list ENDIF:method_list } ########################## Index ################################ FR_INDEX_BODY = %{ !INCLUDE! } FILE_INDEX = %{ START:entries %name%
END:entries } CLASS_INDEX = FILE_INDEX METHOD_INDEX = FILE_INDEX INDEX = %{ %realtitle% Click here to open the Thin docs. } end end