Sha256: a6ca4604a2c0afd373343d787c220247d1bf1fe15143562e9c40f42892548610
Contents?: true
Size: 1.76 KB
Versions: 5
Compression:
Stored size: 1.76 KB
Contents
require 'fileutils' class File RELATIVE_PARENTDIR = '..' RELATIVE_SAMEDIR = '.' # Turns a path +to+ into a relative path from starting # point +from+. The argument +from+ is assumed to be # a filename. To treat it as a directory, make sure it # ends in +File::SEPARATOR+ ('/' on UNIX filesystems). # # @param [String] from the starting filename # (or directory with +from_isdir+ set to +true+). # @param [String] to the final path that should be made relative. # @return [String] the relative path from +from+ to +to+. def self.relative_path(from, to) from = expand_path(from).split(SEPARATOR) to = expand_path(to).split(SEPARATOR) from.length.times do break if from[0] != to[0] from.shift; to.shift end fname = from.pop join(*(from.map { RELATIVE_PARENTDIR } + to)) end # Cleans a path by removing extraneous '..', '.' and '/' characters # # @example Clean a path # File.cleanpath('a/b//./c/../e') # => "a/b/e" # @param [String] path the path to clean # @return [String] the sanitized path def self.cleanpath(path) path = path.split(SEPARATOR) path = path.inject([]) do |acc, comp| next acc if comp == RELATIVE_SAMEDIR if comp == RELATIVE_PARENTDIR && acc.size > 0 && acc.last != RELATIVE_PARENTDIR acc.pop next acc end acc << comp end File.join(*path) end # Forces opening a file (for writing) by first creating the file's directory def self.open!(file, *args, &block) dir = dirname(file) FileUtils.mkdir_p(dir) unless directory?(dir) open(file, *args, &block) end # Reads a file with binary encoding # @return [String] the ascii-8bit encoded data def self.read_binary(file) File.open(file, 'rb') {|f| f.read } end end
Version data entries
5 entries across 5 versions & 1 rubygems
Version | Path |
---|---|
yard-0.5.8 | lib/yard/core_ext/file.rb |
yard-0.5.7 | lib/yard/core_ext/file.rb |
yard-0.5.6 | lib/yard/core_ext/file.rb |
yard-0.5.5 | lib/yard/core_ext/file.rb |
yard-0.5.4 | lib/yard/core_ext/file.rb |