Esempio n. 1
0
 public static void CheckSearchRoot(List <string> path, string name, ConfigurationSettings settings)
 {
     if (path.Count > 0)
     {
         string       nname    = path[0];
         ResolvedName resolved = ResolveName(nname, name, settings);
         if (resolved == null)
         {
             if (nname != name)
             {
                 path.Insert(0, name);
             }
         }
         else
         {
             if (String.IsNullOrWhiteSpace(resolved.ChildName))
             {
                 nname = String.Format("{0}{1}", resolved.Name, resolved.Abbr);
             }
             else if (!String.IsNullOrWhiteSpace(resolved.ChildName))
             {
                 if (resolved.Abbr != '\0')
                 {
                     nname = String.Format("{0}{1}{2}", resolved.Name, resolved.Abbr, resolved.ChildName);
                 }
             }
             path[0] = nname;
         }
     }
 }
Esempio n. 2
0
        /// <summary>
        /// Resolve the search string for the specified abbreviation tag
        /// </summary>
        /// <param name="name">Search string</param>
        /// <param name="nodeName">Config node name</param>
        /// <param name="abbr">Abbreviation tag</param>
        /// <returns>Resolved name</returns>
        private static ResolvedName ResolveName(string name, string nodeName, char abbr, ConfigurationSettings settings)
        {
            ResolvedName resolved = new ResolvedName();

            switch (abbr)
            {
            case ConfigAttributesNode.NODE_ABBREVIATION:
                resolved.AbbrReplacement = settings.AttributesNodeName;
                break;

            case ConfigParametersNode.NODE_ABBREVIATION:
                resolved.AbbrReplacement = settings.ParametersNodeName;
                break;

            case ConfigPropertiesNode.NODE_ABBREVIATION:
                resolved.AbbrReplacement = settings.PropertiesNodeName;
                break;

            case ConfigListNode <ConfigValueNode> .NODE_ABBREVIATION:
                resolved.AbbrReplacement = ConfigListNode <ConfigValueNode> .NODE_NAME;
                break;
            }
            resolved.Abbr = abbr;

            string[] parts = name.Split(abbr);
            string   nname = parts[0];
            string   cname = parts[1];

            if (String.IsNullOrWhiteSpace(nname) || (nname.Length == 1 && nname[0] == ConfigurationSettings.NODE_SEARCH_WILDCARD))
            {
                resolved.Name = nodeName;
            }
            else
            {
                resolved.Name = nname;
            }

            if (!String.IsNullOrWhiteSpace(cname))
            {
                resolved.ChildName = cname;
            }
            else
            {
                resolved.ChildName = null;
            }
            return(resolved);
        }
Esempio n. 3
0
        /// <summary>
        /// Resolve the specified name for search.
        /// </summary>
        /// <param name="name">Search node name</param>
        /// <param name="nodeName">Config Node name.</param>
        /// <returns>Resolved name or NULL</returns>
        public static ResolvedName ResolveName(string name, string nodeName, ConfigurationSettings settings)
        {
            if (name.Contains(ConfigAttributesNode.NODE_ABBREVIATION))
            {
                return(ResolveName(name, nodeName, ConfigAttributesNode.NODE_ABBREVIATION, settings));
            }
            else if (name.Contains(ConfigParametersNode.NODE_ABBREVIATION))
            {
                return(ResolveName(name, nodeName, ConfigParametersNode.NODE_ABBREVIATION, settings));
            }
            else if (name.Contains(ConfigPropertiesNode.NODE_ABBREVIATION))
            {
                return(ResolveName(name, nodeName, ConfigPropertiesNode.NODE_ABBREVIATION, settings));
            }
            else if (name.Contains(ConfigListNode <ConfigValueNode> .NODE_ABBREVIATION))
            {
                return(ResolveName(name, nodeName, ConfigListNode <ConfigValueNode> .NODE_ABBREVIATION, settings));
            }
            else if (ARRAY_INDEX_RE.IsMatch(name))
            {
                MatchCollection mc = ARRAY_INDEX_RE.Matches(name);
                if (mc != null && mc.Count > 0 && mc[0].Groups != null && mc[0].Groups.Count > 1)
                {
                    ResolvedName resolved = new ResolvedName();
                    resolved.AbbrReplacement = ConfigListNode <ConfigValueNode> .NODE_NAME;
                    resolved.Name            = mc[0].Groups[1].Value;
                    resolved.ChildName       = mc[0].Groups[2].Value;

                    return(resolved);
                }
            }
            else if (name.Length == 1 && name[0] == ConfigurationSettings.NODE_SEARCH_WILDCARD)
            {
                ResolvedName resolved = new ResolvedName();
                resolved.Name            = nodeName;
                resolved.AbbrReplacement = null;
                resolved.ChildName       = null;

                return(resolved);
            }
            return(null);
        }