mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	Add list of popular languages
This commit is contained in:
		| @@ -43,6 +43,14 @@ module Linguist | |||||||
|       @lexer_index.to_a |       @lexer_index.to_a | ||||||
|     end |     end | ||||||
|  |  | ||||||
|  |     def self.popular | ||||||
|  |       @name_index.values.select(&:popular?).sort_by { |lang| lang.name.downcase } | ||||||
|  |     end | ||||||
|  |  | ||||||
|  |     def self.unpopular | ||||||
|  |       @name_index.values.select(&:unpopular?).sort_by { |lang| lang.name.downcase } | ||||||
|  |     end | ||||||
|  |  | ||||||
|     def self.lexer2name(lexer) |     def self.lexer2name(lexer) | ||||||
|       if language = find_by_lexer(lexer) |       if language = find_by_lexer(lexer) | ||||||
|         language.name |         language.name | ||||||
| @@ -59,6 +67,7 @@ module Linguist | |||||||
|       @name       = attributes[:name] || raise(ArgumentError, "missing name") |       @name       = attributes[:name] || raise(ArgumentError, "missing name") | ||||||
|       @lexer      = attributes[:lexer] || default_lexer |       @lexer      = attributes[:lexer] || default_lexer | ||||||
|       @extensions = attributes[:extensions] || [] |       @extensions = attributes[:extensions] || [] | ||||||
|  |       @popular    = attributes[:popular] || false | ||||||
|     end |     end | ||||||
|  |  | ||||||
|     attr_reader :name, :lexer, :extensions |     attr_reader :name, :lexer, :extensions | ||||||
| @@ -71,6 +80,14 @@ module Linguist | |||||||
|       lexer == default_lexer |       lexer == default_lexer | ||||||
|     end |     end | ||||||
|  |  | ||||||
|  |     def popular? | ||||||
|  |       @popular | ||||||
|  |     end | ||||||
|  |  | ||||||
|  |     def unpopular? | ||||||
|  |       !popular? | ||||||
|  |     end | ||||||
|  |  | ||||||
|     def ==(other) |     def ==(other) | ||||||
|       eql?(other) |       eql?(other) | ||||||
|     end |     end | ||||||
| @@ -80,7 +97,14 @@ module Linguist | |||||||
|     end |     end | ||||||
|   end |   end | ||||||
|  |  | ||||||
|  |   popular = YAML.load_file(File.expand_path("../popular.yml", __FILE__)) | ||||||
|  |  | ||||||
|   YAML.load_file(File.expand_path("../extensions.yml", __FILE__)).each do |name, options| |   YAML.load_file(File.expand_path("../extensions.yml", __FILE__)).each do |name, options| | ||||||
|     Language.create(:name => name, :lexer => options[:lexer], :extensions => options[:ext]) |     Language.create( | ||||||
|  |       :name => name, | ||||||
|  |       :lexer => options[:lexer], | ||||||
|  |       :extensions => options[:ext], | ||||||
|  |       :popular => popular.include?(name) | ||||||
|  |     ) | ||||||
|   end |   end | ||||||
| end | end | ||||||
|   | |||||||
							
								
								
									
										25
									
								
								lib/linguist/popular.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								lib/linguist/popular.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,25 @@ | |||||||
|  | - ActionScript | ||||||
|  | - Bash | ||||||
|  | - C | ||||||
|  | - Common Lisp | ||||||
|  | - C# | ||||||
|  | - C++ | ||||||
|  | - CSS | ||||||
|  | - Diff | ||||||
|  | - Emacs Lisp | ||||||
|  | - Erlang | ||||||
|  | - Haskell | ||||||
|  | - HTML | ||||||
|  | - Java | ||||||
|  | - JavaScript | ||||||
|  | - Lua | ||||||
|  | - Objective-C | ||||||
|  | - Perl | ||||||
|  | - PHP | ||||||
|  | - Python | ||||||
|  | - Ruby | ||||||
|  | - Scala | ||||||
|  | - Scheme | ||||||
|  | - SQL | ||||||
|  | - TeX | ||||||
|  | - XML | ||||||
| @@ -73,4 +73,12 @@ class TestLanguage < Test::Unit::TestCase | |||||||
|     assert !Language['Ruby'].eql?(Language['Python']) |     assert !Language['Ruby'].eql?(Language['Python']) | ||||||
|     assert !Language['Ruby'].eql?(Language.new(:name => 'Ruby')) |     assert !Language['Ruby'].eql?(Language.new(:name => 'Ruby')) | ||||||
|   end |   end | ||||||
|  |  | ||||||
|  |   def test_popular | ||||||
|  |     assert Language['Ruby'].popular? | ||||||
|  |     assert Language['Perl'].popular? | ||||||
|  |     assert Language['Python'].popular? | ||||||
|  |     assert Language['Assembly'].unpopular? | ||||||
|  |     assert Language['Brainfuck'].unpopular? | ||||||
|  |   end | ||||||
| end | end | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user