mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	Remove old language disambiguation functions
This commit is contained in:
		| @@ -446,17 +446,9 @@ module Linguist | |||||||
|  |  | ||||||
|     # Internal: Disambiguates between multiple language extensions. |     # Internal: Disambiguates between multiple language extensions. | ||||||
|     # |     # | ||||||
|     # Delegates to "guess_EXTENSION_language". |  | ||||||
|     # |  | ||||||
|     # Please add additional test coverage to |  | ||||||
|     # `test/test_blob.rb#test_language` if you add another method. |  | ||||||
|     # |  | ||||||
|     # Returns a Language or nil. |     # Returns a Language or nil. | ||||||
|     def disambiguate_extension_language |     def disambiguate_extension_language | ||||||
|       if Language.ambiguous?(extname) |       if Language.ambiguous?(extname) | ||||||
|         # name = "guess_#{extname.sub(/^\./, '')}_language" |  | ||||||
|         # send(name) if respond_to?(name) |  | ||||||
|  |  | ||||||
|         possible_languages = Language.all.select { |l| l.extensions.include?(extname) } |         possible_languages = Language.all.select { |l| l.extensions.include?(extname) } | ||||||
|         if possible_languages.any? |         if possible_languages.any? | ||||||
|           if result = Classifier.instance.classify(data, possible_languages).first |           if result = Classifier.instance.classify(data, possible_languages).first | ||||||
| @@ -466,142 +458,6 @@ module Linguist | |||||||
|       end |       end | ||||||
|     end |     end | ||||||
|  |  | ||||||
|     # Internal: Guess language of .cls files |  | ||||||
|     # |  | ||||||
|     # Returns a Language. |  | ||||||
|     def guess_cls_language |  | ||||||
|       if lines.grep(/^(%|\\)/).any? |  | ||||||
|         Language['TeX'] |  | ||||||
|       elsif lines.grep(/^\s*(CLASS|METHOD|INTERFACE).*:\s*/i).any? || lines.grep(/^\s*(USING|DEFINE)/i).any? |  | ||||||
|         Language['OpenEdge ABL'] |  | ||||||
|       elsif lines.grep(/\{$/).any? || lines.grep(/\}$/).any? |  | ||||||
|         Language['Apex'] |  | ||||||
|       elsif lines.grep(/^(\'\*|Attribute|Option|Sub|Private|Protected|Public|Friend)/i).any? |  | ||||||
|         Language['Visual Basic'] |  | ||||||
|       else |  | ||||||
|         # The most common language should be the fallback |  | ||||||
|         Language['TeX'] |  | ||||||
|       end |  | ||||||
|     end |  | ||||||
|  |  | ||||||
|     # Internal: Guess language of header files (.h). |  | ||||||
|     # |  | ||||||
|     # Returns a Language. |  | ||||||
|     def guess_h_language |  | ||||||
|       if lines.grep(/^@(interface|property|private|public|end)/).any? |  | ||||||
|         Language['Objective-C'] |  | ||||||
|       elsif lines.grep(/^class |^\s+(public|protected|private):/).any? |  | ||||||
|         Language['C++'] |  | ||||||
|       else |  | ||||||
|         Language['C'] |  | ||||||
|       end |  | ||||||
|     end |  | ||||||
|  |  | ||||||
|     # Internal: Guess language of .m files. |  | ||||||
|     # |  | ||||||
|     # Objective-C heuristics: |  | ||||||
|     # * Keywords  ("#import", "#include", "#ifdef", #define, "@end") or "//" and opening "\*" comments |  | ||||||
|     # |  | ||||||
|     # Matlab heuristics: |  | ||||||
|     # * Leading "function " of "classdef " keyword |  | ||||||
|     # * "%" comments |  | ||||||
|     # |  | ||||||
|     # Note: All "#" keywords, e.g., "#import", are guaranteed to be Objective-C. Because the ampersand |  | ||||||
|     # is used to created function handles and anonymous functions in Matlab, most "@" keywords are not |  | ||||||
|     # safe heuristics. However, "end" is a reserved term in Matlab and can't be used to create a valid |  | ||||||
|     # function handle. Because @end is required to close any @implementation, @property, @interface, |  | ||||||
|     # @synthesize, etc. directive in Objective-C, only @end needs to be checked for. |  | ||||||
|     # |  | ||||||
|     # Returns a Language. |  | ||||||
|     def guess_m_language |  | ||||||
|       # Objective-C keywords or comments |  | ||||||
|       if lines.grep(/^#(import|include|ifdef|define)|@end/).any? || lines.grep(/^\s*\/\//).any? || lines.grep(/^\s*\/\*/).any? |  | ||||||
|         Language['Objective-C'] |  | ||||||
|  |  | ||||||
|       # Matlab file function or class or comments |  | ||||||
|       elsif lines.any? && lines.first.match(/^\s*(function |classdef )/) || lines.grep(/^\s*%/).any? |  | ||||||
|         Language['Matlab'] |  | ||||||
|  |  | ||||||
|       # Fallback to Objective-C, don't want any Matlab false positives |  | ||||||
|       else |  | ||||||
|         Language['Objective-C'] |  | ||||||
|       end |  | ||||||
|     end |  | ||||||
|  |  | ||||||
|     # Internal: Guess language of .pl files |  | ||||||
|     # |  | ||||||
|     # The rules for disambiguation are: |  | ||||||
|     # |  | ||||||
|     # 1. Many perl files begin with a shebang |  | ||||||
|     # 2. Most Prolog source files have a rule somewhere (marked by the :- operator) |  | ||||||
|     # 3. Default to Perl, because it is more popular |  | ||||||
|     # |  | ||||||
|     # Returns a Language. |  | ||||||
|     def guess_pl_language |  | ||||||
|       if shebang_script == 'perl' |  | ||||||
|         Language['Perl'] |  | ||||||
|       elsif lines.grep(/:-/).any? |  | ||||||
|         Language['Prolog'] |  | ||||||
|       else |  | ||||||
|         Language['Perl'] |  | ||||||
|       end |  | ||||||
|     end |  | ||||||
|  |  | ||||||
|     # Internal: Guess language of .r files. |  | ||||||
|     # |  | ||||||
|     # Returns a Language. |  | ||||||
|     def guess_r_language |  | ||||||
|       if lines.grep(/(rebol|(:\s+func|make\s+object!|^\s*context)\s*\[)/i).any? |  | ||||||
|         Language['Rebol'] |  | ||||||
|       else |  | ||||||
|         Language['R'] |  | ||||||
|       end |  | ||||||
|     end |  | ||||||
|  |  | ||||||
|     # Internal: Guess language of .t files. |  | ||||||
|     # |  | ||||||
|     # Returns a Language. |  | ||||||
|     def guess_t_language |  | ||||||
|       score = 0 |  | ||||||
|       score += 1 if lines.grep(/^% /).any? |  | ||||||
|       score += data.gsub(/ := /).count |  | ||||||
|       score += data.gsub(/proc |procedure |fcn |function /).count |  | ||||||
|       score += data.gsub(/var \w+: \w+/).count |  | ||||||
|  |  | ||||||
|       # Tell-tale signs its gotta be Perl |  | ||||||
|       if lines.grep(/^(my )?(sub |\$|@|%)\w+/).any? |  | ||||||
|         score = 0 |  | ||||||
|       end |  | ||||||
|  |  | ||||||
|       if score >= 3 |  | ||||||
|         Language['Turing'] |  | ||||||
|       else |  | ||||||
|         Language['Perl'] |  | ||||||
|       end |  | ||||||
|     end |  | ||||||
|  |  | ||||||
|     # Internal: Guess language of .v files. |  | ||||||
|     # |  | ||||||
|     # Returns a Language |  | ||||||
|     def guess_v_language |  | ||||||
|       if lines.grep(/^(\/\*|\/\/|module|parameter|input|output|wire|reg|always|initial|begin|\`)/).any? |  | ||||||
|         Language['Verilog'] |  | ||||||
|       else |  | ||||||
|         Language['Coq'] |  | ||||||
|       end |  | ||||||
|     end |  | ||||||
|  |  | ||||||
|     # Internal: Guess language of .gsp files. |  | ||||||
|     # |  | ||||||
|     # Returns a Language. |  | ||||||
|     def guess_gsp_language |  | ||||||
|       if lines.grep(/<%|<%@|\$\{|<%|<g:|<meta name="layout"|<r:/).any? |  | ||||||
|         Language['Groovy Server Pages'] |  | ||||||
|       else |  | ||||||
|         Language['Gosu'] |  | ||||||
|       end |  | ||||||
|     end |  | ||||||
|  |  | ||||||
|     # Internal: Guess language from the first line. |     # Internal: Guess language from the first line. | ||||||
|     # |     # | ||||||
|     # Look for leading "<?php" in Drupal files |     # Look for leading "<?php" in Drupal files | ||||||
| @@ -710,12 +566,5 @@ module Linguist | |||||||
|         '' |         '' | ||||||
|       end |       end | ||||||
|     end |     end | ||||||
|  |  | ||||||
|     Language.overridden_extensions.each do |extension| |  | ||||||
|       name = "guess_#{extension.sub(/^\./, '')}_language".to_sym |  | ||||||
|       unless instance_methods.map(&:to_sym).include?(name) |  | ||||||
|         raise NotImplementedError, "Language##{name} was not defined" |  | ||||||
|       end |  | ||||||
|     end |  | ||||||
|   end |   end | ||||||
| end | end | ||||||
|   | |||||||
| @@ -26,13 +26,6 @@ module Linguist | |||||||
|       @overrides.include?(extension) |       @overrides.include?(extension) | ||||||
|     end |     end | ||||||
|  |  | ||||||
|     # Internal: Return overridden extensions. |  | ||||||
|     # |  | ||||||
|     # Returns extensions Array. |  | ||||||
|     def self.overridden_extensions |  | ||||||
|       @overrides.keys |  | ||||||
|     end |  | ||||||
|  |  | ||||||
|     # Internal: Create a new Language object |     # Internal: Create a new Language object | ||||||
|     # |     # | ||||||
|     # attributes - A hash of attributes |     # attributes - A hash of attributes | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user