Sha256: bfcca5480cdf8062156795e3ee93155bd1bfaced698b1796465de6495809bfbf
Contents?: true
Size: 1.56 KB
Versions: 1
Compression:
Stored size: 1.56 KB
Contents
require 'linguist/blob_helper' module Linguist # A FileBlob is a wrapper around a File object to make it quack # like a Grit::Blob. It provides the basic interface: `name`, # `data`, and `size`. class FileBlob include BlobHelper # Public: Initialize a new FileBlob from a path # # path - A path String that exists on the file system. # base_path - Optional base to relativize the path # # Returns a FileBlob. def initialize(path, base_path = nil) # Guard against unintentionally shelling out (leading '|') and path # traversal full_path = path.start_with?('/') ? path : File.join(Dir.pwd, path) if path.start_with?('|') || File.absolute_path(full_path) != full_path raise "Invalid path: #{path}" end @path = path @name = base_path ? path.sub("#{base_path}/", '') : path end # Public: Filename # # Examples # # FileBlob.new("/path/to/linguist/lib/linguist.rb").name # # => "/path/to/linguist/lib/linguist.rb" # # FileBlob.new("/path/to/linguist/lib/linguist.rb", # "/path/to/linguist").name # # => "lib/linguist.rb" # # Returns a String attr_reader :name # Public: Read file permissions # # Returns a String like '100644' def mode File.stat(@path).mode.to_s(8) end # Public: Read file contents. # # Returns a String. def data File.read(@path) end # Public: Get byte size # # Returns an Integer. def size File.size(@path) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
gitlab-linguist-3.0.1 | lib/linguist/file_blob.rb |