Exemple #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();
            });
        }
Exemple #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();
            };
        }
        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);
        }
Exemple #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");
            }
        }
Exemple #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();
 }
Exemple #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());
        }
Exemple #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;
        }
Exemple #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();
 }
        /// <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);
        }
        /// <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);
        }
Exemple #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();
 }
Exemple #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();
 }
        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);
            }
        }
Exemple #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));
        }
Exemple #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();
            };
        }
Exemple #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();
            });
        }
        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();
        }
        /// <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();
            }));
        }
Exemple #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);
            }
        }
Exemple #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));
        }
 //Register Tag by Name
 private void RegisterITag(string name, ITag tag)
 {
     provider = provider.WithTag(name, tag);
 }
 static DjangoEngine()
 {
     provider = new TemplateManagerProvider().WithLoader(new IntegrationTemplateLoader());
     manager  = provider.GetNewManager();
 }
Exemple #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();
        }
Exemple #24
0
 //Register Tag by Name
 private void RegisterITag(string name, ITag tag)
 {
     provider = provider.WithTag(name, tag);
 }
Exemple #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;
        }
Exemple #26
0
 //Register Filter by Name
 private void RegisterISimpleFilter(string name, ISimpleFilter filter)
 {
     provider = provider.WithFilter(name, filter);
 }
 //Register Filter by Name
 private void RegisterISimpleFilter(string name, ISimpleFilter filter)
 {
     provider = provider.WithFilter(name, filter);
 }
Exemple #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();
 }
        //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);
            }
        }