The following script takes the name of a template as it's argument. Within the
template the command
erb is in scope to call more templates. I wrote this for a friend who was having hell with NVU templates and I suggested to write the code by hand and use this script to build his static pages.
require "erb"
class QuickTemplate
attr_reader :args, :text
def initialize(file)
@text = File.read(file)
end
def exec(args={})
b = binding
template = ERB.new(@text, 0, "%<>")
result = template.result(b)
result.gsub(/\n$/,'')
end
end
def erb(file, args={})
QuickTemplate.new(file).exec(args)
end
puts erb(ARGV[0])
The erb command itself takes an optional argument of a hash which is passed to the template as the
variable name
args. Thus you can parameterize your sub templates.
Call the command as
ruby erb_run.rb main.thtml
The main template
<html>
<head>
</head>
<div>
<%= erb("title.thtml") %>
</div>
</html>
and the sub template
title.thtml
<title> This is Alex's cool restraunt</title>