def parse_template path, text
type = path.match(KNOWN_TEMPLATE_EXTENSIONS)[1].to_sym
type = :erb if type == :rhtml
name = template_path_to_name path
Brakeman.debug "Parsing #{path}"
begin
src = case type
when :erb
type = :erubis if erubis?
parse_erb path, text
when :haml
parse_haml path, text
when :slim
parse_slim path, text
else
tracker.error "Unknown template type in #{path}"
nil
end
if src and ast = @file_parser.parse_ruby(src, path)
@file_parser.file_list[:templates] << TemplateFile.new(path, ast, name, type)
end
rescue Racc::ParseError => e
tracker.error e, "Could not parse #{path}"
rescue StandardError, LoadError => e
tracker.error e.exception(e.message + "\nWhile processing #{path}"), e.backtrace
end
nil
end