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); }
/// <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 RazorDocument Load(Stream stream) { var template = new StreamReader(stream, Encoding).ReadToEnd(); var document = new RazorDocument(template); return(document); }
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); }
public bool CanSave(RazorDocument document, string uri) { if (document == null) { return(false); } return(CanLoad(uri)); }
public bool CanSave(RazorDocument document, Stream stream) { if (document == null || stream == null || !stream.CanRead) { return(false); } return(CanSave(document, document.Filename)); }
public void AddNewTemplateEditor(bool current = true) { var modelProvider = ModelProviders.DefaultFactory.Create(); var document = new RazorDocument { ModelProvider = modelProvider }; AddNewTemplateEditor(document, current); }
/// <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); }
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); }
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); }
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); }
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); }
public void AddNewTemplateEditor(RazorDocument document, bool current = true) { AddNewTemplateEditor(new RazorTemplateViewModel(document, _modelBuilders, _modelProviders), current); }
/// <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); } } }
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); }
public void AddNewTemplateEditor(RazorDocument document, bool current = true) { AddNewTemplateEditor(new RazorTemplateViewModel(document, _modelBuilders, _modelProviders), current); }
public static GeneratorResults GenerateCode(this ITemplateCompiler compiler, RazorDocument document, TextWriter codeWriter = null, RazorEngineHost host = null) { return compiler.GenerateCode(document.Template, codeWriter, host); }
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)); }
public bool CanSave(RazorDocument document, string uri) { return(_documentSources.Any(x => x.CanSave(document, uri))); }
public bool CanSave(RazorDocument document, Stream stream) { return(_documentSources.Any(x => x.CanSave(document, stream))); }
public static string Execute(this ITemplateExecutor executor, RazorDocument document) { Contract.Requires(document != null); return(executor.Execute(document.Template, document.GetModel(), document.References)); }
public void AddNewTemplateEditor(bool current = true) { var modelProvider = ModelProviders.DefaultFactory.Create(); var document = new RazorDocument { ModelProvider = modelProvider }; AddNewTemplateEditor(document, current); }
public void Save(RazorDocument document, Stream stream) { using (var writer = new StreamWriter(stream)) writer.Write(document.Template); }
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)); }
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); }