/// <summary> /// Gives an instance of SpartanTemplate with a content variable already included. /// </summary> /// <param name="basePagePath"></param> /// <param name="contentPagePath"></param> /// <param name="templatingProcessor"></param> /// <param name="view"></param> public SpartanTemplate(string basePagePath, string contentPagePath, TemplatingProcessor templatingProcessor, IView view) { // Define the FileInfo objects we will later use to read the templates. FileInfo basePageFile = new FileInfo($"_Templates/{basePagePath}"); FileInfo contentPageFile = new FileInfo($"_Templates/{contentPagePath}"); // Load using the base page first Load(templatingProcessor, basePageFile, view); #region Setup content // Define a new template SpartanTemplate contentTemplate = new SpartanTemplate(contentPageFile, templatingProcessor, view); TemplateContext.Add("content", contentTemplate.Render()); #endregion }
/// <summary> /// Loads the data required for a basic template constructor. /// Internal use for SpartanTemplate class. /// </summary> /// <param name="templatingProcessor"></param> /// <param name="file"></param> /// <param name="view"></param> private void Load(TemplatingProcessor templatingProcessor, FileInfo file, IView view) { // Set the processor. this._templatingProcessor = templatingProcessor; // Create a temporary dictionary to hold the reflected parameters. IDictionary <string, object> templateParameters = new Dictionary <string, object>(); foreach (var contextEntry in GetParametersFromReflection(view)) { // This if check prevents our template system adding duplicates if we inherit multiple templates. if (!templateParameters.ContainsKey(contextEntry.Key)) { templateParameters.Add(contextEntry); } } // Pass in the arguments. this.TemplateContext = templateParameters; try { // Open the file and read the source from it. using (StreamReader sr = file.OpenText()) { string s = ""; while ((s = sr.ReadLine()) != null) { this._sourceText = this._sourceText + s; } } } catch (Exception ex) { _templatingProcessor.HandleReadError(ex); } }
/// <summary> /// Spawns a template instance containing only the loaded file. /// </summary> /// <param name="file"></param> /// <param name="templatingProcessor"></param> /// <param name="view"></param> public SpartanTemplate(System.IO.FileInfo file, TemplatingProcessor templatingProcessor, IView view) { // Load and prepare our template. Load(templatingProcessor, file, view); }