/// <summary> /// 初始化<see cref="IgnoreRule"></see>类的新实例。 /// </summary> public IgnoreRule(string originalPattern, IgnoreOptions options = null, string basePath = "/", int?lineNumber = null) { if (originalPattern.IsNullOrWhiteSpace()) { throw new ArgumentNullException(nameof(originalPattern)); } BasePath = basePath.IsNullOrWhiteSpace() ? "/" : basePath.NormalizedPath().EnsureEndsWith('/'); IgnoreOptions = options ?? IgnoreOptions.Default; // 保存原始的 originalPattern OriginalPattern = originalPattern; LineNumber = lineNumber; var globOptions = GlobOptions.Default; if (!IgnoreOptions.CaseSensitive) { _stringComparison = StringComparison.OrdinalIgnoreCase; globOptions.Evaluation.CaseInsensitive = true; } _analyzedPattern = AnalyzePattern(originalPattern); _glob = Glob.Parse(_analyzedPattern, globOptions); }
public IgnoreParser(string name, IgnoreOptions options = null) { if (name.IsNullOrWhiteSpace()) { throw new ArgumentNullException(nameof(name)); } Name = name; Options = options; }
/// <summary> /// 添加多个忽略规则 /// </summary> /// <param name="rules"></param> /// <param name="options"></param> public void AddRules(IEnumerable <string> rules, IgnoreOptions options = null) { var ruleLines = rules.Select((pattern, index) => new { Pattern = pattern, LineNumber = index + 1 }).Where(line => line.Pattern.Length > 0 && !line.Pattern.StartsWith("#")); var ruleList = ruleLines.Select(line => new IgnoreRule(line.Pattern, options, BasePath, line.LineNumber)); ruleList = ruleList.Distinct(); _rules.AddRange(ruleList); }
/// <summary> /// 根据.gitignore 文件路径添加忽略规则 /// </summary> /// <param name="ignoreFilePath"></param> /// <param name="options"></param> public void AddRules(string ignoreFilePath, IgnoreOptions options = null) { AddRules(File.ReadAllLines(ignoreFilePath), options); }
/// <summary> /// 将规则添加到忽略列表中。 /// </summary> public void AddRule(string rule, IgnoreOptions options = null) { AddRules(new[] { rule }, options); }
/// <summary> /// ctor /// </summary> public IgnoreFile(string filePath, IgnoreOptions options = null) { _filePath = filePath; AddRules(filePath, options); }
/// <summary> /// ctor /// </summary> public IgnoreFile(IEnumerable <string> rules, string filePath = null, IgnoreOptions options = null) { _filePath = filePath; AddRules(rules, options); }