public void DefaultValues() { var s = new XamlXmlWriterSettings(); Assert.IsFalse(s.AssumeValidInput, "#1"); Assert.IsFalse(s.CloseOutput, "#2"); }
public void EscapeCurlies() { var generated = new StringBuilder(); var xmlSettings = new XmlWriterSettings { Indent = true, OmitXmlDeclaration = true }; var xamlSettings = new XamlXmlWriterSettings { CloseOutput = true }; var xsc = new XamlSchemaContext(); using (System.Xaml.XamlXmlWriter writer = new System.Xaml.XamlXmlWriter(XmlWriter.Create(new StringWriter(generated), xmlSettings), xsc, xamlSettings)) { var developerType = xsc.GetXamlType(typeof(Developer)); var developerExtensionType = xsc.GetXamlType(typeof(DeveloperExtension)); writer.WriteNamespace(new NamespaceDeclaration(XamlLanguage.Xaml2006Namespace, "x")); writer.WriteStartObject(developerType); writer.WriteStartMember(developerType.GetMember("Name")); writer.WriteValue("{Andrew}"); writer.WriteEndMember(); } string target = @"<Developer Name=""{}{Andrew}"" xmlns=""clr-namespace:Test.Elements;assembly=XamlTestClasses"" />"; Assert.AreEqual(target, generated.ToString()); }
public StringBuilder GetXamlDefinition(ActivityBuilder builder) { var text = new StringBuilder(); try { if (builder != null) { var sb = new StringBuilder(); using (var sw = new StringWriter(sb)) { var xamlXmlWriterSettings = new XamlXmlWriterSettings { AssumeValidInput = true }; var xamlSchemaContext = new XamlSchemaContext(); var xw = ActivityXamlServices.CreateBuilderWriter(new XamlXmlWriter(sw, xamlSchemaContext, xamlXmlWriterSettings)); XamlServices.Save(xw, builder); text = sb.Replace("<?xml version=\"1.0\" encoding=\"utf-16\"?>", ""); } } text = SanitizeXaml(text); } catch (Exception e) { Dev2Logger.Error("Error loading XAML: ", e, GlobalConstants.WarewolfError); } return(text); }
public XamlXmlWriter(XmlWriter xmlWriter, XamlSchemaContext schemaContext, XamlXmlWriterSettings settings) { this.w = xmlWriter ?? throw new ArgumentNullException(nameof(xmlWriter)); this.sctx = schemaContext ?? throw new ArgumentNullException(nameof(schemaContext)); this.settings = settings ?? new XamlXmlWriterSettings(); var manager = new XamlWriterStateManager <XamlXmlWriterException, InvalidOperationException> (true); intl = new XamlXmlWriterInternal(xmlWriter, sctx, manager); }
public void AttachedPropertyTest() { var generated = new StringBuilder(); var xmlSettings = new XmlWriterSettings { Indent = true, OmitXmlDeclaration = true }; var xamlSettings = new XamlXmlWriterSettings { CloseOutput = true }; var xsc = new XamlSchemaContext(); using (System.Xaml.XamlXmlWriter writer = new System.Xaml.XamlXmlWriter(XmlWriter.Create(new StringWriter(generated), xmlSettings), xsc, xamlSettings)) { XamlType mc = xsc.GetXamlType(typeof(MediumContainer)); XamlMember thing = mc.GetAttachableMember("Thing"); var developerType = xsc.GetXamlType(typeof(Developer)); var developerExtensionType = xsc.GetXamlType(typeof(DeveloperExtension)); string ns = "clr-namespace:Test.Elements.AnotherNamespace;assembly=XamlTestClasses"; writer.WriteNamespace(new NamespaceDeclaration(ns, "PreferredPrefix")); writer.WriteStartObject(developerType); writer.WriteStartMember(developerType.GetMember("Name")); writer.WriteValue("Andrew"); writer.WriteEndMember(); writer.WriteStartMember(developerType.GetMember("Friend")); writer.WriteStartObject(developerExtensionType); writer.WriteStartMember(developerExtensionType.GetMember("Name")); writer.WriteValue(""); writer.WriteEndMember(); writer.WriteEndObject(); writer.WriteEndMember(); writer.WriteStartMember(thing); writer.WriteValue("attached"); writer.WriteEndMember(); writer.WriteEndObject(); } var target = @"<Developer Name=""Andrew"" Friend=""{Developer Name=""}"" PreferredPrefix:MediumContainer.Thing=""attached"" xmlns=""clr-namespace:Test.Elements;assembly=XamlTestClasses"" xmlns:PreferredPrefix=""clr-namespace:Test.Elements.AnotherNamespace;assembly=XamlTestClasses"" />"; Assert.AreEqual(target, generated.ToString()); }
public void EmptyStringTest() { var generated = new StringBuilder(); var xmlSettings = new XmlWriterSettings { Indent = true, OmitXmlDeclaration = true }; var xamlSettings = new XamlXmlWriterSettings { CloseOutput = true }; var xsc = new XamlSchemaContext(); using (System.Xaml.XamlXmlWriter writer = new System.Xaml.XamlXmlWriter(XmlWriter.Create(new StringWriter(generated), xmlSettings), xsc, xamlSettings)) { var developerType = xsc.GetXamlType(typeof(Developer)); var developerExtensionType = xsc.GetXamlType(typeof(DeveloperExtension)); writer.WriteNamespace(new NamespaceDeclaration(XamlLanguage.Xaml2006Namespace, "x")); writer.WriteStartObject(developerType); writer.WriteStartMember(developerType.GetMember("Name")); writer.WriteValue("Andrew"); writer.WriteEndMember(); writer.WriteStartMember(developerType.GetMember("Friend")); writer.WriteStartObject(developerExtensionType); writer.WriteStartMember(developerExtensionType.GetMember("Name")); writer.WriteValue(""); writer.WriteEndMember(); writer.WriteEndObject(); writer.WriteEndMember(); writer.WriteEndObject(); } var target = @"<Developer Name=""Andrew"" Friend=""{Developer Name=""}"" xmlns=""clr-namespace:Test.Elements;assembly=XamlTestClasses"" xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"" />"; Assert.AreEqual(target, generated.ToString()); }
public XamlXmlWriter(TextWriter textWriter, XamlSchemaContext schemaContext, XamlXmlWriterSettings settings) : this(XmlWriter.Create(textWriter), schemaContext, null) { }
public XamlXmlWriter(Stream stream, XamlSchemaContext schemaContext, XamlXmlWriterSettings settings) : this(XmlWriter.Create(stream), schemaContext, null) { }
public void DefaultValues () { var s = new XamlXmlWriterSettings (); Assert.IsFalse (s.AssumeValidInput, "#1"); Assert.IsFalse (s.CloseOutput, "#2"); }
bool ProcessMarkupItem(ITaskItem markupItem, CodeDomProvider codeDomProvider) { string markupItemFileName = markupItem.ItemSpec; XamlBuildTaskServices.PopulateModifiers(codeDomProvider); XamlNodeList xamlNodes = ReadXamlNodes(markupItemFileName); if (xamlNodes == null) { return(false); } ClassData classData = ReadClassData(xamlNodes, markupItemFileName); string outputFileName = GetFileName(markupItemFileName); string codeFileName = Path.ChangeExtension(outputFileName, GetGeneratedSourceExtension(codeDomProvider)); string markupFileName = Path.ChangeExtension(outputFileName, GeneratedSourceExtension + XamlBuildTaskServices.XamlExtension); classData.EmbeddedResourceFileName = Path.GetFileName(markupFileName); classData.HelperClassFullName = this.HelperClassFullName; // Check if code file with partial class exists classData.SourceFileExists = UserProvidedFileExists(markupItemFileName, codeDomProvider); // Store the full type name as metadata on the markup item string rootNamespacePrefix = null; string namespacePrefix = null; string typeFullName = null; if (this.Language.Equals("VB") && !String.IsNullOrWhiteSpace(classData.RootNamespace)) { rootNamespacePrefix = classData.RootNamespace + "."; } if (!String.IsNullOrWhiteSpace(classData.Namespace)) { namespacePrefix = classData.Namespace + "."; } if (rootNamespacePrefix != null) { if (namespacePrefix != null) { typeFullName = rootNamespacePrefix + namespacePrefix + classData.Name; } else { typeFullName = rootNamespacePrefix + classData.Name; } } else { if (namespacePrefix != null) { typeFullName = namespacePrefix + classData.Name; } else { typeFullName = classData.Name; } } markupItem.SetMetadata("typeName", typeFullName); // Execute extensions here to give them a chance to mutate the ClassData before we generate code. if (this.SupportExtensions) { if (!ExecuteExtensions(classData, markupItem)) { return(false); } } // Generate code file CodeCompileUnit codeUnit = new ClassGenerator(this.BuildLogger, codeDomProvider, this.Language).Generate(classData); WriteCode(codeDomProvider, codeUnit, codeFileName); this.GeneratedCodeFiles.Add(codeFileName); // Generate resource file if (!string.IsNullOrEmpty(this.AssemblyName)) { // Generate xaml "implementation" file XmlWriterSettings xmlSettings = new XmlWriterSettings { Indent = true, IndentChars = " ", CloseOutput = true }; using (XmlWriter xmlWriter = XmlWriter.Create(File.Open(markupFileName, FileMode.Create), xmlSettings)) { XamlXmlWriterSettings xamlSettings = new XamlXmlWriterSettings() { CloseOutput = true }; // Process EmbeddedResourceXaml to remove xml:space="preserve" // due to a bug in XamlXmlWriter. XamlXmlWriter throws // if there are duplicate xml:space attributes. // It is ok to remove the xml:space attribute // as the XamlXmlWriter would add it in the next step // if needed. RemoveXamlSpaceAttribute(classData); using (XamlReader reader = classData.EmbeddedResourceXaml.GetReader()) { using (XamlXmlWriter xamlWriter = new XamlXmlWriter(xmlWriter, reader.SchemaContext, xamlSettings)) { XamlServices.Transform(reader, xamlWriter); } } } this.GeneratedResources.Add(markupFileName); } if (classData.RequiresCompilationPass2) { this.RequiresCompilationPass2 = true; } else { if (!this.SupportExtensions) { if (!ValidateXaml(xamlNodes, markupItemFileName)) { this.RequiresCompilationPass2 = true; } } else { // skip validation if we are doing in-proc compile // OR if we have pass 2 extensions hooked up // as we anyway need to run pass 2 in that case if (!this.IsInProcessXamlMarkupCompile && !this.MarkupCompilePass2ExtensionsPresent) { if (!ValidateXaml(xamlNodes, markupItemFileName)) { this.RequiresCompilationPass2 = true; } } } } return(true); }