public MustacheTemplateRenderer(ResourceCollection resourceProvider, string template)
 {
     if (template == null) throw new ArgumentNullException(nameof(template));
     _resourceTemplateLocator = new ResourceTemplateLocator(resourceProvider);
     _template = new Nustache.Core.Template();
     using (var reader = new StringReader(template))
         _template.Load(reader);
     Dependencies = ExtractDependentFilePaths(template);
 }
 public static LiquidTemplateRenderer Create(ResourceCollection resourceProvider, string template)
 {
     if (template == null) throw new ArgumentNullException(nameof(template));
     lock (_locker)
     {
         DotLiquid.Template.RegisterTag<Dependency>("ref");
         Dependency.PopDependencies();
         var liquidTemplate = DotLiquid.Template.Parse(template);
         liquidTemplate.Registers.Add("file_system", new ResourceFileSystem(resourceProvider));
         var dependencies = Dependency.PopDependencies();
         return new LiquidTemplateRenderer(liquidTemplate, template, dependencies);
     }
 }
Example #3
0
        public Template(string template, string templateName, string script, ResourceCollection resourceCollection)
        {
            if (string.IsNullOrEmpty(templateName)) throw new ArgumentNullException(nameof(templateName));
            if (string.IsNullOrEmpty(template)) throw new ArgumentNullException(nameof(template));
            Name = templateName;
            var typeAndExtension = GetTemplateTypeAndExtension(templateName);
            Extension = typeAndExtension.Item2;
            Type = typeAndExtension.Item1;
            IsPrimary = typeAndExtension.Item3;
            _script = script;
            _engine = CreateEngine(script);

            _renderer = CreateRenderer(resourceCollection, templateName, template);
            Resources = ExtractDependentResources();
        }
Example #4
0
        public TemplateManager(Assembly assembly, string rootNamespace, List <string> templates, List <string> themes, string baseDirectory)
        {
            var resourceFinder = new ResourceFinder(assembly, rootNamespace, baseDirectory);

            if (templates == null || templates.Count == 0)
            {
                Logger.Log(LogLevel.Info, "Template is not specified, files will not be transformed.");
            }
            else
            {
                var templateResources = templates.Select(s => resourceFinder.Find(s)).Where(s => s != null).ToArray();
                if (templateResources.Length == 0)
                {
                    Logger.Log(LogLevel.Warning, $"No template resource found for [{templates.ToDelimitedString()}].");
                }
                else
                {
                    _templateProcessor = new TemplateProcessor(new CompositeResourceCollectionWithOverridden(templateResources));
                }
            }

            if (themes == null || themes.Count == 0)
            {
                Logger.Log(LogLevel.Info, "Theme is not specified, no additional theme will be applied to the documentation.");
            }
            else
            {
                var themeResources = themes.Select(s => resourceFinder.Find(s)).Where(s => s != null).ToArray();
                if (themeResources.Length == 0)
                {
                    Logger.Log(LogLevel.Warning, $"No theme resource found for [{themes.ToDelimitedString()}].");
                }
                else
                {
                    _themeResource = new CompositeResourceCollectionWithOverridden(themeResources);
                }
            }
        }
Example #5
0
 public TemplateManager(Assembly assembly, string rootNamespace, List<string> templates, List<string> themes, string baseDirectory)
 {
     var resourceFinder = new ResourceFinder(assembly, rootNamespace, baseDirectory);
     if (templates == null || templates.Count == 0)
     {
         Logger.Log(LogLevel.Info, "Template is not specified, files will not be transformed.");
     }
     else
     {
         var templateResources = templates.Select(s => resourceFinder.Find(s)).Where(s => s != null).ToArray();
         if (templateResources.Length == 0)
         {
             Logger.Log(LogLevel.Warning, $"No template resource found for [{templates.ToDelimitedString()}].");
         }
         else
         {
             _templateProcessor = new TemplateProcessor(new CompositeResourceCollectionWithOverridden(templateResources));
         }
     }
     
     if (themes == null || themes.Count == 0)
     {
         Logger.Log(LogLevel.Info, "Theme is not specified, no additional theme will be applied to the documentation.");
     }
     else
     {
         var themeResources = themes.Select(s => resourceFinder.Find(s)).Where(s => s != null).ToArray();
         if (themeResources.Length == 0)
         {
             Logger.Log(LogLevel.Warning, $"No theme resource found for [{themes.ToDelimitedString()}].");
         }
         else
         {
             _themeResource = new CompositeResourceCollectionWithOverridden(themeResources);
         }
     }
 }
Example #6
0
        public Template(string template, string templateName, string script, ResourceCollection resourceProvider)
        {
            if (string.IsNullOrEmpty(templateName)) throw new ArgumentNullException(nameof(templateName));
            if (string.IsNullOrEmpty(template)) throw new ArgumentNullException(nameof(template));
            Name = templateName;
            var typeAndExtension = GetTemplateTypeAndExtension(templateName);
            Extension = typeAndExtension.Item2;
            Type = typeAndExtension.Item1;
            IsPrimary = typeAndExtension.Item3;
            _script = script;
            if (resourceProvider != null)
            {
                if (Path.GetExtension(templateName).Equals(".liquid", StringComparison.OrdinalIgnoreCase))
                {
                    _renderer = LiquidTemplateRenderer.Create(resourceProvider, template);
                }
                else
                {
                    _renderer = new MustacheTemplateRenderer(resourceProvider, template);
                }
            }

            Resources = ExtractDependentResources();
        }
 public ResourceFileSystem(ResourceCollection resourceProvider)
 {
     _resourceProvider = resourceProvider;
 }
Example #8
0
 /// <summary>
 /// TemplateName can be either file or folder
 /// 1. If TemplateName is file, it is considered as the default template
 /// 2. If TemplateName is a folder, files inside the folder is considered as the template, each file is named after {DocumentType}.{extension}
 /// </summary>
 /// <param name="templateName"></param>
 /// <param name="resourceProvider"></param>
 public TemplateProcessor(ResourceCollection resourceProvider)
 {
     _resourceProvider = resourceProvider;
     _templates = new TemplateCollection(resourceProvider);
 }
 public ResourceTemplateLocator(ResourceCollection resourceProvider)
 {
     _resourceProvider = resourceProvider;
 }
Example #10
0
 public ResourceFileSystem(ResourceCollection resourceProvider)
 {
     _resourceProvider = resourceProvider;
 }
Example #11
0
 public CompositeResourceCollectionWithOverridden(ResourceCollection[] collectionsInOverriddenOrder)
 {
     if (collectionsInOverriddenOrder == null) throw new ArgumentNullException(nameof(collectionsInOverriddenOrder));
     _collectionsInOverriddenOrder = collectionsInOverriddenOrder;
     Names = _collectionsInOverriddenOrder.SelectMany(s => s.Names).Distinct();
 }
Example #12
0
 /// <summary>
 /// TemplateName can be either file or folder
 /// 1. If TemplateName is file, it is considered as the default template
 /// 2. If TemplateName is a folder, files inside the folder is considered as the template, each file is named after {DocumentType}.{extension}
 /// </summary>
 /// <param name="templateName"></param>
 /// <param name="resourceProvider"></param>
 public TemplateProcessor(ResourceCollection resourceProvider)
 {
     _resourceProvider = resourceProvider;
     Templates         = new TemplateCollection(resourceProvider);
 }
Example #13
0
 /// <summary>
 /// TemplateName can be either file or folder
 /// 1. If TemplateName is file, it is considered as the default template
 /// 2. If TemplateName is a folder, files inside the folder is considered as the template, each file is named after {DocumentType}.{extension}
 /// </summary>
 /// <param name="templateName"></param>
 /// <param name="resourceProvider"></param>
 public TemplateProcessor(ResourceCollection resourceProvider)
 {
     _resourceProvider = resourceProvider;
     _global           = LoadGlobalJson(resourceProvider);
     Templates         = new TemplateCollection(resourceProvider);
 }
 public ResourceTemplateLocator(ResourceCollection resourceProvider)
 {
     _resourceProvider = resourceProvider;
 }
Example #15
0
 public TemplateCollection(ResourceCollection provider) : base(ReadTemplate(provider), StringComparer.OrdinalIgnoreCase)
 {
     base.TryGetValue("default", out _defaultTemplate);
 }
Example #16
0
 private static ITemplateRenderer CreateRenderer(ResourceCollection resourceCollection, string templateName, string template)
 {
     if (resourceCollection == null) return null;
     if (Path.GetExtension(templateName).Equals(".liquid", StringComparison.OrdinalIgnoreCase))
     {
         return LiquidTemplateRenderer.Create(resourceCollection, template);
     }
     else
     {
         return new MustacheTemplateRenderer(resourceCollection, template);
     }
 }