Module: Parcels::Utils::PathUtils

Defined in:
lib/parcels/utils/path_utils.rb

Class Method Summary collapse

Class Method Details

.maybe_path_under(path, under_what) ⇒ Object



10
11
12
13
14
15
16
17
18
19
# File 'lib/parcels/utils/path_utils.rb', line 10

def maybe_path_under(path, under_what)
  path = path.to_s.strip
  under_what = under_what.to_s.strip

  if (path.length - under_what.length) > 1 && path[0..(under_what.length - 1)] == under_what &&
    path[under_what.length..under_what.length] == File::SEPARATOR

    path[(under_what.length + 1)..-1]
  end
end

.path_under(path, under_what) ⇒ Object



5
6
7
8
# File 'lib/parcels/utils/path_utils.rb', line 5

def path_under(path, under_what)
  maybe_path_under(path, under_what) ||
    raise(Errno::ENOENT, %{Path #{path.inspect} is not underneath directory #{under_what.inspect}.})
end

.widget_class_file_for_alongside_file(alongside_file) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
# File 'lib/parcels/utils/path_utils.rb', line 21

def widget_class_file_for_alongside_file(alongside_file)
  directory = File.dirname(alongside_file)
  basename = File.basename(alongside_file)
  basename = $1 if basename =~ /^(.+?)\./

  entries = Dir.entries(directory).select { |e| e =~ /^#{Regexp.escape(basename)}\./ && e =~ /\.rb$/i }
  entries = entries.sort_by(&:length)
  entry = entries[-1]

  File.join(directory, entry) if entry
end