public string ProcessTemplate (string content, ITextTemplatingEngineHost host)
{
ParsedTemplate pt = ParsedTemplate.FromText (content, host);
if (pt.Errors.HasErrors) {
host.LogErrors (pt.Errors);
return null;
}
TemplateSettings settings = GetSettings (host, pt);
if (pt.Errors.HasErrors) {
host.LogErrors (pt.Errors);
return null;
}
CodeCompileUnit ccu = GenerateCompileUnit (host, pt, settings);
if (pt.Errors.HasErrors) {
host.LogErrors (pt.Errors);
return null;
}
System.Reflection.Assembly results = GenerateCode (host, pt, settings, ccu);
if (pt.Errors.HasErrors) {
host.LogErrors (pt.Errors);
return null;
}
if (!String.IsNullOrEmpty (settings.Extension)) {
host.SetFileExtension (settings.Extension);
}
if (settings.Encoding != null) {
//FIXME: when is this called with false?
host.SetOutputEncoding (settings.Encoding, true);
}
string output = "";
try {
output = Run (results, settings.Namespace + "." + settings.Name, host, settings.Culture);
} catch (Exception ex) {
pt.LogError ("Error running transform: " + ex.ToString ());
}
host.LogErrors (pt.Errors);
return output;
}