mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 17:50:22 +00:00
Test all languages can by found by name
This commit is contained in:
@@ -4,6 +4,7 @@ require 'yaml'
|
||||
|
||||
module Linguist
|
||||
class Language
|
||||
@languages = []
|
||||
@name_index = {}
|
||||
@lexer_index = {}
|
||||
@extension_index = {}
|
||||
@@ -16,6 +17,8 @@ module Linguist
|
||||
def self.create(attributes = {})
|
||||
language = new(attributes)
|
||||
|
||||
@languages << language
|
||||
|
||||
# All Language names should be unique. Warn if there is a duplicate.
|
||||
if @name_index.key?(language.name.downcase)
|
||||
warn "Duplicate language name: #{language.name}"
|
||||
@@ -51,6 +54,13 @@ module Linguist
|
||||
language
|
||||
end
|
||||
|
||||
# Public: Get all Languages
|
||||
#
|
||||
# Returns an Array of Languages
|
||||
def self.all
|
||||
@languages
|
||||
end
|
||||
|
||||
# Public: Look up Language by its proper name.
|
||||
#
|
||||
# name - The case-insensitive String name of the Language
|
||||
@@ -122,7 +132,7 @@ module Linguist
|
||||
#
|
||||
# Returns an Array of Lexers.
|
||||
def self.popular
|
||||
@popular ||= @name_index.values.select(&:popular?).sort_by { |lang| lang.name.downcase }
|
||||
@popular ||= all.select(&:popular?).sort_by { |lang| lang.name.downcase }
|
||||
end
|
||||
|
||||
# Public: A List of non-popular languages
|
||||
@@ -134,7 +144,7 @@ module Linguist
|
||||
#
|
||||
# Returns an Array of Lexers.
|
||||
def self.unpopular
|
||||
@unpopular ||= @name_index.values.select(&:unpopular?).sort_by { |lang| lang.name.downcase }
|
||||
@unpopular ||= all.select(&:unpopular?).sort_by { |lang| lang.name.downcase }
|
||||
end
|
||||
|
||||
# Internal: Initialize a new Language
|
||||
|
||||
@@ -12,12 +12,26 @@ class TestLanguage < Test::Unit::TestCase
|
||||
assert_equal ruby, Language.find_by_name('RUBY')
|
||||
end
|
||||
|
||||
def test_find_all_by_name
|
||||
Language.all.each do |language|
|
||||
assert_equal language, Language.find_by_name(language.name)
|
||||
end
|
||||
end
|
||||
|
||||
def test_find_by_extension
|
||||
assert_equal Language['Ruby'], Language.find_by_extension('.rb')
|
||||
assert_equal Language['Ruby'], Language.find_by_extension('rb')
|
||||
assert_nil Language.find_by_extension('.kt')
|
||||
end
|
||||
|
||||
def test_find_all_by_extension
|
||||
Language.all.each do |language|
|
||||
language.extensions.each do |extension|
|
||||
assert_equal language, Language.find_by_extension(extension)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def test_find_by_lexer
|
||||
assert_equal Language['C'], Language.find_by_lexer('c')
|
||||
assert_equal Language['C++'], Language.find_by_lexer('cpp')
|
||||
|
||||
Reference in New Issue
Block a user