Beispiel #1
0
        public static string ExpandMasterPage(IResourceFileReader reader, ResourceInfo info, Regex masterRegex, Regex bodyRegex)
        {
            var template = info.Content;
            var path     = info.Path;
            var masterPageResourceName = ExtractMasterPageResourceName(reader, info, masterRegex).FirstOrDefault();

            template = masterRegex.Replace(template, string.Empty);
            if (masterPageResourceName != null)
            {
                using var stream = reader.GetResourceStream(masterPageResourceName);
                if (stream != null)
                {
                    using var sr = new StreamReader(stream);
                    var master = sr.ReadToEnd();
                    if (bodyRegex.IsMatch(master))
                    {
                        return(bodyRegex.Replace(master, template));
                    }
                    else
                    {
                        Logger.LogInfo($"Master page {masterPageResourceName} does not contain {{{{!body}}}} element, content in current template {path} is ignored.");
                        return(master);
                    }
                }
            }

            return(template);
        }
Beispiel #2
0
        public Nustache.Core.Template GetTemplate(string name)
        {
            if (_reader == null)
            {
                return(null);
            }
            var resourceName = name + PartialTemplateExtension;

            return(_templateCache.GetOrAdd(resourceName, s =>
            {
                lock (_reader)
                {
                    using (var stream = _reader.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;
                    }
                }
            }));
        }