module Filelang::Language
Private Class Methods
check_format_of_extensions!(extensions)
click to toggle source
# File lib/filelang/language.rb, line 48 def check_format_of_extensions!(extensions) extensions.each do |ext| raise ArgumentError, "Extension '#{ext}' is missing '.'" if ext !~ /^\./ end end
check_format_of_language!(language)
click to toggle source
# File lib/filelang/language.rb, line 54 def check_format_of_language!(language) raise ArgumentError, "Language '#{language}' has whitespace" if language.match(/\s/) end
get_extensions(path)
click to toggle source
# File lib/filelang/language.rb, line 22 def get_extensions(path) *_, filename = path.split("/") _, *extensions = filename.downcase.split(".") extensions.map!.with_index do |segment, index| "." + extensions[index..-1].join(".") end extensions.sort_by(&:length) end
load_languages()
click to toggle source
# File lib/filelang/language.rb, line 35 def load_languages languages = YAML.load_file(File.expand_path("../language.yml", __FILE__)) languages.each do |lang, extensions| check_format_of_language! lang check_format_of_extensions! extensions extensions.each do |ext| @@extension_mapping[ext.to_sym] << lang.to_sym end end end
Public Instance Methods
file_language(path)
click to toggle source
# File lib/filelang/language.rb, line 8 def file_language(path) extensions = Filelang::Language.send :get_extensions, path languages = [] extensions.each do |ext| languages |= @@extension_mapping[ext.to_sym].to_a unless @@extension_mapping[ext.to_sym].nil? end languages end