Modifying BlobHelper and FileBlob to use path

This commit is contained in:
Arfon Smith
2015-01-09 15:15:34 -06:00
parent 79fd12eb75
commit f4c1cc576b
3 changed files with 49 additions and 35 deletions

View File

@@ -3,7 +3,7 @@ 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`.
# `data`, `path` and `size`.
class FileBlob
include BlobHelper
@@ -14,32 +14,21 @@ module Linguist
#
# Returns a FileBlob.
def initialize(path, base_path = nil)
@path = path
@name = base_path ? path.sub("#{base_path}/", '') : path
@path = base_path ? path.sub("#{base_path}/", '') : path
end
# Public: Filename
#
# Examples
#
# FileBlob.new("/path/to/linguist/lib/linguist.rb").name
# FileBlob.new("/path/to/linguist/lib/linguist.rb").path
# # => "/path/to/linguist/lib/linguist.rb"
#
# FileBlob.new("/path/to/linguist/lib/linguist.rb",
# "/path/to/linguist").name
# "/path/to/linguist").path
# # => "lib/linguist.rb"
#
# Returns a String
attr_reader :name
# Public: Filename with Path
#
# Examples
#
# FileBlob.new("/path/to/linguist/lib/linguist.rb").path
# # => "/path/to/linguist/lib/linguist.rb"
#
# Returns a String
attr_reader :path
# Public: Read file permissions
@@ -49,6 +38,13 @@ module Linguist
File.stat(@path).mode.to_s(8)
end
# Public: File name
#
# Returns a String
def name
File.basename(path)
end
# Public: Read file contents.
#
# Returns a String.
@@ -77,7 +73,7 @@ module Linguist
#
# Returns an Array
def extensions
basename, *segments = File.basename(name).split(".")
basename, *segments = File.basename(path).split(".")
segments.map.with_index do |segment, index|
"." + segments[index..-1].join(".")