class PhusionPassenger::HTMLTemplate

A convenience utility class for rendering our error pages.

def []=(name, value)

def []=(name, value)
	instance_variable_set("@#{name}".to_sym, value)
	return self
end

def backtrace_html_for(error)

def backtrace_html_for(error)
	html = %Q{
		<table class="backtrace">
		<tr class="headers">
			<th>#</th>
			<th>File</th>
			<th>Line</th>
			<th>Location</th>
		</tr>
	}
	in_passenger = false
	error.backtrace.each_with_index do |item, i|
		filename, line, location = item.split(':', 3)
		in_passenger ||= starts_with(filename, PASSENGER_FILE_PREFIX)
		class_names = in_passenger ? "passenger" : "framework"
		class_names << ((i & 1 == 0) ? " uneven" : " even")
		html << %Q{
			<tr class="backtrace_line #{class_names}">
				<td class="index">#{i}</td>
				<td class="filename">#{filename}</td>
				<td class="line">#{line}</td>
				<td class="location">#{location}</td>
			</tr>
		}
	end
	html << "</table>\n"
	return html
end

def get_binding

def get_binding
	return binding
end

def include(filename)

def include(filename)
	return File.read("#{TEMPLATE_DIR}/#{filename}")
end

def initialize(template_name, options = {})

def initialize(template_name, options = {})
	@buffer = ''
	@template = ERB.new(File.read("#{TEMPLATE_DIR}/#{template_name}.html.erb"),
		nil, nil, '@buffer')
	options.each_pair do |name, value|
		self[name] = value
	end
end

def layout(template_name, options = {})

def layout(template_name, options = {})
	options.each_pair do |name, value|
		self[name] = value
	end
	layout_template = ERB.new(File.read("#{TEMPLATE_DIR}/#{template_name}.html.erb"))
	b = get_binding do
		old_size = @buffer.size
		yield
		@buffer.slice!(old_size .. @buffer.size)
	end
	@buffer << layout_template.result(b)
end

def result

def result
	return @template.result(binding)
end

def starts_with(str, substr)

def starts_with(str, substr)
	return str[0 .. substr.size - 1] == substr
end