/// <summary>
        /// 
        /// </summary>
        /// <param name="appHost"></param>
        public void Register(IAppHost appHost)
        {
            var inMemoryProvider = new RecursiveInMemoryVirtualPathProvider(appHost);
            // Create a "Views" directory for dumping all our discovered views in
            var viewsDir = new InMemoryVirtualDirectory(inMemoryProvider, inMemoryProvider.rootDirectory)
            {
                DirName = "Views",
                files = new List<InMemoryVirtualFile>(),
                dirs = new List<InMemoryVirtualDirectory>()
            };
            inMemoryProvider.rootDirectory.dirs.Add(viewsDir);

            foreach (var asm in _assemblies)
            {
                foreach (string resource in asm.GetManifestResourceNames())
                {
                        // Get just the file name. Internally, ServiceStack dumps all these in a giant "/Views" directory anyway, so let's just do that.
                        string path = string.Join(".", resource.Split('.').Reverse().Take(2).Reverse());
                        viewsDir.AddFile(path, new StreamReader(asm.GetManifestResourceStream(resource)).ReadToEnd());
                }
            }

            var razorPlugin = new RazorFormat
            {
                VirtualPathProvider = inMemoryProvider,
                EnableLiveReload = false
            };

            appHost.LoadPlugin(razorPlugin);
        }
 public void SetUp()
 {
     RazorFormat.Instance = null;
     RazorFormat = new RazorFormat
     {
         PageBaseType = typeof(CustomRazorBasePage<>),
         VirtualPathProvider = new InMemoryVirtualPathProvider(new BasicAppHost()),
     }.Init();
 }
        public void Simple_static_example()
        {
            RazorFormat.Instance = null;
            var razor = new RazorFormat {
                VirtualPathProvider = new InMemoryVirtualPathProvider(new BasicAppHost()),
                EnableLiveReload = false,
            }.Init();

            var page = razor.CreatePage("Hello @Model.Name! Welcome to Razor!");
            var html = razor.RenderToHtml(page, new { Name = "World" });
            html.Print();

            Assert.That(html, Is.EqualTo("Hello World! Welcome to Razor!"));
        }
        public void OnBeforeEachTest()
        {
            RazorFormat.Instance = null;

            var fileSystem = new InMemoryVirtualPathProvider(new BasicAppHost());
            fileSystem.AddFile("/views/TheLayout.cshtml", LayoutHtml);
            InitializeFileSystem(fileSystem);

            RazorFormat = new RazorFormat
            {
                VirtualPathProvider = fileSystem,
                PageBaseType = typeof (CustomRazorBasePage<>),
                EnableLiveReload = false,
                PrecompilePages = PrecompileEnabled,
                WaitForPrecompilationOnStartup = WaitForPrecompileEnabled,
            }.Init();
        }
Exemple #5
0
        /// <summary>Initialises this object.</summary>
        ///
        /// <returns>A RazorFormat.</returns>
        public virtual RazorFormat Init()
        {
            if (Instance != null)
            {
                Log.Warn("RazorFormat plugin should only be initialized once");

                if (ViewManager != null && PageResolver != null)
                    return this;

                Log.Warn("Incomplete initialization, RazorFormat.Instance set but ViewManager/PageResolver is null");
            }

            Instance = this;

            this.ViewManager = CreateViewManager();
            this.PageResolver = CreatePageResolver();

            this.ViewManager.Init();

            if (EnableLiveReload.GetValueOrDefault())
            {
                this.LiveReload = LiveReloadFactory(this.ViewManager);
                this.LiveReload.StartWatching(this.ScanRootPath);
            }
            return this;
        }