Custom File.extname method which returns the filename if it is an extension

This commit is contained in:
Paul Chaignon
2014-06-19 13:25:27 +02:00
parent f71def19ae
commit bd694c60e1
2 changed files with 19 additions and 2 deletions

View File

@@ -52,5 +52,20 @@ module Linguist
def size
File.size(@path)
end
# Public: Get file extension.
#
# Returns a String.
def extension
# File.extname returns nil if the filename is an extension.
extension = File.extname(name)
basename = File.basename(name)
# Checks if the filename is an extension.
if extension.empty? && basename[0] == "."
basename
else
extension
end
end
end
end

View File

@@ -103,7 +103,8 @@ module Linguist
# A bit of an elegant hack. If the file is executable but extensionless,
# append a "magic" extension so it can be classified with other
# languages that have shebang scripts.
if File.extname(name).empty? && mode && (mode.to_i(8) & 05) == 05
extension = FileBlob.new(name).extension()
if extension.empty? && mode && (mode.to_i(8) & 05) == 05
name += ".script!"
end
@@ -183,7 +184,8 @@ module Linguist
#
# Returns all matching Languages or [] if none were found.
def self.find_by_filename(filename)
basename, extname = File.basename(filename), File.extname(filename)
basename = File.basename(filename)
extname = FileBlob.new(filename).extension()
langs = @filename_index[basename] +
@extension_index[extname]
langs.compact.uniq