Module: RuboCop::PathUtil

Overview

Common methods and behaviors for dealing with paths.

Class Method Summary collapse

Class Method Details

.match_path?(pattern, path, config_path) ⇒ Boolean

TODO: The old way of matching patterns is flawed, so a new one has been introduced. We keep supporting the old way for a while and issue deprecation warnings when a pattern is used that produced a match with the old way but doesn't match with the new.



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/rubocop/path_util.rb', line 17

def match_path?(pattern, path, config_path)
  case pattern
  when String
    basename = File.basename(path)
    old_match = basename == pattern || File.fnmatch?(pattern, path)
    new_match = File.fnmatch?(pattern, path, File::FNM_PATHNAME)
    if old_match && !new_match
      instruction = if basename == pattern
                      ". Change to '**/#{pattern}'."
                    elsif pattern.end_with?('**')
                      ". Change to '#{pattern}/*'."
                    end
      warn("Warning: Deprecated pattern style '#{pattern}' in " \
           "#{config_path}#{instruction}")
    end
    old_match || new_match
  when Regexp
    path =~ pattern
  end
end

.relative_path(path, base_dir = Dir.pwd) ⇒ Object



8
9
10
11
# File 'lib/rubocop/path_util.rb', line 8

def relative_path(path, base_dir = Dir.pwd)
  path_name = Pathname.new(File.expand_path(path))
  path_name.relative_path_from(Pathname.new(base_dir)).to_s
end