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
|
module Linguist
|
||||||
class Language
|
class Language
|
||||||
|
@languages = []
|
||||||
@name_index = {}
|
@name_index = {}
|
||||||
@lexer_index = {}
|
@lexer_index = {}
|
||||||
@extension_index = {}
|
@extension_index = {}
|
||||||
@@ -16,6 +17,8 @@ module Linguist
|
|||||||
def self.create(attributes = {})
|
def self.create(attributes = {})
|
||||||
language = new(attributes)
|
language = new(attributes)
|
||||||
|
|
||||||
|
@languages << language
|
||||||
|
|
||||||
# All Language names should be unique. Warn if there is a duplicate.
|
# All Language names should be unique. Warn if there is a duplicate.
|
||||||
if @name_index.key?(language.name.downcase)
|
if @name_index.key?(language.name.downcase)
|
||||||
warn "Duplicate language name: #{language.name}"
|
warn "Duplicate language name: #{language.name}"
|
||||||
@@ -51,6 +54,13 @@ module Linguist
|
|||||||
language
|
language
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Public: Get all Languages
|
||||||
|
#
|
||||||
|
# Returns an Array of Languages
|
||||||
|
def self.all
|
||||||
|
@languages
|
||||||
|
end
|
||||||
|
|
||||||
# Public: Look up Language by its proper name.
|
# Public: Look up Language by its proper name.
|
||||||
#
|
#
|
||||||
# name - The case-insensitive String name of the Language
|
# name - The case-insensitive String name of the Language
|
||||||
@@ -122,7 +132,7 @@ module Linguist
|
|||||||
#
|
#
|
||||||
# Returns an Array of Lexers.
|
# Returns an Array of Lexers.
|
||||||
def self.popular
|
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
|
end
|
||||||
|
|
||||||
# Public: A List of non-popular languages
|
# Public: A List of non-popular languages
|
||||||
@@ -134,7 +144,7 @@ module Linguist
|
|||||||
#
|
#
|
||||||
# Returns an Array of Lexers.
|
# Returns an Array of Lexers.
|
||||||
def self.unpopular
|
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
|
end
|
||||||
|
|
||||||
# Internal: Initialize a new Language
|
# Internal: Initialize a new Language
|
||||||
|
|||||||
@@ -12,12 +12,26 @@ class TestLanguage < Test::Unit::TestCase
|
|||||||
assert_equal ruby, Language.find_by_name('RUBY')
|
assert_equal ruby, Language.find_by_name('RUBY')
|
||||||
end
|
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
|
def test_find_by_extension
|
||||||
assert_equal Language['Ruby'], Language.find_by_extension('.rb')
|
assert_equal Language['Ruby'], Language.find_by_extension('.rb')
|
||||||
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')
|
assert_nil Language.find_by_extension('.kt')
|
||||||
end
|
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
|
def test_find_by_lexer
|
||||||
assert_equal Language['C'], Language.find_by_lexer('c')
|
assert_equal Language['C'], Language.find_by_lexer('c')
|
||||||
assert_equal Language['C++'], Language.find_by_lexer('cpp')
|
assert_equal Language['C++'], Language.find_by_lexer('cpp')
|
||||||
|
|||||||
Reference in New Issue
Block a user