module Docks::Languages
Public Class Methods
<<(language)
click to toggle source
# File lib/docks/languages.rb, line 35 def self.<<(language) register(language) end
extension_for_file(file)
click to toggle source
# File lib/docks/languages.rb, line 73 def self.extension_for_file(file) file.to_s.split(".").last end
extensions()
click to toggle source
# File lib/docks/languages.rb, line 39 def self.extensions @extensions.values.inject([]) { |all, all_of_type| all.concat(all_of_type.to_a) } end
file_type(file)
click to toggle source
# File lib/docks/languages.rb, line 55 def self.file_type(file) extension = extension_for_file(file) type = nil @extensions.each do |extensions_type, the_extensions| if the_extensions.include?(extension) type = extensions_type break end end type end
language_for(file)
click to toggle source
# File lib/docks/languages.rb, line 15 def self.language_for(file) language = @languages[extension_for_file(file)] language.nil? ? nil : language.instance end
most_common_markup_language()
click to toggle source
# File lib/docks/languages.rb, line 48 def self.most_common_markup_language markup_files = Grouper.source_files_of_type(Types::Languages::MARKUP) return if markup_files.empty? most_common = markup_files.map { |file| extension_for_file(file) }.group_by { |ext| ext }.values.max_by(&:size).first language_for(most_common) end
register(language)
click to toggle source
# File lib/docks/languages.rb, line 24 def self.register(language) Array(language.extensions).each do |extension| @extensions[language.type].add(extension) @languages[extension] = language end Array(language.symbol_sources).each do |source| SymbolSources.register(source) end end
register_bundled_languages()
click to toggle source
# File lib/docks/languages.rb, line 20 def self.register_bundled_languages bundled_languages.each { |language| register(language) } end
supported_file?(file)
click to toggle source
# File lib/docks/languages.rb, line 69 def self.supported_file?(file) extensions.include?(extension_for_file(file)) end
Private Class Methods
bundled_languages()
click to toggle source
# File lib/docks/languages.rb, line 79 def self.bundled_languages if @bundled_languages.nil? bundled = constants.select do |const| klass = const_get(const) Class === klass && !(klass.eql?(Base)) end @bundled_languages = bundled.map { |const| const_get(const) } end @bundled_languages end
clean()
click to toggle source
# File lib/docks/languages.rb, line 92 def self.clean @languages = Hash.new @bundled_languages = nil @extensions = Types::Languages.constants.inject(Hash.new) do |exts, const| exts[Types::Languages.const_get(const)] = Set.new exts end end