コード例 #1
0
ファイル: Mustache.cs プロジェクト: zachli/qed
        public static MiddlewareFunc Create(
            string templateRootDirectoryName = null,
            string templateFileExtension     = null,
            string layoutTemplateName        = null,
            Func <IDictionary <string, object>, object> layoutDataFunc = null)
        {
            templateRootDirectoryName = templateRootDirectoryName ?? "templates";
            templateFileExtension     = templateFileExtension ?? ".mustache";
            layoutTemplateName        = layoutTemplateName ?? "_layout";

            var templateRootPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, templateRootDirectoryName);

            var configuration = new MustacheConfiguration
            {
                TemplateRootPath      = templateRootPath,
                TemplateFileExtension = templateFileExtension,
                LayoutTemplateName    = layoutTemplateName,
                LayoutDataFunc        = layoutDataFunc
            };

            return(next => environment =>
            {
                environment[_confiugrationKey] = configuration;

                return next(environment);
            });
        }
コード例 #2
0
ファイル: Mustache.cs プロジェクト: zachli/qed
 static bool HasLayout(MustacheConfiguration configuration)
 {
     return(File.Exists(
                Path.Combine(
                    configuration.TemplateRootPath,
                    String.Concat(configuration.LayoutTemplateName, configuration.TemplateFileExtension))));
 }
コード例 #3
0
ファイル: Mustache.cs プロジェクト: zachli/qed
        static Task RenderTemplate(
            MustacheConfiguration configuration,
            Stream responseStream,
            Template template,
            object data,
            bool hasLayout,
            string bodyTemplateName = null)
        {
            return(Task.Run(() =>
            {
                using (var writer = new StreamWriter(responseStream, Encoding.UTF8, 1, true))
                {
                    template.Render(
                        data,
                        writer,
                        name =>
                    {
                        if (hasLayout && name.Equals("body", StringComparison.OrdinalIgnoreCase))
                        {
                            return GetTemplate(configuration, bodyTemplateName);
                        }

                        return GetTemplate(configuration, name);
                    });
                }
            }));
        }
コード例 #4
0
ファイル: Mustache.cs プロジェクト: half-ogre/qed
        public static MiddlewareFunc Create(
            string templateRootDirectoryName = null,
            string templateFileExtension = null,
            string layoutTemplateName = null,
            Func<IDictionary<string, object>, object> layoutDataFunc = null)
        {
            templateRootDirectoryName = templateRootDirectoryName ?? "templates";
            templateFileExtension = templateFileExtension ?? ".mustache";
            layoutTemplateName = layoutTemplateName ?? "_layout";

            var templateRootPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, templateRootDirectoryName);

            var configuration = new MustacheConfiguration
            {
                TemplateRootPath = templateRootPath,
                TemplateFileExtension = templateFileExtension,
                LayoutTemplateName = layoutTemplateName,
                LayoutDataFunc = layoutDataFunc
            };

            return next => environment =>
            {
                environment[_confiugrationKey] = configuration;

                return next(environment);
            };
        }
コード例 #5
0
ファイル: Mustache.cs プロジェクト: modulexcite/qed
        static bool HasLayout(MustacheConfiguration configuration)
        {
            var assembly     = Assembly.GetExecutingAssembly();
            var resourceName = MakeEmbeddedTemplateResourceName(configuration.LayoutTemplateName);

            return(assembly.GetManifestResourceNames().Contains(resourceName));
        }
コード例 #6
0
ファイル: Mustache.cs プロジェクト: half-ogre/qed
        private static object GetLayoutData(
            MustacheConfiguration configuration,
            IDictionary<string, object> environment,
            object data)
        {
            if (configuration.LayoutDataFunc == null)
                return data;

            var templateData = data.ToDictionary();
            var layoutData = configuration.LayoutDataFunc(environment).ToDictionary();

            return new[] { templateData, layoutData }
                .SelectMany(x => x)
                .ToDictionary(pair => pair.Key, pair => pair.Value);
        }
コード例 #7
0
ファイル: Mustache.cs プロジェクト: zachli/qed
        private static object GetLayoutData(
            MustacheConfiguration configuration,
            IDictionary <string, object> environment,
            object data)
        {
            if (configuration.LayoutDataFunc == null)
            {
                return(data);
            }

            var templateData = data.ToDictionary();
            var layoutData   = configuration.LayoutDataFunc(environment).ToDictionary();

            return(new[] { templateData, layoutData }
                   .SelectMany(x => x)
                   .ToDictionary(pair => pair.Key, pair => pair.Value));
        }
コード例 #8
0
ファイル: Mustache.cs プロジェクト: zachli/qed
        static Template GetTemplate(
            MustacheConfiguration configuration,
            string templateName)
        {
            var templatePath = Path.Combine(
                configuration.TemplateRootPath,
                String.Concat(templateName, configuration.TemplateFileExtension));

            if (!File.Exists(templatePath))
            {
                throw new InvalidOperationException("Template path does not exist.");
            }

            var templateSource = File.ReadAllText(templatePath);

            var template = new Template();

            template.Load(new StringReader(templateSource));
            return(template);
        }
コード例 #9
0
ファイル: Mustache.cs プロジェクト: half-ogre/qed
        static bool HasLayout(MustacheConfiguration configuration)
        {
            var assembly = Assembly.GetExecutingAssembly();
            var resourceName = MakeEmbeddedTemplateResourceName(configuration.LayoutTemplateName);

            return assembly.GetManifestResourceNames().Contains(resourceName);
        }
コード例 #10
0
ファイル: Mustache.cs プロジェクト: Tradingangel/qed
        static Template GetTemplate(
            MustacheConfiguration configuration, 
            string templateName)
        {
            var templatePath = Path.Combine(
                configuration.TemplateRootPath,
                String.Concat(templateName, configuration.TemplateFileExtension));

            if (!File.Exists(templatePath))
                throw new InvalidOperationException("Template path does not exist.");

            var templateSource = File.ReadAllText(templatePath);

            var template = new Template();
            template.Load(new StringReader(templateSource));
            return template;
        }
コード例 #11
0
ファイル: Mustache.cs プロジェクト: Tradingangel/qed
        static Task RenderTemplate(
            MustacheConfiguration configuration,
            Stream responseStream,
            Template template, 
            object data,
            bool hasLayout,
            string bodyTemplateName = null)
        {
            return Task.Run(() =>
            {
                using (var writer = new StreamWriter(responseStream, Encoding.UTF8, 1, true))
                {
                    template.Render(
                        data,
                        writer,
                        name =>
                        {
                            if (hasLayout && name.Equals("body", StringComparison.OrdinalIgnoreCase))
                                return GetTemplate(configuration, bodyTemplateName);

                            return GetTemplate(configuration, name);
                        });
                }
            });
        }
コード例 #12
0
ファイル: Mustache.cs プロジェクト: Tradingangel/qed
 static bool HasLayout(MustacheConfiguration configuration)
 {
     return File.Exists(
         Path.Combine(
             configuration.TemplateRootPath,
             String.Concat(configuration.LayoutTemplateName, configuration.TemplateFileExtension)));
 }