Sha256: 4230e1de220fac2b7f104a2b3a0bd0c0ba984c918513eb0d8fb69c7bf7868e68

Contents?: true

Size: 1.45 KB

Versions: 16

Compression:

Stored size: 1.45 KB

Contents

require 'cxxproject/utils/utils'

class File

  SLASH = '/'

  def self.is_absolute?(filename)
    if Cxxproject::Utils.old_ruby?
      filename[0] == 47 or filename[1] == 58 # 47 = /, 58 = :
    else
      filename[0] == SLASH or filename[1] == ':'
    end
  end

  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
      if Cxxproject::Utils.old_ruby?
        i = 1 if toSplitted[0][1] == 58 and fromSplitted[0][1] == 58 and toSplitted[0].swapcase[0] == fromSplitted[0][0] 
      else
        i = 1  if toSplitted[0][1] == ':' and fromSplitted[0][1] == ':' and toSplitted[0].swapcase[0] == fromSplitted[0][0]
      end	
	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

  
  def self.add_prefix(prefix, file)
    if not prefix or is_absolute?(file)
      file
    else
      prefix + file
    end
  end

end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
cxxproject-0.5.74 lib/cxxproject/ext/file.rb
cxxproject-0.5.73 lib/cxxproject/ext/file.rb
cxxproject-0.5.72 lib/cxxproject/ext/file.rb
cxxproject-0.5.71 lib/cxxproject/ext/file.rb
cxxproject-0.5.70 lib/cxxproject/ext/file.rb
cxxproject-0.5.69 lib/cxxproject/ext/file.rb
cxxproject-0.5.68 lib/cxxproject/ext/file.rb
cxxproject-0.5.67 lib/cxxproject/ext/file.rb
cxxproject-0.5.66 lib/cxxproject/ext/file.rb
cxxproject-0.5.65 lib/cxxproject/ext/file.rb
cxxproject-0.5.64 lib/cxxproject/ext/file.rb
cxxproject-0.5.63 lib/cxxproject/ext/file.rb
cxxproject-0.5.62 lib/cxxproject/ext/file.rb
cxxproject-0.5.61 lib/cxxproject/ext/file.rb
cxxproject-0.5.60 lib/cxxproject/ext/file.rb
cxxproject-0.5.59 lib/cxxproject/ext/file.rb