From 7c0fe466a461a305169f4d4639a33e399f2d38cc Mon Sep 17 00:00:00 2001 From: Joshua Peek Date: Mon, 9 May 2011 23:12:37 -0500 Subject: [PATCH] Add Language#lexer --- lib/linguist/language.rb | 11 ++++++++--- test/test_language.rb | 7 +++++++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/lib/linguist/language.rb b/lib/linguist/language.rb index 20241232..70d8104c 100644 --- a/lib/linguist/language.rb +++ b/lib/linguist/language.rb @@ -44,15 +44,20 @@ module Linguist find_by_extension(ext) end - attr_reader :name, :extensions - def initialize(attributes = {}) @name = attributes[:name] || raise(ArgumentError, "missing name") + @lexer = attributes[:lexer] || default_lexer @extensions = attributes[:extensions] || [] end + + attr_reader :name, :lexer, :extensions + + def default_lexer + name.downcase.gsub(/\s/, '-') + end end YAML.load_file(File.expand_path("../extensions.yml", __FILE__)).each do |name, options| - Language.create(:name => name, :extensions => options[:ext]) + Language.create(:name => name, :lexer => options[:lexer], :extensions => options[:ext]) end end diff --git a/test/test_language.rb b/test/test_language.rb index c5d6e477..0b1d4bc4 100644 --- a/test/test_language.rb +++ b/test/test_language.rb @@ -44,6 +44,13 @@ class TestLanguage < Test::Unit::TestCase end end + def test_lexer + assert_equal 'perl', Language['Perl'].lexer + assert_equal 'python', Language['Python'].lexer + assert_equal 'ruby', Language['Ruby'].lexer + assert_equal 'cpp', Language['C++'].lexer + end + def test_extensions assert Language['Perl'].extensions.include?('.pl') assert Language['Python'].extensions.include?('.py')