String replace_content(ContentReplaceInfo cri, string srcContent) { switch (cri.Kind) { case treplace_kinds.REGEX: Regex r = new Regex(cri.SearchString); //!TODO: create it once return(r.Replace(srcContent, cri.ReplaceString)); case treplace_kinds.DIRECT: return(srcContent.Replace(cri.SearchString, cri.ReplaceString)); case treplace_kinds.XML: XmlDocument xml = new XmlDocument(); xml.LoadXml(srcContent); XmlNamespaceManager xmlsm = new XmlNamespaceManager(xml.NameTable); String url = cri.GetParam("xmlns_url"); if (url != null) { String xmlns_name = cri.GetParam("xmlns_name"); System.Diagnostics.Debug.Assert(xmlns_name != null); xmlsm.AddNamespace(xmlns_name, url); } foreach (XmlNode node in xml.SelectNodes(cri.SearchString, xmlsm)) { node.InnerText = cri.ReplaceString; } return(xml.InnerXml); } return(srcContent); }
String replace_content(ContentReplaceInfo cri, string srcContent) { switch (cri.Kind) { case treplace_kinds.REGEX: Regex r = new Regex(cri.SearchString); //!TODO: create it once return r.Replace(srcContent, cri.ReplaceString); case treplace_kinds.DIRECT: return srcContent.Replace(cri.SearchString, cri.ReplaceString); case treplace_kinds.XML: XmlDocument xml = new XmlDocument(); xml.LoadXml(srcContent); XmlNamespaceManager xmlsm = new XmlNamespaceManager(xml.NameTable); String url = cri.GetParam("xmlns_url"); if (url != null) { String xmlns_name = cri.GetParam("xmlns_name"); System.Diagnostics.Debug.Assert(xmlns_name != null); xmlsm.AddNamespace(xmlns_name, url); } foreach (XmlNode node in xml.SelectNodes(cri.SearchString, xmlsm)) { node.InnerText = cri.ReplaceString; } return xml.InnerXml; } return srcContent; }
private void generate_list_replacements() { m_ListReplacements = new List <ContentReplaceInfo>(); foreach (XmlNode node in m_VersionNode.SelectNodes("content/replace")) { if (!is_replace_rule_applicable(node)) { continue; } ContentReplaceInfo ci = new ContentReplaceInfo( node.SelectSingleNode("files").InnerText , expand_macros(node.SelectSingleNode("search").InnerText) , expand_macros(node.SelectSingleNode("replace").InnerText) , get_kind(node, "kind", treplace_kinds.REGEX) ); //for some nodes we need additional params; f.e. for nodes with kind = xml user is able to specify namespaces foreach (XmlNode xmlns_node in node.SelectNodes("xmlns")) { if (xmlns_node != null) { XmlNode name = xmlns_node.SelectSingleNode("@name"); if (name == null) { throw new Exception("Subnode 'xmlns' requests attribute 'name'"); } ci.SetAdditionalParam("xmlns_name", xmlns_node.SelectSingleNode("@name").InnerText); ci.SetAdditionalParam("xmlns_url", xmlns_node.InnerText); } } m_ListReplacements.Add(ci); } m_ListReplacements.Add(new ContentReplaceInfo( m_VersionNode.SelectSingleNode("package/include_files").InnerText , OriginalPackageName , getNewPackageName() , treplace_kinds.DIRECT )); }
private void generate_list_replacements() { m_ListReplacements = new List<ContentReplaceInfo>(); foreach (XmlNode node in m_VersionNode.SelectNodes("content/replace")) { if (!is_replace_rule_applicable(node)) continue; ContentReplaceInfo ci = new ContentReplaceInfo( node.SelectSingleNode("files").InnerText , expand_macros(node.SelectSingleNode("search").InnerText) , expand_macros(node.SelectSingleNode("replace").InnerText) , get_kind(node, "kind", treplace_kinds.REGEX) ); //for some nodes we need additional params; f.e. for nodes with kind = xml user is able to specify namespaces foreach (XmlNode xmlns_node in node.SelectNodes("xmlns")) { if (xmlns_node != null) { XmlNode name = xmlns_node.SelectSingleNode("@name"); if (name == null) throw new Exception("Subnode 'xmlns' requests attribute 'name'"); ci.SetAdditionalParam("xmlns_name", xmlns_node.SelectSingleNode("@name").InnerText); ci.SetAdditionalParam("xmlns_url", xmlns_node.InnerText); } } m_ListReplacements.Add(ci); } m_ListReplacements.Add(new ContentReplaceInfo( m_VersionNode.SelectSingleNode("package/include_files").InnerText , OriginalPackageName , getNewPackageName() , treplace_kinds.DIRECT )); }