mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	Allow POD with Perl shebangs (#3735)
* Allow perl interpreter for Pod too * Use precise dist * This is a tautology * Update heuristic to accept candidate input * Minor rename
This commit is contained in:
		| @@ -31,3 +31,4 @@ git: | ||||
|   depth: 3 | ||||
|  | ||||
| cache: bundler | ||||
| dist: precise | ||||
|   | ||||
| @@ -17,9 +17,8 @@ module Linguist | ||||
|       data = blob.data | ||||
|  | ||||
|       @heuristics.each do |heuristic| | ||||
|         if heuristic.matches?(blob.name) | ||||
|           languages = Array(heuristic.call(data)) | ||||
|           return languages if languages.any? || languages.all? { |l| candidates.include?(l) } | ||||
|         if heuristic.matches?(blob.name, candidates) | ||||
|           return Array(heuristic.call(data)) | ||||
|         end | ||||
|       end | ||||
|  | ||||
| @@ -28,7 +27,8 @@ module Linguist | ||||
|  | ||||
|     # Internal: Define a new heuristic. | ||||
|     # | ||||
|     # languages - String names of languages to disambiguate. | ||||
|     # exts_and_langs - String names of file extensions and languages to | ||||
|     #                  disambiguate. | ||||
|     # heuristic - Block which takes data as an argument and returns a Language or nil. | ||||
|     # | ||||
|     # Examples | ||||
| @@ -41,23 +41,28 @@ module Linguist | ||||
|     #       end | ||||
|     #     end | ||||
|     # | ||||
|     def self.disambiguate(*extensions, &heuristic) | ||||
|       @heuristics << new(extensions, &heuristic) | ||||
|     def self.disambiguate(*exts_and_langs, &heuristic) | ||||
|       @heuristics << new(exts_and_langs, &heuristic) | ||||
|     end | ||||
|  | ||||
|     # Internal: Array of defined heuristics | ||||
|     @heuristics = [] | ||||
|  | ||||
|     # Internal | ||||
|     def initialize(extensions, &heuristic) | ||||
|       @extensions = extensions | ||||
|     def initialize(exts_and_langs, &heuristic) | ||||
|       @exts_and_langs, @candidates = exts_and_langs.partition {|e| e =~ /\A\./} | ||||
|       @heuristic = heuristic | ||||
|     end | ||||
|  | ||||
|     # Internal: Check if this heuristic matches the candidate languages. | ||||
|     def matches?(filename) | ||||
|     # Internal: Check if this heuristic matches the candidate filenames or | ||||
|     # languages. | ||||
|     def matches?(filename, candidates) | ||||
|       filename = filename.downcase | ||||
|       @extensions.any? { |ext| filename.end_with?(ext) } | ||||
|       candidates = candidates.compact.map(&:name) | ||||
|       @exts_and_langs.any? { |ext| filename.end_with?(ext) } || | ||||
|         (candidates.any? && | ||||
|          (@candidates - candidates == [] && | ||||
|           candidates - @candidates == [])) | ||||
|     end | ||||
|  | ||||
|     # Internal: Perform the heuristic | ||||
| @@ -354,7 +359,7 @@ module Linguist | ||||
|       end | ||||
|     end | ||||
|  | ||||
|     disambiguate ".pod" do |data| | ||||
|     disambiguate ".pod", "Pod", "Perl" do |data| | ||||
|       if /^=\w+\b/.match(data) | ||||
|         Language["Pod"] | ||||
|       else | ||||
|   | ||||
| @@ -3300,6 +3300,8 @@ Pod: | ||||
|   wrap: true | ||||
|   extensions: | ||||
|   - ".pod" | ||||
|   interpreters: | ||||
|   - perl | ||||
|   tm_scope: none | ||||
|   language_id: 288 | ||||
| PogoScript: | ||||
|   | ||||
							
								
								
									
										2074
									
								
								samples/Pod/feedgnuplot
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2074
									
								
								samples/Pod/feedgnuplot
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Reference in New Issue
	
	Block a user