示例#1
0
        /// <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);
        }
示例#2
0
        public IgnoreParser(string name, IgnoreOptions options = null)
        {
            if (name.IsNullOrWhiteSpace())
            {
                throw new ArgumentNullException(nameof(name));
            }

            Name    = name;
            Options = options;
        }
示例#3
0
        /// <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);
        }
示例#4
0
 /// <summary>
 /// 根据.gitignore 文件路径添加忽略规则
 /// </summary>
 /// <param name="ignoreFilePath"></param>
 /// <param name="options"></param>
 public void AddRules(string ignoreFilePath, IgnoreOptions options = null)
 {
     AddRules(File.ReadAllLines(ignoreFilePath), options);
 }
示例#5
0
 /// <summary>
 /// 将规则添加到忽略列表中。
 /// </summary>
 public void AddRule(string rule, IgnoreOptions options = null)
 {
     AddRules(new[] { rule }, options);
 }
示例#6
0
 /// <summary>
 /// ctor
 /// </summary>
 public IgnoreFile(string filePath, IgnoreOptions options = null)
 {
     _filePath = filePath;
     AddRules(filePath, options);
 }
示例#7
0
 /// <summary>
 /// ctor
 /// </summary>
 public IgnoreFile(IEnumerable <string> rules, string filePath = null, IgnoreOptions options = null)
 {
     _filePath = filePath;
     AddRules(rules, options);
 }