Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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;
        }
Exemplo n.º 3
0
 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
                                ));
 }
Exemplo n.º 4
0
 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
     ));
 }