Example #1
0
        /// <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
        }
Example #2
0
        /// <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);
            }
        }
Example #3
0
 /// <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);
 }