Sha256: abcc7bbb439f718576b0d8be62b12bc8bdd4ceba0301356aa453b13cb058e0c1
Contents?: true
Size: 1.1 KB
Versions: 1
Compression:
Stored size: 1.1 KB
Contents
# frozen_string_literal: true class FastIgnore class RuleSet def initialize(rules, allow) @dir_rules = rules.reject(&:file_only?).freeze @file_rules = rules.reject(&:dir_only?).freeze @any_not_anchored = rules.any?(&:unanchored?) @has_shebang_rules = rules.any?(&:shebang) @allowed_recursive = { '.' => true } @allow = allow freeze end def freeze @dir_rules.freeze @file_rules.freeze super end def allowed_recursive?(path, dir, filename) @allowed_recursive.fetch(path) do @allowed_recursive[path] = allowed_recursive?(::File.dirname(path), true, nil) && allowed_unrecursive?(path, dir, filename) end end def allowed_unrecursive?(path, dir, filename) (dir ? @dir_rules : @file_rules).reverse_each do |rule| return rule.negation? if rule.match?(path, filename) end (not @allow) || (dir && @any_not_anchored) end def weight @dir_rules.length + (@has_shebang_rules ? 10 : 0) end def empty? @dir_rules.empty? && @file_rules.empty? end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
fast_ignore-0.10.1 | lib/fast_ignore/rule_set.rb |