From a3227c2c27f9a3b76ebae727c3eb2386e3aa3582 Mon Sep 17 00:00:00 2001 From: Arfon Smith Date: Tue, 13 Sep 2016 11:09:05 -0700 Subject: [PATCH] Adding basic find_by_id functionality to Language --- lib/linguist/language.rb | 24 ++++++++++++++++++++---- test/test_language.rb | 6 ++++++ 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/lib/linguist/language.rb b/lib/linguist/language.rb index 44c08401..7ae48b17 100644 --- a/lib/linguist/language.rb +++ b/lib/linguist/language.rb @@ -20,10 +20,11 @@ module Linguist # # Languages are defined in `lib/linguist/languages.yml`. class Language - @languages = [] - @index = {} - @name_index = {} - @alias_index = {} + @languages = [] + @index = {} + @name_index = {} + @alias_index = {} + @language_id_index = {} @extension_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 end + @language_id_index[language.language_id] = language + language end @@ -193,6 +196,19 @@ module Linguist @interpreter_index[interpreter] end + # Public: Look up Languages by its language_id. + # + # language_id - Integer of language_id + # + # Examples + # + # Language.find_by_id(100) + # # => [#] + # + # 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. # diff --git a/test/test_language.rb b/test/test_language.rb index 3db33b54..58430455 100644 --- a/test/test_language.rb +++ b/test/test_language.rb @@ -77,6 +77,12 @@ class TestLanguage < Minitest::Test assert_equal 421, Language['xBase'].language_id 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 # Test a couple identity cases assert_equal Language['Perl'], Language['Perl'].group