mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	Test Perl before Turing when running heuristics (#3880)
* Test Perl before Turing when running heuristics * Revise order of Perl 5 and 6 in `.t` heuristic See: https://github.com/github/linguist/pull/3880#issuecomment-340319500 * Combine patterns for disambiguating Perl
This commit is contained in:
		@@ -73,7 +73,6 @@ module Linguist
 | 
				
			|||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Common heuristics
 | 
					    # Common heuristics
 | 
				
			||||||
    ObjectiveCRegex = /^\s*(@(interface|class|protocol|property|end|synchronised|selector|implementation)\b|#import\s+.+\.h[">])/
 | 
					 | 
				
			||||||
    CPlusPlusRegex = Regexp.union(
 | 
					    CPlusPlusRegex = Regexp.union(
 | 
				
			||||||
        /^\s*#\s*include <(cstdint|string|vector|map|list|array|bitset|queue|stack|forward_list|unordered_map|unordered_set|(i|o|io)stream)>/,
 | 
					        /^\s*#\s*include <(cstdint|string|vector|map|list|array|bitset|queue|stack|forward_list|unordered_map|unordered_set|(i|o|io)stream)>/,
 | 
				
			||||||
        /^\s*template\s*</,
 | 
					        /^\s*template\s*</,
 | 
				
			||||||
@@ -82,6 +81,9 @@ module Linguist
 | 
				
			|||||||
        /^[ \t]*(class|(using[ \t]+)?namespace)\s+\w+/,
 | 
					        /^[ \t]*(class|(using[ \t]+)?namespace)\s+\w+/,
 | 
				
			||||||
        /^[ \t]*(private|public|protected):$/,
 | 
					        /^[ \t]*(private|public|protected):$/,
 | 
				
			||||||
        /std::\w+/)
 | 
					        /std::\w+/)
 | 
				
			||||||
 | 
					    ObjectiveCRegex = /^\s*(@(interface|class|protocol|property|end|synchronised|selector|implementation)\b|#import\s+.+\.h[">])/
 | 
				
			||||||
 | 
					    Perl5Regex = /\buse\s+(?:strict\b|v?5\.)/
 | 
				
			||||||
 | 
					    Perl6Regex = /^\s*(?:use\s+v6\b|\bmodule\b|\b(?:my\s+)?class\b)/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    disambiguate ".as" do |data|
 | 
					    disambiguate ".as" do |data|
 | 
				
			||||||
      if /^\s*(package\s+[a-z0-9_\.]+|import\s+[a-zA-Z0-9_\.]+;|class\s+[A-Za-z0-9_]+\s+extends\s+[A-Za-z0-9_]+)/.match(data)
 | 
					      if /^\s*(package\s+[a-z0-9_\.]+|import\s+[a-zA-Z0-9_\.]+;|class\s+[A-Za-z0-9_]+\s+extends\s+[A-Za-z0-9_]+)/.match(data)
 | 
				
			||||||
@@ -359,17 +361,17 @@ module Linguist
 | 
				
			|||||||
    disambiguate ".pl" do |data|
 | 
					    disambiguate ".pl" do |data|
 | 
				
			||||||
      if /^[^#]*:-/.match(data)
 | 
					      if /^[^#]*:-/.match(data)
 | 
				
			||||||
        Language["Prolog"]
 | 
					        Language["Prolog"]
 | 
				
			||||||
      elsif /use strict|use\s+v?5\./.match(data)
 | 
					      elsif Perl5Regex.match(data)
 | 
				
			||||||
        Language["Perl"]
 | 
					        Language["Perl"]
 | 
				
			||||||
      elsif /^(use v6|(my )?class|module)/.match(data)
 | 
					      elsif Perl6Regex.match(data)
 | 
				
			||||||
        Language["Perl 6"]
 | 
					        Language["Perl 6"]
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    disambiguate ".pm" do |data|
 | 
					    disambiguate ".pm" do |data|
 | 
				
			||||||
      if /\buse\s+(?:strict\b|v?5\.)/.match(data)
 | 
					      if Perl5Regex.match(data)
 | 
				
			||||||
        Language["Perl"]
 | 
					        Language["Perl"]
 | 
				
			||||||
      elsif /^\s*(?:use\s+v6\s*;|(?:\bmy\s+)?class|module)\b/.match(data)
 | 
					      elsif Perl6Regex.match(data)
 | 
				
			||||||
        Language["Perl 6"]
 | 
					        Language["Perl 6"]
 | 
				
			||||||
      elsif /^\s*\/\* XPM \*\//.match(data)
 | 
					      elsif /^\s*\/\* XPM \*\//.match(data)
 | 
				
			||||||
        Language["XPM"]
 | 
					        Language["XPM"]
 | 
				
			||||||
@@ -459,12 +461,12 @@ module Linguist
 | 
				
			|||||||
    end
 | 
					    end
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    disambiguate ".t" do |data|
 | 
					    disambiguate ".t" do |data|
 | 
				
			||||||
      if /^\s*%[ \t]+|^\s*var\s+\w+\s*:=\s*\w+/.match(data)
 | 
					      if Perl5Regex.match(data)
 | 
				
			||||||
        Language["Turing"]
 | 
					 | 
				
			||||||
      elsif /^\s*(?:use\s+v6\s*;|\bmodule\b|\b(?:my\s+)?class\b)/.match(data)
 | 
					 | 
				
			||||||
        Language["Perl 6"]
 | 
					 | 
				
			||||||
      elsif /\buse\s+(?:strict\b|v?5\.)/.match(data)
 | 
					 | 
				
			||||||
        Language["Perl"]
 | 
					        Language["Perl"]
 | 
				
			||||||
 | 
					      elsif Perl6Regex.match(data)
 | 
				
			||||||
 | 
					        Language["Perl 6"]
 | 
				
			||||||
 | 
					      elsif /^\s*%[ \t]+|^\s*var\s+\w+\s*:=\s*\w+/.match(data)
 | 
				
			||||||
 | 
					        Language["Turing"]
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user