Пример #1
0
        /// <summary>
        /// Renders the view.
        /// </summary>
        /// <param name="viewLocationResult">A <see cref="ViewLocationResult"/> instance, containing information on how to get the view template.</param>
        /// <param name="model">The model that should be passed into the view</param>
        /// <returns>A delegate that can be invoked with the <see cref="Stream"/> that the view should be rendered to.</returns>
        public Action <Stream> RenderView(ViewLocationResult viewLocationResult, dynamic model)
        {
            return(stream =>
            {
                var templateManagerProvider =
                    new TemplateManagerProvider()
                    .WithLoader(new TemplateLoader(viewLocationResult.Contents));

                var templateManager =
                    templateManagerProvider.GetNewManager();

                var template =
                    templateManager.GetTemplate(string.Empty);

                var context = new Dictionary <string, object> {
                    { "Model", model }
                };
                var reader = template.Walk(templateManager, context);

                var writer =
                    new StreamWriter(stream);

                writer.Write(reader.ReadToEnd());
                writer.Flush();
            });
        }
Пример #2
0
        /// <summary>
        /// Renders the view.
        /// </summary>
        /// <param name="viewLocationResult">A <see cref="ViewLocationResult"/> instance, containing information on how to get the view template.</param>
        /// <param name="model">The model that should be passed into the view</param>
        /// <param name="renderContext"></param>
        /// <returns>A delegate that can be invoked with the <see cref="Stream"/> that the view should be rendered to.</returns>
        public Action<Stream> RenderView(ViewLocationResult viewLocationResult, dynamic model, IRenderContext renderContext)
        {
            return stream =>{

                var templateManagerProvider =
                    new TemplateManagerProvider()
                        .WithLoader(new TemplateLoader(viewLocationResult.Contents.Invoke()));

                var templateManager =
                    templateManagerProvider.GetNewManager();

                var template = renderContext.ViewCache.GetOrAdd(
                    viewLocationResult,
                    x => templateManager.GetTemplate(string.Empty));

                var context = new Dictionary<string, object> { { "Model", model } };
                var reader = template.Walk(templateManager, context);

                var writer =
                    new StreamWriter(stream);

                writer.Write(reader.ReadToEnd());
                writer.Flush();
            };
        }
Пример #3
0
        public static TemplateManagerProvider Initialize(TemplateManagerProvider provider)
        {
            Filter[] filters =
            {
                new Filter("add", new NDjango.FiltersCS.AddFilter()),
                new Filter("get_digit", new NDjango.FiltersCS.GetDigit()),
                new Filter("default", new NDjango.FiltersCS.DefaultFilter()),
                new Filter("divisibleby", new NDjango.FiltersCS.DivisibleByFilter()),
                new Filter("addslashes", new NDjango.FiltersCS.AddSlashesFilter()),
                new Filter("capfirst", new NDjango.FiltersCS.CapFirstFilter()),
                new Filter("escapejs", new NDjango.FiltersCS.EscapeJSFilter()),
                new Filter("fix_ampersands", new NDjango.FiltersCS.FixAmpersandsFilter()),
                new Filter("floatformat", new NDjango.FiltersCS.FloatFormatFilter()),
                new Filter("linenumbers", new NDjango.FiltersCS.LineNumbersFilter()),
                new Filter("lower", new NDjango.FiltersCS.LowerFilter()),
                new Filter("upper", new NDjango.FiltersCS.UpperFilter()),
                new Filter("make_list", new NDjango.FiltersCS.MakeListFilter()),
                new Filter("wordcount", new NDjango.FiltersCS.WordCountFilter()),
                new Filter("ljust", new NDjango.FiltersCS.LJustFilter()),
                new Filter("rjust", new NDjango.FiltersCS.RJustFilter()),
                new Filter("center", new NDjango.FiltersCS.CenterFilter()),
                new Filter("cut", new NDjango.FiltersCS.CutFilter()),
                new Filter("title", new NDjango.FiltersCS.TitleFilter()),
                new Filter("removetags", new NDjango.FiltersCS.RemoveTagsFilter()),
                new Filter("first", new NDjango.FiltersCS.FirstFilter()),
                new Filter("last", new NDjango.FiltersCS.LastFilter()),
                new Filter("length", new NDjango.FiltersCS.LengthFilter()),
                new Filter("length_is", new NDjango.FiltersCS.LengthIsFilter()),
                new Filter("random", new NDjango.FiltersCS.RandomFilter()),
                new Filter("slice", new NDjango.FiltersCS.SliceFilter())
            };

            return provider
                .WithFilters(filters);
        }
Пример #4
0
        internal string BuildNJangoPage(string workingDirectory, string templateFile, IronPython.Runtime.PythonDictionary pyContext)
        {
            TemplateManagerProvider templateProvider = new TemplateManagerProvider();
            ITemplateManager        manager          = templateProvider.GetNewManager();

            Dictionary <string, object> context = new Dictionary <string, object>();

            foreach (object str in pyContext.Keys)
            {
                context.Add(str.ToString(), pyContext[str]);
            }

            if (File.Exists(workingDirectory + @"\" + templateFile.ToString()))
            {
                TextReader reader = manager.RenderTemplate(
                    workingDirectory + @"\" + templateFile.ToString(),
                    (Dictionary <string, Object>)context);

                return(reader.ReadToEnd());
            }
            else
            {
                return("Template not found");
            }
        }
Пример #5
0
 public void Setup()
 {
     provider = new TemplateManagerProvider()
         .WithLoader(new Loader())
         .WithTag("non-nested", new TestDescriptor.SimpleNonNestedTag())
         .WithTag("nested", new TestDescriptor.SimpleNestedTag())
         .WithTag("url", new TestUrlTag())
         ;
     provider = FilterManager.Initialize(provider);
     manager = provider.GetNewManager();
 }
Пример #6
0
        private ITemplateManager InitializeParser()
        {
            TemplateManagerProvider provider = new TemplateManagerProvider();

            return(provider
                   .WithTags(tags)
                   .WithFilters(filters)
                   .WithSetting(NDjango.Constants.EXCEPTION_IF_ERROR, false)
                   .WithLoader(template_loader)
                   .GetNewManager());
        }
Пример #7
0
        public void SetupStandartdValues()
        {
            provider = new TemplateManagerProvider()
                       .WithLoader(new Loader())
                       .WithTag("non-nested", new TestDescriptor.SimpleNonNestedTag())
                       .WithTag("nested", new TestDescriptor.SimpleNestedTag())
                       .WithTag("url", new TestUrlTag()).WithSetting(Constants.EXCEPTION_IF_ERROR, false);

            this.standardTags    = ((IDictionary <string, ITag>)((ITemplateManagerProvider)provider).Tags).Keys;
            this.standardFilters = ((IDictionary <string, ISimpleFilter>)((ITemplateManagerProvider)provider).Filters).Keys;
        }
Пример #8
0
 public void Setup()
 {
     provider = new TemplateManagerProvider()
         .WithLoader(new Loader())
         .WithTag("non-nested", new TestDescriptor.SimpleNonNestedTag())
         .WithTag("nested", new TestDescriptor.SimpleNestedTag())
         .WithTag("url", new TestUrlTag())
         .WithFilters(FilterManager.GetFilters())
         ;
     manager = provider.GetNewManager();
     managerForDesigner = provider.WithSetting(Constants.EXCEPTION_IF_ERROR, false).GetNewManager();
 }
Пример #9
0
        /// <summary>
        /// Initializes a new instance of the <see cref="NDjangoViewEngine"/> class.
        /// </summary>
        public NDjangoViewEngine()
        {
            provider = new TemplateManagerProvider().WithLoader(this).WithTag("url", new AspMvcUrlTag());
            provider = FilterManager.Initialize(provider);
            base.ViewLocationFormats = new string[] { "~/Views/{1}/{0}.django" };

            base.PartialViewLocationFormats = base.ViewLocationFormats;
            rootDir = HttpRuntime.AppDomainAppPath;

            ViewEngines.Engines.Clear();
            ViewEngines.Engines.Add(this);
        }
Пример #10
0
        /// <summary>
        /// Initializes a new instance of the <see cref="NDjangoViewEngine"/> class.
        /// </summary>
        public NDjangoViewEngine()
        {
            provider = new TemplateManagerProvider().WithLoader(this).WithTag("url", new AspMvcUrlTag());
            provider = FilterManager.Initialize(provider);
            base.ViewLocationFormats = new string[] { "~/Views/{1}/{0}.django" };

            base.PartialViewLocationFormats = base.ViewLocationFormats;
            rootDir = HttpRuntime.AppDomainAppPath;

            ViewEngines.Engines.Clear();
            ViewEngines.Engines.Add(this);
        }
Пример #11
0
 public void Setup()
 {
     provider = new TemplateManagerProvider()
                .WithLoader(new Loader())
                .WithTag("non-nested", new TestDescriptor.SimpleNonNestedTag())
                .WithTag("nested", new TestDescriptor.SimpleNestedTag())
                .WithTag("url", new TestUrlTag())
                .WithFilters(FilterManager.GetFilters())
     ;
     manager            = provider.GetNewManager();
     managerForDesigner = provider.WithSetting(Constants.EXCEPTION_IF_ERROR, false).GetNewManager();
 }
Пример #12
0
 public ProjectHandler(NodeProviderBroker broker, IVsHierarchy hier, string project_directory)
 {
     this.broker       = broker;
     template_loader   = new TemplateLoader(project_directory);
     type_resolver     = new TypeResolver(hier);
     TemplateDirectory = new TemplateDirectory(project_directory);
     parser            = new TemplateManagerProvider()
                         .WithTags(type_resolver.Tags)
                         .WithFilters(type_resolver.Filters)
                         .WithSetting(NDjango.Constants.EXCEPTION_IF_ERROR, false)
                         .WithLoader(template_loader)
                         .GetNewManager();
 }
Пример #13
0
        public void Initialize(INancyApplication application)
        {
            var container = application.Container;

            if (!container.Contains<TemplateManagerProvider>())
            {
                var tags = container.Resolve<IEnumerable<Tag>>();
                var filters = container.Resolve<IEnumerable<Filter>>();
                var settings = container.Resolve<IEnumerable<Setting>>();
                var templateProvider = new TemplateManagerProvider()
                    .WithFilters(filters)
                    .WithTags(tags)
                    .WithSettings(settings);
                container.Register<TemplateManagerProvider>(templateProvider);
            }
        }
Пример #14
0
        /// <summary>
        /// initializing managerProvider and loader.
        /// </summary>
        public void Initialize()
        {
            string                path    = typeof(TemplateManagerProvider).Assembly.CodeBase;
            List <Tag>            tags    = new List <Tag>();
            List <NDjango.Filter> filters = new List <NDjango.Filter>();

            // Searching for NDjango tags and filters in the dll's.
            if (path.StartsWith("file:///"))
            {
                foreach (string file in
                         Directory.GetFiles(
                             Path.GetDirectoryName(path.Substring(8)),
                             "*.dll",
                             SearchOption.AllDirectories))
                {
                    AssemblyName name = new AssemblyName();
                    name.CodeBase = file;
                    try
                    {
                        foreach (Type t in Assembly.Load(name).GetExportedTypes())
                        {
                            if (typeof(ITag).IsAssignableFrom(t))
                            {
                                CreateEntry <Tag>(tags, t);
                            }
                            if (typeof(ISimpleFilter).IsAssignableFrom(t))
                            {
                                CreateEntry <NDjango.Filter>(filters, t);
                            }
                        }
                    }
                    // There may be unmanaged dll's, and in that case dll fails to load.
                    // We have no other option to check it
                    catch
                    {
                    }
                }
            }

            managerProvider =
                new TemplateManagerProvider()
                .WithLoader(new TemplateLoader())
                .WithFilters(filters)
                .WithTags(tags)
                .WithTag("url", new MonorailUrlTag(HttpRuntime.AppDomainAppVirtualPath));
        }
Пример #15
0
        /// <summary>
        /// Renders the view.
        /// </summary>
        /// <param name="viewLocationResult">A <see cref="ViewLocationResult"/> instance, containing information on how to get the view template.</param>
        /// <param name="model">The model that should be passed into the view</param>
        /// <param name="renderContext"></param>
        /// <returns>A delegate that can be invoked with the <see cref="Stream"/> that the view should be rendered to.</returns>
        public Action<Stream> RenderView(ViewLocationResult viewLocationResult, dynamic model, IRenderContext renderContext)
        {
            return stream =>{
                var provider = new TemplateManagerProvider().WithLoader(new TemplateLoader(renderContext, viewLocationResult));

                var templateManager = provider.GetNewManager();

                var context = new Dictionary<string, object> { { "Model", model } };

                var reader = templateManager.GetTemplate(viewLocationResult.Location).Walk(templateManager, context);

                var writer = new StreamWriter(stream);

                writer.Write(reader.ReadToEnd());
                writer.Flush();
            };
        }
Пример #16
0
        /// <summary>
        /// Renders the view.
        /// </summary>
        /// <param name="viewLocationResult">A <see cref="ViewLocationResult"/> instance, containing information on how to get the view template.</param>
        /// <param name="model">The model that should be passed into the view</param>
        /// <param name="renderContext"></param>
        /// <returns>A response</returns>
        public Response RenderView(ViewLocationResult viewLocationResult, dynamic model, IRenderContext renderContext)
        {
            return new HtmlResponse(contents: stream =>
            {
                var provider = new TemplateManagerProvider().WithLoader(new TemplateLoader(renderContext, viewLocationResult));

                var templateManager = provider.GetNewManager();

                var context = new Dictionary<string, object> { { "Model", UnwrapDictionary(model) } };

                var reader = templateManager.GetTemplate(viewLocationResult.Location).Walk(templateManager, context);

                var writer = new StreamWriter(stream, Encoding.UTF8);

                writer.Write(reader.ReadToEnd());
                writer.Flush();
            });
        }
Пример #17
0
        public void Setup()
        {
            var filters = new[]
            {
                //Core Filters
                new Filter("add", new AddFilter()),
                new Filter("get_digit", new GetDigit()),
                new Filter("divisibleby", new DivisibleByFilter()),
                new Filter("addslashes", new AddSlashesFilter()),
                new Filter("capfirst", new CapFirstFilter()),
                new Filter("escapejs", new EscapeJSFilter()),
                new Filter("fix_ampersands", new FixAmpersandsFilter()),
                new Filter("floatformat", new FloatFormatFilter()),
                new Filter("linenumbers", new LineNumbersFilter()),
                new Filter("lower", new LowerFilter()),
                new Filter("upper", new UpperFilter()),
                new Filter("make_list", new MakeListFilter()),
                new Filter("wordcount", new WordCountFilter()),
                new Filter("ljust", new LJustFilter()),
                new Filter("rjust", new RJustFilter()),
                new Filter("center", new CenterFilter()),
                new Filter("cut", new CutFilter()),
                new Filter("title", new TitleFilter()),
                new Filter("removetags", new RemoveTagsFilter()),
                new Filter("first", new FirstFilter()),
                new Filter("last", new LastFilter()),
                new Filter("length", new LengthFilter()),
                new Filter("length_is", new LengthIsFilter()),
                new Filter("random", new RandomFilter()),
                new Filter("slice", new SliceFilter()),
                new Filter("default", new DefaultFilter())
            };


            provider = new TemplateManagerProvider()
                       .WithLoader(new Loader())
                       .WithTag("non-nested", new TestDescriptor.SimpleNonNestedTag())
                       .WithTag("nested", new TestDescriptor.SimpleNestedTag())
                       .WithTag("url", new TestUrlTag())
                       .WithFilters(filters);

            manager            = provider.GetNewManager();
            managerForDesigner = provider.WithSetting(Constants.EXCEPTION_IF_ERROR, false).GetNewManager();
        }
Пример #18
0
        /// <summary>
        /// Renders the view.
        /// </summary>
        /// <param name="viewLocationResult">A <see cref="ViewLocationResult"/> instance, containing information on how to get the view template.</param>
        /// <param name="model">The model that should be passed into the view</param>
        /// <param name="renderContext"></param>
        /// <returns>A response</returns>
        public Response RenderView(ViewLocationResult viewLocationResult, dynamic model, IRenderContext renderContext)
        {
            return(new HtmlResponse(contents: stream =>
            {
                var provider = new TemplateManagerProvider().WithLoader(new TemplateLoader(renderContext, viewLocationResult));

                var templateManager = provider.GetNewManager();

                var context = new Dictionary <string, object> {
                    { "Model", UnwrapDictionary(model) }
                };

                var reader = templateManager.GetTemplate(viewLocationResult.Location).Walk(templateManager, context);

                var writer = new StreamWriter(stream);

                writer.Write(reader.ReadToEnd());
                writer.Flush();
            }));
        }
Пример #19
0
        //Validate Settings by Type of provider and current Name
        private void ValidateSettings(string name, string value)
        {
            object result = null;
            bool   r1;

            bool isNewSetting = true;

            foreach (var item in ((ITemplateManagerProvider)provider).Settings)
            {
                if (name.Contains(item.Key))
                {
                    Type setType = item.Value.GetType();
                    if (setType == typeof(Boolean))
                    {
                        if (Boolean.TryParse(value, out r1))
                        {
                            result = r1;
                        }
                    }
                    else if (setType == typeof(int))
                    {
                        int r2;
                        if (int.TryParse(value, out r2))
                        {
                            result = r2;
                        }
                    }
                    else if (setType == typeof(string))
                    {
                        result = value.ToString();

                        provider     = provider.WithSetting(name, result);
                        isNewSetting = false;
                    }
                }
            }
            if (isNewSetting)
            {
                provider = provider.WithSetting(name, result);
            }
        }
Пример #20
0
        private static IParser InitializeParser()
        {
            string        path    = typeof(TemplateManagerProvider).Assembly.CodeBase;
            List <Tag>    tags    = new List <Tag>();
            List <Filter> filters = new List <Filter>();

            if (path.StartsWith("file:///"))
            {
                foreach (string file in
                         Directory.EnumerateFiles(
                             Path.GetDirectoryName(path.Substring(8)),
                             "*.NDjangoExtension.dll",
                             SearchOption.AllDirectories))
                {
                    AssemblyName name = new AssemblyName();
                    name.CodeBase = file;
                    foreach (Type t in Assembly.Load(name).GetExportedTypes())
                    {
                        if (typeof(ITag).IsAssignableFrom(t))
                        {
                            CreateEntry <Tag>(tags, t);
                        }
                        if (typeof(ISimpleFilter).IsAssignableFrom(t))
                        {
                            CreateEntry <Filter>(filters, t);
                        }
                    }
                }
            }

            TemplateManagerProvider parser = new TemplateManagerProvider();

            return(parser
                   .WithTags(tags)
                   .WithFilters(filters)
                   .WithSetting(NDjango.Constants.EXCEPTION_IF_ERROR, false));
        }
Пример #21
0
 //Register Tag by Name
 private void RegisterITag(string name, ITag tag)
 {
     provider = provider.WithTag(name, tag);
 }
Пример #22
0
 static DjangoEngine()
 {
     provider = new TemplateManagerProvider().WithLoader(new IntegrationTemplateLoader());
     manager  = provider.GetNewManager();
 }
Пример #23
0
        private string RenderTemplate(string templateName, Dictionary<string, object> context)
        {
            var provider = new TemplateManagerProvider().WithLoader(new FileSystemTemplateLoader());
            provider = provider.WithFilters(NDjango.FiltersCS.FilterManager.GetFilters()).WithFilter("highlight", new HighlightFilter());
            var manager = provider.GetNewManager();

            System.IO.TextReader reader = manager.RenderTemplate(templateName, context);
            return reader.ReadToEnd();
        }
Пример #24
0
 //Register Tag by Name
 private void RegisterITag(string name, ITag tag)
 {
     provider = provider.WithTag(name, tag);
 }
Пример #25
0
        public void SetupStandartdValues()
        {
            provider = new TemplateManagerProvider()
                .WithLoader(new Loader())
                .WithTag("non-nested", new TestDescriptor.SimpleNonNestedTag())
                .WithTag("nested", new TestDescriptor.SimpleNestedTag())
                .WithTag("url", new TestUrlTag()).WithSetting(Constants.EXCEPTION_IF_ERROR, false);

            this.standardTags = ((IDictionary<string, ITag>)((ITemplateManagerProvider)provider).Tags).Keys;
            this.standardFilters = ((IDictionary<string, ISimpleFilter>)((ITemplateManagerProvider)provider).Filters).Keys;
        }
Пример #26
0
 //Register Filter by Name
 private void RegisterISimpleFilter(string name, ISimpleFilter filter)
 {
     provider = provider.WithFilter(name, filter);
 }
Пример #27
0
 //Register Filter by Name
 private void RegisterISimpleFilter(string name, ISimpleFilter filter)
 {
     provider = provider.WithFilter(name, filter);
 }
Пример #28
0
 private ITemplateManager InitializeParser()
 {
     TemplateLoader template_loader  = new TemplateLoader(projectDir);
     List<Tag> tags = new List<Tag>();
     List<Filter> filters = new List<Filter>();
     TemplateManagerProvider provider = new TemplateManagerProvider();
     return provider
             .WithTags(tags)
             .WithFilters(filters)
             .WithSetting(NDjango.Constants.EXCEPTION_IF_ERROR, false)
             .WithLoader(template_loader)
             .GetNewManager();
 }
Пример #29
0
        //Validate Settings by Type of provider and current Name
        private void ValidateSettings(string name, string value)
        {
            object result = null;
            bool r1;

            bool isNewSetting = true;
            foreach (var item in ((ITemplateManagerProvider)provider).Settings)
            {
                if (name.Contains(item.Key))
                {
                    Type setType = item.Value.GetType();
                    if (setType == typeof(Boolean))
                    {
                        if (Boolean.TryParse(value, out r1))
                        {
                            result = r1;
                        }

                    }
                    else if (setType == typeof(int))
                    {
                        int r2;
                        if (int.TryParse(value, out r2))
                        {
                            result = r2;
                        }
                    }
                    else if (setType == typeof(string))
                    {
                        result = value.ToString();

                        provider = provider.WithSetting(name, result);
                        isNewSetting = false;
                    }
                }
            }
            if (isNewSetting)
            {
                provider = provider.WithSetting(name, result);
            }
        }