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); } }
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(); }
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); } } }
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); } } }
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; }
/// <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; }
public CompositeResourceCollectionWithOverridden(ResourceCollection[] collectionsInOverriddenOrder) { if (collectionsInOverriddenOrder == null) throw new ArgumentNullException(nameof(collectionsInOverriddenOrder)); _collectionsInOverriddenOrder = collectionsInOverriddenOrder; Names = _collectionsInOverriddenOrder.SelectMany(s => s.Names).Distinct(); }
/// <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); }
/// <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 TemplateCollection(ResourceCollection provider) : base(ReadTemplate(provider), StringComparer.OrdinalIgnoreCase) { base.TryGetValue("default", out _defaultTemplate); }
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); } }