Beispiel #1
0
        public void ShouldSaveRazorDocument()
        {
            const string expectedModel = "{Name:'RazorPad'}";
            var          document      = new RazorDocument
            {
                ModelProvider = new JsonModelProvider {
                    Json = expectedModel
                },
                Template = "<h1>Test!</h1>",
            };

            document.Metadata.Add("Title", "Test Document");

            XDocument savedXml;

            using (var stream = new MemoryStream())
            {
                _documentSource.Save(document, stream);
                stream.Seek(0, SeekOrigin.Begin);
                savedXml = XDocument.Load(stream);
            }

            var modelElement = savedXml.Root.Element("Model");

            Assert.AreEqual("Json", modelElement.Attribute("Provider").Value);
            Assert.AreEqual(expectedModel, modelElement.Value);
        }
        public bool CanSave(RazorDocument document, Stream stream)
        {
            if (document == null || stream == null || !stream.CanRead)
                return false;

            return CanSave(document, document.Filename);
        }
Beispiel #3
0
 /// <summary>
 /// Auto-Saves the document
 /// </summary>
 /// <param name="document">The document to save</param>
 public void Save(RazorDocument document)
 {
     if (_source.CanSave(document, AutoSavePath))
     {
         _source.Save(document, AutoSavePath);
     }
 }
Beispiel #4
0
        public RazorDocument Load(Stream stream)
        {
            var template = new StreamReader(stream, Encoding).ReadToEnd();
            var document = new RazorDocument(template);

            return(document);
        }
Beispiel #5
0
        public void ShouldSaveAndLoadRazorDocument()
        {
            const string expectedModel    = "{Name:'RazorPad'}";
            var          originalDocument = new RazorDocument
            {
                ModelProvider = new JsonModelProvider {
                    Json = expectedModel
                },
                Template = "<h1>Test!</h1>",
            };

            originalDocument.Metadata.Add("Title", "Test Document");

            RazorDocument rehydratedDocument;

            using (var stream = new MemoryStream())
            {
                _documentSource.Save(originalDocument, stream);
                stream.Seek(0, SeekOrigin.Begin);
                rehydratedDocument = _documentSource.Load(stream);
            }

            Assert.AreEqual(originalDocument.Metadata["Title"], rehydratedDocument.Metadata["Title"]);
            Assert.AreEqual(originalDocument.Template, rehydratedDocument.Template);
            Assert.AreEqual(((JsonModelProvider)originalDocument.ModelProvider).Json,
                            ((JsonModelProvider)rehydratedDocument.ModelProvider).Json);
        }
        public bool CanSave(RazorDocument document, string uri)
        {
            if (document == null)
                return false;

            return CanLoad(uri);
        }
Beispiel #7
0
        public bool CanSave(RazorDocument document, string uri)
        {
            if (document == null)
            {
                return(false);
            }

            return(CanLoad(uri));
        }
Beispiel #8
0
        public bool CanSave(RazorDocument document, Stream stream)
        {
            if (document == null || stream == null || !stream.CanRead)
            {
                return(false);
            }

            return(CanSave(document, document.Filename));
        }
Beispiel #9
0
        public void AddNewTemplateEditor(bool current = true)
        {
            var modelProvider = ModelProviders.DefaultFactory.Create();

            var document = new RazorDocument {
                ModelProvider = modelProvider
            };

            AddNewTemplateEditor(document, current);
        }
Beispiel #10
0
        /// <summary>
        /// Loads the last auto-saved document
        /// </summary>
        /// <returns>The last auto-saved document; null if there is none</returns>
        public RazorDocument Load()
        {
            RazorDocument document = null;

            if (_source.CanLoad(AutoSavePath))
            {
                document = _source.Load(AutoSavePath);
                Clear();
            }

            return(document);
        }
Beispiel #11
0
        private void CreateDemoTemplate()
        {
            var demoDocument = new RazorDocument
            {
                Template      = "<h1>Welcome to @Model.Name!</h1>\r\n<div>Start typing some text to get started.</div>\r\n<div>Or, try adding a property called 'Message' and see what happens...</div>\r\n\r\n<h3>@Model.Message</h3>",
                ModelProvider = new JsonModelProvider {
                    Json = "{\r\n\tName: 'RazorPad'\r\n}"
                }
            };

            ViewModel.AddNewTemplateEditor(demoDocument);
        }
Beispiel #12
0
        public void Save(RazorDocument document, Stream stream)
        {
            var source = _documentSources.FirstOrDefault(x => x.CanSave(document, stream));

            source = source ?? _documentSources.LastOrDefault();

            if (source == null)
            {
                throw new RazorDocumentSourceNotFoundException();
            }

            source.Save(document, stream);
        }
Beispiel #13
0
        public void Save(RazorDocument document, Stream stream)
        {
            var writer = new XmlTextWriter(stream, Encoding)
            {
                Formatting = Formatting.Indented
            };

            writer.WriteStartElement("RazorDocument");

            writer.WriteStartElement("Metadata");
            foreach (var datum in document.Metadata)
            {
                writer.WriteStartElement(datum.Key);
                writer.WriteString(datum.Value);
                writer.WriteEndElement();
            }
            writer.WriteEndElement();

            writer.WriteStartElement("References");
            foreach (var reference in document.References ?? Enumerable.Empty <string>())
            {
                writer.WriteElementString("Reference", reference);
            }
            writer.WriteEndElement();

            var providerName    = (string)new ModelProviderName(document.ModelProvider);
            var serializedModel = document.ModelProvider.Serialize();

            writer.WriteStartElement("Model");
            if (!string.IsNullOrWhiteSpace(providerName))
            {
                writer.WriteAttributeString("Provider", providerName);
            }
            writer.WriteCData(serializedModel);
            writer.WriteEndElement();

            writer.WriteStartElement("Template");
            if (!string.IsNullOrWhiteSpace(document.TemplateBaseClassName))
            {
                writer.WriteAttributeString("BaseClass", document.TemplateBaseClassName);
            }
            writer.WriteCData(document.Template);
            writer.WriteEndElement();


            writer.WriteEndElement();

            writer.Flush();
        }
        public RazorTemplateViewModel(RazorDocument document = null, ModelBuilders modelBuilderFactory = null, ModelProviders modelProviders = null)
        {
            _document = document ?? new RazorDocument();
            _modelBuilderFactory = modelBuilderFactory;
            _modelProviderFactory = modelProviders;
            _savedModels = new Dictionary<Type, string>();

            var modelProviderNames = _modelProviderFactory.Providers.Select(x => (string)new ModelProviderFactoryName(x.Value));
            AvailableModelProviders = new ObservableCollection<string>(modelProviderNames);
            _selectedModelProvider = new ModelProviderName(_document.ModelProvider);

            Errors = new ObservableCollection<RazorPadError>();
            Messages = new ObservableTextWriter();
            TemplateCompiler = new TemplateCompiler();

            AttachToModelProviderEvents(_document.ModelProvider);
        }
        public RazorTemplateViewModel(RazorDocument document = null, ModelBuilders modelBuilderFactory = null, ModelProviders modelProviders = null)
        {
            _document             = document ?? new RazorDocument();
            _modelBuilderFactory  = modelBuilderFactory;
            _modelProviderFactory = modelProviders;
            _savedModels          = new Dictionary <Type, string>();

            var modelProviderNames = _modelProviderFactory.Providers.Select(x => (string)new ModelProviderFactoryName(x.Value));

            AvailableModelProviders = new ObservableCollection <string>(modelProviderNames);
            _selectedModelProvider  = new ModelProviderName(_document.ModelProvider);

            Errors           = new ObservableCollection <RazorPadError>();
            Messages         = new ObservableTextWriter();
            TemplateCompiler = new TemplateCompiler();

            AttachToModelProviderEvents(_document.ModelProvider);
        }
Beispiel #16
0
        public void Save(RazorDocument document, string uri)
        {
            var destination = uri ?? document.Filename;

            if (string.IsNullOrWhiteSpace(destination))
            {
                throw new ApplicationException("No filename specified!");
            }

            document.DocumentKind = RazorDocument.GetDocumentKind(uri);

            using (var stream = File.Open(destination, FileMode.Create, FileAccess.Write))
            {
                Save(document, stream);

                try { stream.Flush(); }
                catch (Exception ex)
                {
                    Trace.WriteLine("Error flushing file stream: " + ex);
                }
            }
        }
        public void ShouldSaveAndLoadRazorDocument()
        {
            const string expectedModel = "{Name:'RazorPad'}";
            var originalDocument = new RazorDocument
                               {
                                   ModelProvider = new JsonModelProvider { Json = expectedModel },
                                   Template = "<h1>Test!</h1>",
                               };
            originalDocument.Metadata.Add("Title", "Test Document");

            RazorDocument rehydratedDocument;
            using (var stream = new MemoryStream())
            {
                _documentSource.Save(originalDocument, stream);
                stream.Seek(0, SeekOrigin.Begin);
                rehydratedDocument = _documentSource.Load(stream);
            }

            Assert.AreEqual(originalDocument.Metadata["Title"], rehydratedDocument.Metadata["Title"]);
            Assert.AreEqual(originalDocument.Template, rehydratedDocument.Template);
            Assert.AreEqual(((JsonModelProvider)originalDocument.ModelProvider).Json,
                            ((JsonModelProvider)rehydratedDocument.ModelProvider).Json);
        }
Beispiel #18
0
 public void AddNewTemplateEditor(RazorDocument document, bool current = true)
 {
     AddNewTemplateEditor(new RazorTemplateViewModel(document, _modelBuilders, _modelProviders), current);
 }
Beispiel #19
0
 /// <summary>
 /// Auto-Saves the document
 /// </summary>
 /// <param name="document">The document to save</param>
 public void Save(RazorDocument document)
 {
     if(_source.CanSave(document, AutoSavePath))
         _source.Save(document, AutoSavePath);
 }
        public void Save(RazorDocument document, string uri)
        {
            var destination = uri ?? document.Filename;

            if (string.IsNullOrWhiteSpace(destination))
                throw new ApplicationException("No filename specified!");

            document.DocumentKind = RazorDocument.GetDocumentKind(uri);

            using (var stream = File.Open(destination, FileMode.Create, FileAccess.Write))
            {
                Save(document, stream);

                try { stream.Flush(); }
                catch (Exception ex)
                {
                    Trace.WriteLine("Error flushing file stream: " + ex);
                }
            }
        }
Beispiel #21
0
 public static GeneratorResults GenerateCode(this ITemplateCompiler compiler, RazorDocument document, TextWriter codeWriter = null, RazorEngineHost host = null)
 {
     return(compiler.GenerateCode(document.Template, codeWriter, host));
 }
        public void ShouldSaveRazorDocument()
        {
            const string expectedModel = "{Name:'RazorPad'}";
            var document = new RazorDocument
                               {
                                   ModelProvider = new JsonModelProvider { Json = expectedModel },
                                   Template = "<h1>Test!</h1>",
                               };
            document.Metadata.Add("Title", "Test Document");

            XDocument savedXml;
            using (var stream = new MemoryStream())
            {
                _documentSource.Save(document, stream);
                stream.Seek(0, SeekOrigin.Begin);
                savedXml = XDocument.Load(stream);
            }

            var modelElement = savedXml.Root.Element("Model");
            Assert.AreEqual("Json", modelElement.Attribute("Provider").Value);
            Assert.AreEqual(expectedModel, modelElement.Value);
        }
Beispiel #23
0
 public void AddNewTemplateEditor(RazorDocument document, bool current = true)
 {
     AddNewTemplateEditor(new RazorTemplateViewModel(document, _modelBuilders, _modelProviders), current);
 }
Beispiel #24
0
 public static GeneratorResults GenerateCode(this ITemplateCompiler compiler, RazorDocument document, TextWriter codeWriter = null, RazorEngineHost host = null)
 {
     return compiler.GenerateCode(document.Template, codeWriter, host);
 }
Beispiel #25
0
 public bool CanSave(RazorDocument document, string uri)
 {
     return(document.DocumentKind == RazorDocumentKind.TemplateOnly ||
            CanLoad(uri));
 }
        public void Save(RazorDocument document, string uri)
        {
            var source = _documentSources.FirstOrDefault(x => x.CanSave(document, uri));
            source = source ?? _documentSources.LastOrDefault();

            if (source == null)
                throw new RazorDocumentSourceNotFoundException();

            source.Save(document, uri);
        }
 public bool CanSave(RazorDocument document, Stream stream)
 {
     return _documentSources.Any(x => x.CanSave(document, stream));
 }
Beispiel #28
0
 public bool CanSave(RazorDocument document, string uri)
 {
     return(_documentSources.Any(x => x.CanSave(document, uri)));
 }
Beispiel #29
0
 public bool CanSave(RazorDocument document, Stream stream)
 {
     return(_documentSources.Any(x => x.CanSave(document, stream)));
 }
Beispiel #30
0
 public static string Execute(this ITemplateExecutor executor, RazorDocument document)
 {
     Contract.Requires(document != null);
     return(executor.Execute(document.Template, document.GetModel(), document.References));
 }
Beispiel #31
0
        public void AddNewTemplateEditor(bool current = true)
        {
            var modelProvider = ModelProviders.DefaultFactory.Create();

            var document = new RazorDocument { ModelProvider = modelProvider };

            AddNewTemplateEditor(document, current);
        }
Beispiel #32
0
 public void Save(RazorDocument document, Stream stream)
 {
     using (var writer = new StreamWriter(stream))
         writer.Write(document.Template);
 }
Beispiel #33
0
 public static string Execute(this ITemplateExecutor executor, RazorDocument document)
 {
     Contract.Requires(document != null);
     return executor.Execute(document.Template, document.GetModel(), document.References);
 }
        public void Save(RazorDocument document, Stream stream)
        {
            var writer = new XmlTextWriter(stream, Encoding) { Formatting = Formatting.Indented };

            writer.WriteStartElement("RazorDocument");

            writer.WriteStartElement("Metadata");
            foreach (var datum in document.Metadata)
            {
                writer.WriteStartElement(datum.Key);
                writer.WriteString(datum.Value);
                writer.WriteEndElement();
            }
            writer.WriteEndElement();

            writer.WriteStartElement("References");
            foreach (var reference in document.References ?? Enumerable.Empty<string>())
            {
                writer.WriteElementString("Reference", reference);
            }
            writer.WriteEndElement();

            var providerName = (string)new ModelProviderName(document.ModelProvider);
            var serializedModel = document.ModelProvider.Serialize();
            writer.WriteStartElement("Model");
            if (!string.IsNullOrWhiteSpace(providerName))
                writer.WriteAttributeString("Provider", providerName);
            writer.WriteCData(serializedModel);
            writer.WriteEndElement();

            writer.WriteStartElement("Template");
            if (!string.IsNullOrWhiteSpace(document.TemplateBaseClassName))
                writer.WriteAttributeString("BaseClass", document.TemplateBaseClassName);
            writer.WriteCData(document.Template);
            writer.WriteEndElement();

            writer.WriteEndElement();

            writer.Flush();
        }
 public bool CanSave(RazorDocument document, string uri)
 {
     return _documentSources.Any(x => x.CanSave(document, uri));
 }
Beispiel #36
0
        private void CreateDemoTemplate()
        {
            var demoDocument = new RazorDocument
            {
                Template = "<h1>Welcome to @Model.Name!</h1>\r\n<div>Start typing some text to get started.</div>\r\n<div>Or, try adding a property called 'Message' and see what happens...</div>\r\n\r\n<h3>@Model.Message</h3>",
                ModelProvider = new JsonModelProvider { Json = "{\r\n\tName: 'RazorPad'\r\n}" }
            };

            ViewModel.AddNewTemplateEditor(demoDocument);
        }