private void AddEntry(RegexEntry entry) { var newEntry = new RegexEntry { Name = "New Entry" }; Entries.Add(newEntry); SelectedEntry = newEntry; }
/// <summary> /// Parses specified NAnt search patterns for search directories and /// corresponding regex patterns. /// </summary> /// <param name="nantPatterns">In. NAnt patterns. Absolute or relative paths.</param> /// <param name="regexPatterns">Out. Regex patterns. Absolute canonical paths.</param> /// <param name="nonRegexFiles">Out. Non-regex files. Absolute canonical paths.</param> /// <param name="addSearchDirectories">In. Whether to allow a pattern to add search directories.</param> private void ConvertPatterns(StringCollection nantPatterns, ArrayList regexPatterns, StringCollection nonRegexFiles, bool addSearchDirectories) { string searchDirectory; string regexPattern; bool isRecursive; bool isRegex; foreach (string nantPattern in nantPatterns) { ParseSearchDirectoryAndPattern(addSearchDirectories, nantPattern, out searchDirectory, out isRecursive, out isRegex, out regexPattern); if (isRegex) { RegexEntry entry = new RegexEntry(); entry.IsRecursive = isRecursive; entry.BaseDirectory = searchDirectory; entry.Pattern = regexPattern; if (regexPattern.EndsWith(@"**/*") || regexPattern.EndsWith(@"**\*")) { logger.Warn("**/* pattern may not produce desired results"); } regexPatterns.Add(entry); } else { string exactName = Path.Combine(searchDirectory, regexPattern); if (!nonRegexFiles.Contains(exactName)) { nonRegexFiles.Add(exactName); } } if (!addSearchDirectories) { continue; } int index = _searchDirectories.IndexOf(searchDirectory); // if the directory was found before, but wasn't recursive // and is now, mark it as so if (index > -1) { if (!(bool)_searchDirIsRecursive[index] && isRecursive) { _searchDirIsRecursive[index] = isRecursive; } } // if the directory has not been added, add it if (index == -1) { _searchDirectories.Add(searchDirectory); _searchDirIsRecursive.Add(isRecursive); } } }
static DatabaseSchemaAttribute() { _regexs = new System.Collections.Generic.List <RegexEntry>(); foreach (DatabaseSchemaTypes item in Enum.GetValues(typeof(DatabaseSchemaTypes))) { string p = EnumExtensions.GetProperty(item, "Prefix"); if (p == "*") { continue; } RegexEntry entry = new RegexEntry() { regex = new System.Text.RegularExpressions.Regex(p, System.Text.RegularExpressions.RegexOptions.Singleline | System.Text.RegularExpressions.RegexOptions.IgnoreCase), type = item, }; _regexs.Add(entry); } }
/// <summary> /// Initiate the ACL /// </summary> /// <param name="cfg">Config</param> public void Load(NetworkACLConfig cfg) { if (cfg == null) { return; } Type = cfg.Type; if (!string.IsNullOrEmpty(cfg.Path) && File.Exists(cfg.Path)) { string json = File.ReadAllText(cfg.Path); JObject jo = JObject.Parse(json); if (!(jo is JArray array)) { return; } Entries = new Entry[array.Count]; for (int x = 0, m = array.Count; x < m; x++) { JObject j = array[x]; if (!j.ContainsProperty("value")) { continue; } string value = j.Properties["value"].AsString(); if (j.ContainsProperty("regex") && j.Properties["regex"].AsBooleanOrDefault(false)) { Entries[x] = new RegexEntry(value); } else { Entries[x] = new Entry(value); } } } }
private bool TestRegex(string path, RegexEntry entry) { Hashtable regexCache = CaseSensitive ? cachedCaseSensitiveRegexes : cachedCaseInsensitiveRegexes; Regex r = (Regex)regexCache[entry.Pattern]; if (r == null) { RegexOptions regexOptions = RegexOptions.Compiled; if (!CaseSensitive) { regexOptions |= RegexOptions.IgnoreCase; } regexCache[entry.Pattern] = r = new Regex(entry.Pattern, regexOptions); } // Check to see if the empty string matches the pattern if (path.Length == entry.BaseDirectory.Length) { #if DEBUG_REGEXES Console.WriteLine("{0} (empty string) [basedir={1}]", entry.Pattern, entry.BaseDirectory); #endif return(r.IsMatch(String.Empty)); } //ported: changed next line to following introduced one //bool endsWithSlash = StringUtils.EndsWith(entry.BaseDirectory, Path.DirectorySeparatorChar); bool endsWithSlash = entry.BaseDirectory.EndsWith("" + Path.DirectorySeparatorChar); #if DEBUG_REGEXES Console.WriteLine("{0} ({1}) [basedir={2}]", entry.Pattern, path.Substring(entry.BaseDirectory.Length + ((endsWithSlash) ? 0 : 1)), entry.BaseDirectory); #endif if (endsWithSlash) { return(r.IsMatch(path.Substring(entry.BaseDirectory.Length))); } else { return(r.IsMatch(path.Substring(entry.BaseDirectory.Length + 1))); } }
private bool TestRegex(string path, RegexEntry entry, bool caseSensitive) { Hashtable regexCache = caseSensitive ? cachedCaseSensitiveRegexes : cachedCaseInsensitiveRegexes; Regex r = (Regex)regexCache[entry.Pattern]; if (r == null) { RegexOptions regexOptions = RegexOptions.Compiled; if (!caseSensitive) regexOptions |= RegexOptions.IgnoreCase; regexCache[entry.Pattern] = r = new Regex(entry.Pattern, regexOptions); } // Check to see if the empty string matches the pattern if (path.Length == entry.BaseDirectory.Length) { #if DEBUG_REGEXES Console.WriteLine("{0} (empty string) [basedir={1}]", entry.Pattern, entry.BaseDirectory); #endif return r.IsMatch(String.Empty); } bool endsWithSlash = StringUtils.EndsWith(entry.BaseDirectory, Path.DirectorySeparatorChar); #if DEBUG_REGEXES Console.WriteLine("{0} ({1}) [basedir={2}]", entry.Pattern, path.Substring(entry.BaseDirectory.Length + ((endsWithSlash) ? 0 : 1)), entry.BaseDirectory); #endif if (endsWithSlash) { return r.IsMatch(path.Substring(entry.BaseDirectory.Length)); } else { return r.IsMatch(path.Substring(entry.BaseDirectory.Length + 1)); } }
/// <summary> /// Parses specified NAnt search patterns for search directories and /// corresponding regex patterns. /// </summary> /// <param name="nantPatterns">In. NAnt patterns. Absolute or relative paths.</param> /// <param name="regexPatterns">Out. Regex patterns. Absolute canonical paths.</param> /// <param name="nonRegexFiles">Out. Non-regex files. Absolute canonical paths.</param> /// <param name="addSearchDirectories">In. Whether to allow a pattern to add search directories.</param> /// <history> /// <change date="20020221" author="Ari Hännikäinen">Created</change> /// </history> private void ConvertPatterns(StringCollection nantPatterns, ArrayList regexPatterns, StringCollection nonRegexFiles, bool addSearchDirectories) { string searchDirectory; string regexPattern; bool isRecursive; bool isRegex; foreach (string nantPattern in nantPatterns) { ParseSearchDirectoryAndPattern(addSearchDirectories, nantPattern, out searchDirectory, out isRecursive, out isRegex, out regexPattern); if (isRegex) { RegexEntry entry = new RegexEntry(); entry.IsRecursive = isRecursive; entry.BaseDirectory = searchDirectory; entry.Pattern = regexPattern; if (regexPattern.EndsWith(@"**/*") || regexPattern.EndsWith(@"**\*")) logger.Warn( "**/* pattern may not produce desired results" ); regexPatterns.Add(entry); } else { // David Alpert ([email protected]) // Tuesday, December 21, 2004 // string exactName = RPath.Combine(searchDirectory, regexPattern); string exactName = regexPattern; if (!nonRegexFiles.Contains(exactName)) { nonRegexFiles.Add(exactName); } } if (!addSearchDirectories) { continue; } int index = _searchDirectories.IndexOf(searchDirectory); // if the directory was found before, but wasn't recursive // and is now, mark it as so if (index > -1) { if (!(bool)_searchDirIsRecursive[index] && isRecursive) { _searchDirIsRecursive[index] = isRecursive; } } // if the directory has not been added, add it if (index == -1) { _searchDirectories.Add(searchDirectory); _searchDirIsRecursive.Add(isRecursive); } } }
private void RemoveEntry(RegexEntry entry) { Entries.Remove(SelectedEntry); SelectedEntry = null; }
private bool RemoveEntryCmdEnabled(RegexEntry selected) { return(this.SelectedEntry != null); }
private bool AddEntryCmdEnabled(RegexEntry selected) { return(true); }
private void AddEntry(RegexEntry entry) { Entries.Add(new RegexEntry()); }