mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	Merge branch 'master' into revert-2014-revert-1976-path-for-fileblob
This commit is contained in:
		| @@ -62,6 +62,7 @@ module Linguist | ||||
|       generated_parser? || | ||||
|       generated_net_docfile? || | ||||
|       generated_postscript? || | ||||
|       compiled_cython_file? || | ||||
|       generated_protocol_buffer_go? || | ||||
|       generated_protocol_buffer? || | ||||
|       generated_jni_header? || | ||||
| @@ -270,5 +271,17 @@ module Linguist | ||||
|       # VCR Cassettes have "recorded_with: VCR" in the second last line. | ||||
|       return lines[-2].include?("recorded_with: VCR") | ||||
|     end | ||||
|  | ||||
|     # Internal: Is this a compiled C/C++ file from Cython? | ||||
|     # | ||||
|     # Cython-compiled C/C++ files typically contain: | ||||
|     # /* Generated by Cython x.x.x on ... */ | ||||
|     # on the first line. | ||||
|     # | ||||
|     # Return true or false | ||||
|     def compiled_cython_file? | ||||
|       return false unless ['.c', '.cpp'].include? extname | ||||
|       return lines[0].include?("Generated by Cython") | ||||
|     end | ||||
|   end | ||||
| end | ||||
|   | ||||
| @@ -2213,6 +2213,7 @@ PLSQL: | ||||
|   - .pkb | ||||
|   - .pks | ||||
|   - .plb | ||||
|   - .plsql | ||||
|   - .sql | ||||
|  | ||||
| #Postgres  | ||||
|   | ||||
							
								
								
									
										93
									
								
								samples/PLSQL/prime#.plsql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										93
									
								
								samples/PLSQL/prime#.plsql
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,93 @@ | ||||
| create or replace package prime# | ||||
| is | ||||
|   invalid_argument_error                          exception; | ||||
|  | ||||
|   function nth ( | ||||
|     i_num                                         pls_integer | ||||
|   ) return number; | ||||
| end prime#; | ||||
| / | ||||
|  | ||||
| create or replace package body prime# | ||||
| is | ||||
|   type t_primes is table of number index by pls_integer; | ||||
|   b_primes                                       t_primes; | ||||
|  | ||||
|   function is_prime( | ||||
|     i_candidate                                   number | ||||
|   ) return boolean | ||||
|   is | ||||
|     l_num                           number := 1; | ||||
|     l_prime                         number; | ||||
|     l_result                        number; | ||||
|   begin | ||||
|   	if i_candidate < 2 then | ||||
|   	  return false; | ||||
|   	end if; | ||||
|  | ||||
|     loop | ||||
|       l_prime := nth(l_num); | ||||
|       if l_prime = i_candidate then | ||||
|         return true; | ||||
|       end if; | ||||
|  | ||||
|       l_result := i_candidate / l_prime; | ||||
|     	if l_result = ceil(l_result) then | ||||
|     	  return false; | ||||
|     	end if; | ||||
|  | ||||
|     	l_num := l_num + 1; | ||||
|     	exit when l_result <= l_prime; | ||||
|     end loop; | ||||
|  | ||||
|     return true; | ||||
|   end is_prime; | ||||
|  | ||||
|   function next ( | ||||
|     i_prime                                       pls_integer | ||||
|   ) return number | ||||
|   is | ||||
|     l_next                          number; | ||||
|   begin | ||||
|     l_next := i_prime + case mod(i_prime, 2) when 0 then 1 else 2 end; | ||||
|  | ||||
|     while not is_prime(l_next) loop | ||||
|       l_next := l_next + 2; | ||||
|     end loop; | ||||
|     return l_next; | ||||
|   end next; | ||||
| 	 | ||||
|   function nth ( | ||||
|     i_num                                         pls_integer | ||||
|   ) return number | ||||
|   is | ||||
|     l_index                         number := 2; | ||||
|     l_prime                         number := 3; | ||||
|   begin | ||||
|     if   i_num < 1 | ||||
|       or ceil(i_num) != i_num | ||||
|     then | ||||
|       raise invalid_argument_error; | ||||
|     end if; | ||||
|  | ||||
|     case i_num | ||||
|       when 1 then return 2; | ||||
|       else | ||||
|         if b_primes.exists(i_num) then | ||||
|           return b_primes(i_num); | ||||
|         end if; | ||||
|         while l_index < i_num loop | ||||
|           l_index := l_index + 1; | ||||
|           if b_primes.exists(l_index) then | ||||
|             l_prime := b_primes(l_index); | ||||
|           else | ||||
|             l_prime := next(l_prime); | ||||
|             b_primes(l_index) := l_prime; | ||||
|           end if; | ||||
|         end loop; | ||||
|         return l_prime; | ||||
|     end case; | ||||
|   end nth; | ||||
|  | ||||
| end prime#; | ||||
| / | ||||
| @@ -239,6 +239,10 @@ class TestBlob < Minitest::Test | ||||
|     # Godep saved dependencies | ||||
|     assert sample_blob("Godeps/Godeps.json").generated? | ||||
|     assert sample_blob("Godeps/_workspace/src/github.com/kr/s3/sign.go").generated? | ||||
|  | ||||
|     # Cython-generated C/C++ | ||||
|     assert sample_blob("C/sgd_fast.c").generated? | ||||
|     assert sample_blob("C++/wrapper_inner.cpp").generated? | ||||
|   end | ||||
|  | ||||
|   def test_vendored | ||||
|   | ||||
		Reference in New Issue
	
	Block a user