private XslCompiledTransform GetCompiledTransform() { var resolver = new EmbeddedResourceResolver(); var transform = new XslCompiledTransform(); using (var reader = XmlReader.Create( Assembly.GetExecutingAssembly().GetManifestResourceStream( "WashNamespaces.xslt"))) { transform.Load( reader, XsltSettings.TrustedXslt, resolver ); } return(transform); }
private CSharpProject(string filename) { var resolver = new EmbeddedResourceResolver(); var transform = new XslCompiledTransform(); using (var reader = XmlReader.Create( Assembly.GetExecutingAssembly().GetManifestResourceStream( "LineariseProject.xslt"))) { transform.Load( reader, XsltSettings.TrustedXslt, resolver ); } XDocument result; using (var memory = new MemoryStream()) { using (var reader = XmlReader.Create(filename)) { using (var writer = XmlWriter.Create(memory)) { transform.Transform(reader, writer); } } memory.Seek(0, SeekOrigin.Begin); using (var reader = XmlReader.Create(memory)) { result = XDocument.Load(reader); } } // Load the data. this.References = (from node in result.Descendants() where node.Name.LocalName == "Reference" select node.Value).ToList(); this.Elements = (from node in result.Descendants() where node.Name.LocalName == "Included" select node.Elements().First().ToXmlElement()).ToList(); }
private CSharpProject(string filename) { var resolver = new EmbeddedResourceResolver(); var transform = new XslCompiledTransform(); using (var reader = XmlReader.Create( Assembly.GetExecutingAssembly().GetManifestResourceStream( "Protobuild.ProjectReader.LineariseProject.xslt"))) { transform.Load( reader, XsltSettings.TrustedXslt, resolver ); } XDocument result; using (var memory = new MemoryStream()) { using (var reader = XmlReader.Create(filename)) { using (var writer = XmlWriter.Create(memory)) { transform.Transform(reader, writer); } } memory.Seek(0, SeekOrigin.Begin); using (var reader = XmlReader.Create(memory)) { result = XDocument.Load(reader); } } // Load the data. this.References = (from node in result.Descendants() where node.Name.LocalName == "Reference" select node.Value).ToList(); this.Elements = (from node in result.Descendants() where node.Name.LocalName == "Included" select node.Elements().First().ToXmlElement()).ToList(); }
public XslCompiledTransform LoadXSLT(ResourceType resourceType, Language language, string platform) { var currentDir = m_WorkingDirectoryProvider.GetPath(); if (!m_CachedTransforms.ContainsKey(currentDir)) { m_CachedTransforms[currentDir] = new Dictionary <int, XslCompiledTransform>(); } var cache = m_CachedTransforms[currentDir]; int hash; unchecked { hash = 17 * resourceType.GetHashCode() * 31 + language.GetHashCode() * 31 + platform.GetHashCode() * 31; } if (cache.ContainsKey(hash)) { return(cache[hash]); } var source = this.LoadOverriddableResource(resourceType, language, platform); var reader2 = new StreamReader(source); var readerInspect = reader2.ReadToEnd(); source.Seek(0, SeekOrigin.Begin); var resolver = new EmbeddedResourceResolver(); var result = new XslCompiledTransform(); using (var reader = XmlReader.Create(source)) { try { result.Load( reader, XsltSettings.TrustedXslt, resolver ); } catch (XsltException ex) { var lines = readerInspect.Split(new[] { "\r\n", "\n" }, StringSplitOptions.None); var line = ex.LineNumber; var minLine = Math.Max(line - 10, 0); var maxLine = Math.Min(line + 10, lines.Length - 1); var selectedLines = new List <string>(); for (var l = minLine; l <= maxLine; l++) { if (l == line) { selectedLines.Add(">> " + lines[l]); } else { selectedLines.Add(" " + lines[l]); } } var context = string.Join(Environment.NewLine, selectedLines); throw new XsltCompileException( ex.Message + "\r\n" + context, ex); } } cache[hash] = result; return(result); }
private XslCompiledTransform GetCompiledTransform() { var resolver = new EmbeddedResourceResolver(); var transform = new XslCompiledTransform(); using (var reader = XmlReader.Create( Assembly.GetExecutingAssembly().GetManifestResourceStream( "WashNamespaces.xslt"))) { transform.Load( reader, XsltSettings.TrustedXslt, resolver ); } return transform; }
public XslCompiledTransform LoadXSLT(ResourceType resourceType, Language language) { var hash = resourceType.GetHashCode() + language.GetHashCode(); if (m_CachedTransforms.ContainsKey(hash)) { return(m_CachedTransforms[hash]); } string name = null; string fileSuffix = string.Empty; bool applyAdditionalTransforms = false; switch (resourceType) { case ResourceType.GenerateProject: name = "GenerateProject"; fileSuffix = "." + this.m_LanguageStringProvider.GetFileSuffix(language); applyAdditionalTransforms = true; break; case ResourceType.GenerateSolution: name = "GenerateSolution"; break; case ResourceType.SelectSolution: name = "SelectSolution"; break; default: throw new NotSupportedException(); } var onDiskNames = new List <string>(); onDiskNames.Add(name + fileSuffix + ".xslt"); if (resourceType == ResourceType.GenerateProject && language == Language.CSharp) { onDiskNames.Add(name + ".xslt"); } Stream source = null; foreach (var filename in onDiskNames) { var path = Path.Combine(this.m_WorkingDirectoryProvider.GetPath(), "Build", filename); if (File.Exists(path)) { source = File.Open(path, FileMode.Open); break; } } if (source == null) { var embeddedName = name + fileSuffix + ".xslt.lzma"; var embeddedStream = Assembly .GetExecutingAssembly() .GetManifestResourceStream(embeddedName); source = this.GetTransparentDecompressionStream(embeddedStream); } if (applyAdditionalTransforms) { var memory = new MemoryStream(); using (var stream = source) { using (var writer = new StringWriter()) { var additional = ""; var additionalPath = Path.Combine(this.m_WorkingDirectoryProvider.GetPath(), "Build", "AdditionalProjectTransforms.xslt"); if (File.Exists(additionalPath)) { using (var reader = new StreamReader(additionalPath)) { additional = reader.ReadToEnd(); } } using (var reader = new StreamReader(stream)) { var text = reader.ReadToEnd(); text = text.Replace("{ADDITIONAL_TRANSFORMS}", additional); writer.Write(text); writer.Flush(); } var resultBytes = Encoding.UTF8.GetBytes(writer.GetStringBuilder().ToString()); memory.Write(resultBytes, 0, resultBytes.Length); memory.Seek(0, SeekOrigin.Begin); } } source = memory; } var resolver = new EmbeddedResourceResolver(); var result = new XslCompiledTransform(); using (var reader = XmlReader.Create(source)) { result.Load( reader, XsltSettings.TrustedXslt, resolver ); } m_CachedTransforms[hash] = result; return(result); }
public XslCompiledTransform LoadXSLT(ResourceType resourceType, Language language) { string name = null; string fileSuffix = string.Empty; bool applyAdditionalTransforms = false; switch (resourceType) { case ResourceType.GenerateProject: name = "GenerateProject"; fileSuffix = "." + this.m_LanguageStringProvider.GetFileSuffix(language); applyAdditionalTransforms = true; break; case ResourceType.GenerateSolution: name = "GenerateSolution"; break; case ResourceType.SelectSolution: name = "SelectSolution"; break; default: throw new NotSupportedException(); } var onDiskNames = new List<string>(); onDiskNames.Add(name + fileSuffix + ".xslt"); if (resourceType == ResourceType.GenerateProject && language == Language.CSharp) { onDiskNames.Add(name + ".xslt"); } Stream source = null; foreach (var filename in onDiskNames) { var path = Path.Combine(this.m_WorkingDirectoryProvider.GetPath(), "Build", filename); if (File.Exists(path)) { source = File.Open(path, FileMode.Open); break; } } if (source == null) { var embeddedName = name + fileSuffix + ".xslt.lzma"; var embeddedStream = Assembly .GetExecutingAssembly() .GetManifestResourceStream(embeddedName); source = this.GetTransparentDecompressionStream(embeddedStream); } if (applyAdditionalTransforms) { var memory = new MemoryStream(); using (var stream = source) { using (var writer = new StringWriter()) { var additional = ""; var additionalPath = Path.Combine(this.m_WorkingDirectoryProvider.GetPath(), "Build", "AdditionalProjectTransforms.xslt"); if (File.Exists(additionalPath)) { using (var reader = new StreamReader(additionalPath)) { additional = reader.ReadToEnd(); } } using (var reader = new StreamReader(stream)) { var text = reader.ReadToEnd(); text = text.Replace("{ADDITIONAL_TRANSFORMS}", additional); writer.Write(text); writer.Flush(); } var resultBytes = Encoding.UTF8.GetBytes(writer.GetStringBuilder().ToString()); memory.Write(resultBytes, 0, resultBytes.Length); memory.Seek(0, SeekOrigin.Begin); } } source = memory; } var resolver = new EmbeddedResourceResolver(); var result = new XslCompiledTransform(); using (var reader = XmlReader.Create(source)) { result.Load( reader, XsltSettings.TrustedXslt, resolver ); } return result; }
public XslCompiledTransform LoadXSLT(ResourceType resourceType, Language language, string platform) { var currentDir = m_WorkingDirectoryProvider.GetPath(); if (!m_CachedTransforms.ContainsKey(currentDir)) { m_CachedTransforms[currentDir] = new Dictionary<int, XslCompiledTransform>(); } var cache = m_CachedTransforms[currentDir]; int hash; unchecked { hash = 17 * resourceType.GetHashCode() * 31 + language.GetHashCode() * 31 + platform.GetHashCode() * 31; } if (cache.ContainsKey(hash)) { return cache[hash]; } var source = this.LoadOverriddableResource(resourceType, language, platform); var reader2 = new StreamReader(source); var readerInspect = reader2.ReadToEnd(); source.Seek(0, SeekOrigin.Begin); var resolver = new EmbeddedResourceResolver(); var result = new XslCompiledTransform(); using (var reader = XmlReader.Create(source)) { try { result.Load( reader, XsltSettings.TrustedXslt, resolver ); } catch (XsltException ex) { var lines = readerInspect.Split(new[] {"\r\n", "\n"}, StringSplitOptions.None); var line = ex.LineNumber; var minLine = Math.Max(line - 10, 0); var maxLine = Math.Min(line + 10, lines.Length - 1); var selectedLines = new List<string>(); for (var l = minLine; l <= maxLine; l++) { if (l == line) { selectedLines.Add(">> " + lines[l]); } else { selectedLines.Add(" " + lines[l]); } } var context = string.Join(Environment.NewLine, selectedLines); throw new XsltCompileException( ex.Message + "\r\n" + context, ex); } } cache[hash] = result; return result; }