class Querly::Check
Constants
- Query
Attributes
patterns[R]
rules[R]
Public Class Methods
load(hash)
click to toggle source
# File lib/querly/check.rb, line 58 def self.load(hash) pattern = hash["path"] rules = Array(hash["rules"]).map do |rule| case rule when String parse_rule_query(:append, rule) when Hash case when rule["append"] parse_rule_query(:append, rule["append"]) when rule["except"] parse_rule_query(:except, rule["except"]) when rule["only"] parse_rule_query(:only, rule["only"]) else parse_rule_query(:append, rule) end end end self.new(pattern: pattern, rules: rules) end
new(pattern:, rules:)
click to toggle source
# File lib/querly/check.rb, line 23 def initialize(pattern:, rules:) @rules = rules @has_trailing_slash = pattern.end_with?("/") @has_middle_slash = /\/./ =~ pattern @patterns = [] pattern.sub!(/\A\//, '') case when has_trailing_slash? && has_middle_slash? patterns << File.join(pattern, "**") when has_trailing_slash? patterns << File.join(pattern, "**") patterns << File.join("**", pattern, "**") when has_middle_slash? patterns << pattern patterns << File.join(pattern, "**") else patterns << pattern patterns << File.join("**", pattern) patterns << File.join(pattern, "**") patterns << File.join("**", pattern, "**") end end
parse_rule_query(opr, query)
click to toggle source
# File lib/querly/check.rb, line 82 def self.parse_rule_query(opr, query) case query when String Query.new(opr, nil, query) when Hash if query['tags'] ts = query['tags'] if ts.is_a?(String) ts = ts.split end tags = Set.new(ts) end identifier = query['id'] Query.new(opr, tags, identifier) end end
Public Instance Methods
has_middle_slash?()
click to toggle source
# File lib/querly/check.rb, line 54 def has_middle_slash? @has_middle_slash end
has_trailing_slash?()
click to toggle source
# File lib/querly/check.rb, line 50 def has_trailing_slash? @has_trailing_slash end
match?(path:)
click to toggle source
# File lib/querly/check.rb, line 100 def match?(path:) patterns.any? {|pat| File.fnmatch?(pat, path.to_s) } end