Class: Linguist::Strategy::Extension
- Inherits:
-
Object
- Object
- Linguist::Strategy::Extension
- Defined in:
- lib/linguist/strategy/extension.rb
Overview
Detects language based on extension
Class Method Summary collapse
-
.call(blob, candidates) ⇒ Object
Public: Use the file extension to detect the blob’s language.
-
.generic?(filename) ⇒ Boolean
Public: Return true if filename uses a generic extension.
-
.load ⇒ Object
Internal: Load the contents of ‘generic.yml`.
Class Method Details
.call(blob, candidates) ⇒ Object
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.
20 21 22 23 24 |
# File 'lib/linguist/strategy/extension.rb', line 20 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 |
.generic?(filename) ⇒ Boolean
Public: Return true if filename uses a generic extension.
27 28 29 30 |
# File 'lib/linguist/strategy/extension.rb', line 27 def self.generic?(filename) self.load @generic.any? { |ext| filename.downcase.end_with? ext } end |
.load ⇒ Object
Internal: Load the contents of ‘generic.yml`
35 36 37 38 39 |
# File 'lib/linguist/strategy/extension.rb', line 35 def self.load() return if @generic.any? data = YAML.load_file(File.("../../generic.yml", __FILE__)) @generic = data['extensions'] end |