Sha256: 532a903e4d811a5683fcb97e4abc981c4126504042ee794809e0a74513d3a14b
Contents?: true
Size: 1.29 KB
Versions: 28
Compression:
Stored size: 1.29 KB
Contents
require 'yaml' module Linguist module Strategy # Detects language based on extension class Extension # Public: Use the file extension to detect the blob's language. # # blob - An object that quacks like a blob. # candidates - A list of candidate languages. # # Examples # # Extension.call(FileBlob.new("path/to/file")) # # Returns an array of languages associated with a blob's file extension. # Selected languages must be in the candidate list, except if it's empty, # in which case any language is a valid candidate. def self.call(blob, candidates) return candidates if generic? blob.name.to_s languages = Language.find_by_extension(blob.name.to_s) candidates.any? ? candidates & languages : languages end # Public: Return true if filename uses a generic extension. def self.generic?(filename) self.load @generic.any? { |ext| filename.downcase.end_with? ext } end @generic = [] # Internal: Load the contents of `generic.yml` def self.load() return if @generic.any? data = YAML.load_file(File.expand_path("../../generic.yml", __FILE__)) @generic = data['extensions'] end end end end
Version data entries
28 entries across 28 versions & 1 rubygems