class File

Constants

SLASH

Public Class Methods

add_prefix(prefix, file) click to toggle source
# File lib/cxxproject/ext/file.rb, line 49
def self.add_prefix(prefix, file)
  if not prefix or is_absolute?(file)
    file
  else
    prefix + file
  end
end
is_absolute?(filename) click to toggle source
# File lib/cxxproject/ext/file.rb, line 7
def self.is_absolute?(filename)
  filename[0] == SLASH or filename[1] == ':'
end
rel_from_to_project(from,to,endWithSlash = true) click to toggle source
# File lib/cxxproject/ext/file.rb, line 11
def self.rel_from_to_project(from,to,endWithSlash = true)
  return nil if from.nil? or to.nil?

  toSplitted = to.split('/')
  fromSplitted = from.split('/')
  max = [toSplitted.length, fromSplitted.length].min
  return nil if max < 1

  i = 0
  # path letter in windows may be case different
  if toSplitted[0].length > 1 and fromSplitted[0].length > 1
    i = 1  if toSplitted[0][1] == ':' and fromSplitted[0][1] == ':' and toSplitted[0].swapcase[0] == fromSplitted[0][0]
  end
  while i < max
    break if toSplitted[i] != fromSplitted[i]
    i += 1
  end
  j = i
  res = []
  while i < fromSplitted.length
    res << ".."
    i += 1
  end

  while j < toSplitted.length
    res << toSplitted[j]
    j += 1
  end

  if res.length == 0
    return ""
  end

  res = res.join('/')
  res += "/" if endWithSlash
  res
end