WikiFunctions.WikiRegexes.GenerateNamespaceRegex C# (CSharp) Метод

GenerateNamespaceRegex() публичный статический Метод

Generates a regex template for all variants of one or more namespace, e.g. "File|Image"
public static GenerateNamespaceRegex ( ) : string
Результат string
        public static string GenerateNamespaceRegex(params int[] namespaces)
        {
            StringBuilder sb = new StringBuilder(100 * namespaces.Length);
            foreach (int ns in namespaces)
            {
                if (ns == Namespace.Article) continue;

                if (sb.Length > 0) sb.Append('|');

                string nsName = Variables.Namespaces[ns];
                sb.Append(Tools.StripNamespaceColon(nsName));
                string canNS;
                if (Variables.CanonicalNamespaces.TryGetValue(ns, out canNS)
                    && canNS != nsName)
                {
                    sb.Append('|');
                    sb.Append(Tools.StripNamespaceColon(canNS));
                }

                List<string> nsAlias;
                if (Variables.NamespaceAliases.TryGetValue(ns, out nsAlias))
                    foreach (string s in nsAlias)
                {
                    sb.Append('|');
                    sb.Append(Tools.StripNamespaceColon(s));
                }
            }

            sb.Replace(" ", "[ _]");
            return sb.ToString();
        }

Usage Example

Пример #1
0
        /// <summary>
        ///
        /// </summary>
        private static void RegenerateRegexes()
        {
            NamespacesCaseInsensitive.Clear();

            foreach (int ns in Namespaces.Keys)
            {
                NamespacesCaseInsensitive.Add(ns, "(?i:"
                                              + WikiRegexes.GenerateNamespaceRegex(ns) + @")\s*:");
            }

            WikiRegexes.MakeLangSpecificRegexes();
        }