Updated site to reflect new repository home
[treetop.git] / doc / sitegen.rb
blobb7bac1b8f963206c15a7472658c7e9f0ba1578b7
1 class Layout < Erector::Widget
3   class << self
4     def inherited(page_class)
5       puts page_class
6       (@@page_classes ||= []) << page_class
7     end
9     def generate_site
10       @@page_classes.each do |page_class|
11         page_class.generate_html unless page_class.abstract?
12         puts page_class
13       end
14     end
16     def generate_html
17       File.open(absolute_path, 'w') do |file|
18         file.write(new.render)
19       end
20     end
22     def absolute_path
23       absolutize(relative_path)
24     end
26     def relative_path
27       "#{name.gsub('::', '_').underscore}.html"
28     end
30     def absolutize(relative_path)
31       File.join(File.dirname(__FILE__), "site", relative_path)
32     end
34     def abstract
35       @abstract = true
36     end
38     def abstract?
39       @abstract
40     end
41   end
43   def bluecloth(relative_path)
44     File.open(File.join(File.dirname(__FILE__), relative_path)) do |file|
45       rawtext BlueCloth.new(file.read).to_html
46     end
47   end
49   def absolutize(relative_path)
50     self.class.absolutize(relative_path)
51   end
53   def link_to(link_text, page_class, section_class=nil)
54     if instance_of?(page_class) || section_class && is_a?(section_class)
55       text link_text
56     else
57       a link_text, :href => page_class.relative_path
58     end
59   end
60 end