mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 17:50:22 +00:00
Make Language.[] and Language.find_by(alias|name) ignore case
This makes it easier to find a Linguist::Language for a fenced code block in Markdown, where language names are often specified in lowercase.
This commit is contained in:
@@ -62,7 +62,7 @@ module Linguist
|
|||||||
end
|
end
|
||||||
|
|
||||||
# Language name index
|
# Language name index
|
||||||
@index[language.name] = @name_index[language.name] = language
|
@index[language.name.downcase] = @name_index[language.name.downcase] = language
|
||||||
|
|
||||||
language.aliases.each do |name|
|
language.aliases.each do |name|
|
||||||
# All Language aliases should be unique. Raise if there is a duplicate.
|
# All Language aliases should be unique. Raise if there is a duplicate.
|
||||||
@@ -70,7 +70,7 @@ module Linguist
|
|||||||
raise ArgumentError, "Duplicate alias: #{name}"
|
raise ArgumentError, "Duplicate alias: #{name}"
|
||||||
end
|
end
|
||||||
|
|
||||||
@index[name] = @alias_index[name] = language
|
@index[name.downcase] = @alias_index[name.downcase] = language
|
||||||
end
|
end
|
||||||
|
|
||||||
language.extensions.each do |extension|
|
language.extensions.each do |extension|
|
||||||
@@ -164,7 +164,7 @@ module Linguist
|
|||||||
#
|
#
|
||||||
# Returns the Language or nil if none was found.
|
# Returns the Language or nil if none was found.
|
||||||
def self.find_by_name(name)
|
def self.find_by_name(name)
|
||||||
@name_index[name]
|
@name_index[name.downcase]
|
||||||
end
|
end
|
||||||
|
|
||||||
# Public: Look up Language by one of its aliases.
|
# Public: Look up Language by one of its aliases.
|
||||||
@@ -178,7 +178,7 @@ module Linguist
|
|||||||
#
|
#
|
||||||
# Returns the Lexer or nil if none was found.
|
# Returns the Lexer or nil if none was found.
|
||||||
def self.find_by_alias(name)
|
def self.find_by_alias(name)
|
||||||
@alias_index[name]
|
@alias_index[name.downcase]
|
||||||
end
|
end
|
||||||
|
|
||||||
# Public: Look up Languages by filename.
|
# Public: Look up Languages by filename.
|
||||||
@@ -227,7 +227,7 @@ module Linguist
|
|||||||
#
|
#
|
||||||
# Returns the Language or nil if none was found.
|
# Returns the Language or nil if none was found.
|
||||||
def self.[](name)
|
def self.[](name)
|
||||||
@index[name]
|
@index[name.downcase]
|
||||||
end
|
end
|
||||||
|
|
||||||
# Public: A List of popular languages
|
# Public: A List of popular languages
|
||||||
|
|||||||
@@ -303,6 +303,21 @@ class TestLanguage < Test::Unit::TestCase
|
|||||||
assert_nil Language['defunkt']
|
assert_nil Language['defunkt']
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_find_ignores_case
|
||||||
|
assert_equal 'AGS Script', Language['ags script'].name
|
||||||
|
assert_equal 'AGS Script', Language['ags sCRIPT'].name
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_find_by_name_ignores_case
|
||||||
|
assert_equal 'AGS Script', Language.find_by_name('ags script').name
|
||||||
|
assert_equal 'AGS Script', Language.find_by_name('ags sCRIPT').name
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_find_by_alias_ignores_case
|
||||||
|
refute_includes Language['AGS Script'].aliases, 'AGS'
|
||||||
|
assert_equal 'AGS Script', Language.find_by_alias('AGS').name
|
||||||
|
end
|
||||||
|
|
||||||
def test_name
|
def test_name
|
||||||
assert_equal 'Perl', Language['Perl'].name
|
assert_equal 'Perl', Language['Perl'].name
|
||||||
assert_equal 'Python', Language['Python'].name
|
assert_equal 'Python', Language['Python'].name
|
||||||
|
|||||||
Reference in New Issue
Block a user