Adding basic find_by_id functionality to Language

This commit is contained in:
Arfon Smith
2016-09-13 11:09:05 -07:00
parent 1f43664a51
commit a3227c2c27
2 changed files with 26 additions and 4 deletions

View File

@@ -20,10 +20,11 @@ module Linguist
# #
# Languages are defined in `lib/linguist/languages.yml`. # Languages are defined in `lib/linguist/languages.yml`.
class Language class Language
@languages = [] @languages = []
@index = {} @index = {}
@name_index = {} @name_index = {}
@alias_index = {} @alias_index = {}
@language_id_index = {}
@extension_index = Hash.new { |h,k| h[k] = [] } @extension_index = Hash.new { |h,k| h[k] = [] }
@interpreter_index = Hash.new { |h,k| h[k] = [] } @interpreter_index = Hash.new { |h,k| h[k] = [] }
@@ -84,6 +85,8 @@ module Linguist
@filename_index[filename] << language @filename_index[filename] << language
end end
@language_id_index[language.language_id] = language
language language
end end
@@ -193,6 +196,19 @@ module Linguist
@interpreter_index[interpreter] @interpreter_index[interpreter]
end end
# Public: Look up Languages by its language_id.
#
# language_id - Integer of language_id
#
# Examples
#
# Language.find_by_id(100)
# # => [#<Language name="Elixir">]
#
# Returns the matching Language
def self.find_by_id(language_id)
@language_id_index[language_id.to_i]
end
# Public: Look up Language by its name. # Public: Look up Language by its name.
# #

View File

@@ -77,6 +77,12 @@ class TestLanguage < Minitest::Test
assert_equal 421, Language['xBase'].language_id assert_equal 421, Language['xBase'].language_id
end end
def test_find_by_id
assert_equal Language['Elixir'], Language.find_by_id(100)
assert_equal Language['Ruby'], Language.find_by_id(326)
assert_equal Language['xBase'], Language.find_by_id(421)
end
def test_groups def test_groups
# Test a couple identity cases # Test a couple identity cases
assert_equal Language['Perl'], Language['Perl'].group assert_equal Language['Perl'], Language['Perl'].group