An ERb wrapper that allows nesting of one ERb template inside another.
This TemplatePage operates similarly to RDoc 1.x's TemplatePage, but uses ERb instead of a custom template language.
Converting from a RDoc 1.x template to an RDoc 2.x template is fairly easy.
%blah% becomes <%= values %>
!INCLUDE! becomes <%= template_include %>
IF:blah becomes <% if values then %>
IFNOT:blah becomes <% unless values then %>
ENDIF:blah becomes <% end %>
START:blah becomes <% values.each do |blah| %>
END:blah becomes <% end %>
To make nested loops easier to convert, start by converting START statements to:
<% values["blah"].each do |blah| $stderr.puts blah.keys %>
So you can see what is being used inside which loop.
Create a new TemplatePage that will use
templates
.
# File rdoc/template.rb, line 34 def initialize(*templates) @templates = templates end
Returns “<a href="#{ref}">#{name}</a>”
# File rdoc/template.rb, line 41 def href(ref, name) if ref then "<a href=\"#{ref}\">#{name}</a>" else name end end
Process the template using values
, writing the result to
io
.
# File rdoc/template.rb, line 52 def write_html_on(io, values) b = binding template_include = "" @templates.reverse_each do |template| template_include = ERB.new(template).result b end io.write template_include end