summaryrefslogtreecommitdiff
path: root/trunk/lib/rdoc/template.rb
diff options
context:
space:
mode:
authoryugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-08-25 15:02:05 +0000
committeryugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-08-25 15:02:05 +0000
commit0dc342de848a642ecce8db697b8fecd83a63e117 (patch)
tree2b7ed4724aff1f86073e4740134bda9c4aac1a39 /trunk/lib/rdoc/template.rb
parentef70cf7138ab8034b5b806f466e4b484b24f0f88 (diff)
added tag v1_9_0_4
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/tags/v1_9_0_4@18845 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'trunk/lib/rdoc/template.rb')
-rw-r--r--trunk/lib/rdoc/template.rb64
1 files changed, 64 insertions, 0 deletions
diff --git a/trunk/lib/rdoc/template.rb b/trunk/lib/rdoc/template.rb
new file mode 100644
index 0000000000..53d0e3ce68
--- /dev/null
+++ b/trunk/lib/rdoc/template.rb
@@ -0,0 +1,64 @@
+require 'erb'
+
+module RDoc; end
+
+##
+# 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["blah"] %>
+# * !INCLUDE! becomes <%= template_include %>
+# * HREF:aref:name becomes <%= href values["aref"], values["name"] %>
+# * IF:blah becomes <% if values["blah"] then %>
+# * IFNOT:blah becomes <% unless values["blah"] then %>
+# * ENDIF:blah becomes <% end %>
+# * START:blah becomes <% values["blah"].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.
+
+class RDoc::TemplatePage
+
+ ##
+ # Create a new TemplatePage that will use +templates+.
+
+ def initialize(*templates)
+ @templates = templates
+ end
+
+ ##
+ # Returns "<a href=\"#{ref}\">#{name}</a>"
+
+ 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+.
+
+ 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
+
+end
+