NAME¶
HTML::Template - Ruby extension for HTML::Template
DESCRIPTION¶
This module deals with HTML template by CGI scripts and use a complete
selectivity between design and logic easily. You can deal with a nested block,
a loop and a conditional expression. Simple example, see below.
template file test.html
<HTML>
<HEAD><TITLE>Test Template</TITLE>
<BODY>
My Home Directory is <!var:home>
<P>
My Path is set to <!var:path>
</BODY>
</HTML>
Ruby script
require "html/template"
tmpl = HTML::Template.new("./test.html")
tmpl.param({
'home' => ENV['HOME'],
'path' => ENV['PATH']
})
print "Content-Type: text/html\n\n"
print tmpl.output
INSTALL¶
using install.rb
% tar xvzf html-template-x.xx.tar.gz
% cd html-template-x.xx
% ruby install.rb config
% ruby install.rb setup
% su
# ruby install.rb install
Template File¶
You can use original style tag or valid HTML comment style tag.
-
<!var:PARAMETER_NAME>
-
-
<!-- var:PARAMETER_NAME -->
- When you call HTML::Template#param ({PARAMETER_NAME =>
VAL}), tags will be simply replaced to VAL.
-
<!begin:PARAMETER_NAME>
-
-
<!end:PARAMETER_NAME>
-
-
<!-- begin:PARAMETER_NAME -->
-
-
<!-- end:PARAMETER_NAME -->
- It allows you to separate a section of text and give it a
name It would be able to make them loop or conditional expression. And, it
can be nested.
-
<!include:FILE_NAME>
-
-
<!-- include:FILE_NAME -->
- A file specified by FILE_NAME is simply inserted to a
template file. The template file will be treated as a merged template. If
you pass the path param to HTML::Template.new , include file will be
searched under the path.
HTML::Template CLASS¶
CLASS METHODS¶
-
HTML::Template.new(params = {})
- Creates a HTML::Template object. Given a file name to its
first argument, use this file as a template.
Also you can pass params as Hash. The options are below
- • filename
- template filename
- • path
- template search path. you can specified as String or Array
of String.
METHODS¶
-
HTML::Template#load(file)
- Load template file.
-
HTML::Template#set_html(html)
- Setting up a string as a template.
-
HTML::Template#param(hash = {})
-
-
HTML::Template#expand(hash = {})
- Specifies a string or a loop by Hash for a substitute. When
specifying more than a loop simultaneously, value of the hash becomes an
array.
-
HTML::Template#node(name)
-
-
HTML::Template#loop(name)
-
-
HTML::Template#cond(name)
- Stands a loop and a conditional expression specified by
<!begin:name><!end:name> Retrieves HTML::TemplateNode object.
-
HTML::Template#output
-
-
HTML::Template#to_s
- Returns the final result.
HTML::TemplateNode CLASS¶
This is a class for a loop or a conditional expression. An instance consists of
HTML::Template Class and HTML::TemplateNode CLASS.
METHODS¶
-
HTML::TemplateNode#node(name)
- Stands a loop or a conditional expression specified by
<!begin:name><!end:name> Returns HTML::TemplateNode object. Is
only used for nested.
-
HTML::TemplateNode#param(hash = {})
-
-
HTML::TemplateNode#expand(hash = {})
-
-
HTML::TemplateNode#add(hash = {})
- Specifies a string or a loop by Hash for a substitute. If
you don't call the method, the block won't be displayed.
A LOOP¶
This sample is a displaying list of environment valiables.
<html>
<body>
<h1>Env List</h1>
<hr>
<!begin:envlist>
<!var:key> : <!var:val><br>
<!end:envlist>
<hr>
</body>
</html>
# In case of using it with iterator and replace data.
require "html/template"
tmpl = HTML::Template.new("filename" => "envlist.html")
ENV.keys.sort.each do |k|
tmpl.node("envlist").param({'key' => k,
'val' => ENV[k]
})
end
print "Content-Type: text/html\n\n"
print tmpl.output
# In case of giving a loop as an array
require "html/template"
tmpl = HTML::Template.new("envlist.html")
envlist = []
ENV.keys.sort.each do |k|
envlist.push({'key' => k,
'val' => ENV[k]
})
end
tmpl.param({'envlist' => envlist})
print "Content-Type: text/html\n\n"
print tmpl.output
A Conditional Expression¶
<html>
<body>
<!begin:true>
This is True
<!var:foo>
<hr>
<!end:true>
<!begin:false>
This is False
<!var:foo>
<hr>
<!end:false>
</body>
</html>
require "html/template"
tmpl = HTML::Template.new("cond.html")
tmpl.param({'true' => {'foo' => 'foobar'}
})
print "Content-Type: text/html\n\n"
print tmpl.output
The performed result is below, however, a part not specied with the method isn't
displayed.
<html>
<body>
This is True
foobar
<hr>
</body>
</html>
An attached Sample.¶
-
env.rb
- This sample is a simply replacing valiables.
-
envlist.rb
- This sample is a displaying list of environment valiables.
This sample is a case for using with iterator.
-
envlist2.rb
- Performed result is the same as the envlist.rb.'s.
-
nest.rb
- A sample of a nested loop.
THANKS¶
English Documentation NAKAYAMA Nao <nao_o@netlaputa.ne.jp> thanks a lot
:-)
AUTHOR¶
Copyright 2001 IKEBE Tomohiro This library is free software; you can
redistribute it and / or modify it under the same terms as Ruby itself. IKEBE
Tomohiro <ikechin@Oxfa.com>