public Nustache.Core.Template GetTemplate(string name) { if (_resourceProvider == null) { return(null); } var resourceName = name + PartialTemplateExtension; return(_templateCache.GetOrAdd(resourceName, s => { lock (_resourceProvider) { using (var stream = _resourceProvider.GetResourceStream(s)) { if (stream == null) { return null; } var template = new Nustache.Core.Template(name); using (StreamReader reader = new StreamReader(stream)) { template.Load(reader); } return template; } } })); }
public Nustache.Core.Template GetTemplate(string name) { if (_resourceProvider == null) { return(null); } var resourceName = name + PartialTemplateExtension; Nustache.Core.Template template; if (!_templateCache.TryGetValue(resourceName, out template)) { using (var stream = _resourceProvider.GetResourceStream(resourceName)) { if (stream == null) { return(null); } template = new Nustache.Core.Template(name); using (StreamReader reader = new StreamReader(stream)) { template.Load(reader); } _templateCache[resourceName] = template; } } return(template); }
private void ProcessDependencies(string outputDirectory) { if (_resourceProvider == null) { Logger.Log(LogLevel.Info, "Resource provider is not specified, dependencies will not be processed."); return; } if (_templates != null) { foreach (var resourceInfo in ExtractDependentFilePaths(_templates).Distinct()) { try { // TODO: support glob pattern if (resourceInfo.IsRegexPattern) { var regex = new Regex(resourceInfo.ResourceKey, RegexOptions.IgnoreCase); foreach (var name in _resourceProvider.Names) { if (regex.IsMatch(name)) { using (var stream = _resourceProvider.GetResourceStream(name)) { ProcessSingleDependency(stream, outputDirectory, name); } } } } else { using (var stream = _resourceProvider.GetResourceStream(resourceInfo.ResourceKey)) { ProcessSingleDependency(stream, outputDirectory, resourceInfo.FilePath); } } } catch (Exception e) { Logger.Log(LogLevel.Info, $"Unable to get relative resource for {resourceInfo.FilePath}: {e.Message}"); } } } }
public Nustache.Core.Template GetTemplate(string name) { if (_resourceProvider == null) { return(null); } var resourceName = name + PartialTemplateExtension; using (var stream = _resourceProvider.GetResourceStream(resourceName)) { if (stream == null) { return(null); } var template = new Nustache.Core.Template(name); using (StreamReader reader = new StreamReader(stream)) template.Load(reader); return(template); } }
public void ProcessTemplateAndTheme(DocumentBuildContext context, string outputDirectory, bool overwrite) { if (_templateProcessor != null) { Logger.Log(LogLevel.Verbose, "Template resource found, starting applying template."); _templateProcessor.Process(context, outputDirectory); } if (_themeResource != null) { Logger.Log(LogLevel.Verbose, "Theme resource found, starting copying theme."); foreach (var resourceName in _themeResource.Names) { using (var stream = _themeResource.GetResourceStream(resourceName)) { var outputPath = Path.Combine(outputDirectory, resourceName); CopyResource(stream, outputPath, overwrite); Logger.Log(LogLevel.Info, $"Theme resource {resourceName} copied to {outputPath}."); } } } }