mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	| @@ -333,5 +333,11 @@ module Linguist | ||||
|         Language["GAS"] | ||||
|       end | ||||
|     end | ||||
|  | ||||
|     disambiguate "xBase", "Charity" do |data| | ||||
|       if /^\s*#\s*(if|ifdef|ifndef|define|command|xcommand|translate|xtranslate|include|pragma|undef)\b/i.match(data) | ||||
|         Language["xBase"] | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| end | ||||
|   | ||||
| @@ -501,6 +501,13 @@ Chapel: | ||||
|   - .chpl | ||||
|   ace_mode: text | ||||
|  | ||||
| Charity: | ||||
|   type: programming | ||||
|   extensions: | ||||
|     - .ch | ||||
|   tm_scope: none | ||||
|   ace_mode: text | ||||
|  | ||||
| ChucK: | ||||
|   type: programming | ||||
|   extensions: | ||||
|   | ||||
							
								
								
									
										6
									
								
								samples/Charity/example.ch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								samples/Charity/example.ch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | ||||
| % | ||||
| %   Some very badly written Charity | ||||
| % | ||||
|  | ||||
| data LA(A) -> D = ss: A -> D | ||||
|                 | ff: -> D. | ||||
							
								
								
									
										30
									
								
								samples/xBase/sample.ch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								samples/xBase/sample.ch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,30 @@ | ||||
| #ifndef __HARBOUR__ | ||||
|    #ifndef __XPP__ | ||||
|       #ifndef __CLIP__ | ||||
|          #ifndef FlagShip | ||||
|             #define __CLIPPER__ | ||||
|          #endif | ||||
|       #endif | ||||
|    #endif | ||||
| #endif | ||||
|  | ||||
| /* File create flags */ | ||||
| #define FC_NORMAL          0  /* No file attributes are set */ | ||||
| #define FC_READONLY        1 | ||||
| #define FC_HIDDEN          2 | ||||
| #define FC_SYSTEM          4 | ||||
|  | ||||
| // New-style comment | ||||
| #command SET DELETED <x:ON,OFF,&>      => Set( _SET_DELETED, <(x)> ) | ||||
| #command SET DELETED (<x>)             => Set( _SET_DELETED, <x> ) | ||||
| #command @ <row>, <col> SAY <exp> [PICTURE <pic>] [COLOR <clr>] => ; | ||||
|          DevPos( <row>, <col> ) ; DevOutPict( <exp>, <pic> [, <clr>] ) | ||||
|           | ||||
| #command ENDIF <*x*> => endif | ||||
|  | ||||
| #ifdef __CLIPPER__    | ||||
|    #xtranslate hb_MemoWrit( [<x,...>] )  => MemoWrit( <x> ) | ||||
|    #xtranslate hb_dbExists( <t> )        => File( <t> ) | ||||
|    #xtranslate hb_dbPack()               => __dbPack() | ||||
|    #xtranslate hb_default( @<v>, <x> )   => iif( StrTran( ValType( <v> ), "M", "C" ) == StrTran( ValType( <x> ), "M", "C" ),, <v> := <x>, ) | ||||
| #endif | ||||
| @@ -22,6 +22,17 @@ class TestHeuristcs < Minitest::Test | ||||
|     assert_equal [], results | ||||
|   end | ||||
|  | ||||
|   def assert_heuristics(hash) | ||||
|     candidates = hash.keys.map { |l| Language[l] } | ||||
|  | ||||
|     hash.each do |language, blobs| | ||||
|       Array(blobs).each do |blob| | ||||
|         result = Heuristics.call(file_blob(blob), candidates) | ||||
|         assert_equal [Language[language]], result, "Failed for #{blob}" | ||||
|       end | ||||
|     end | ||||
|   end | ||||
|  | ||||
|   # Candidate languages = ["C++", "Objective-C"] | ||||
|   def test_obj_c_by_heuristics | ||||
|     # Only calling out '.h' filenames as these are the ones causing issues | ||||
| @@ -147,17 +158,6 @@ class TestHeuristcs < Minitest::Test | ||||
|     }) | ||||
|   end | ||||
|  | ||||
|   def assert_heuristics(hash) | ||||
|     candidates = hash.keys.map { |l| Language[l] } | ||||
|  | ||||
|     hash.each do |language, blobs| | ||||
|       Array(blobs).each do |blob| | ||||
|         result = Heuristics.call(file_blob(blob), candidates) | ||||
|         assert_equal [Language[language]], result, "Failed for #{blob}" | ||||
|       end | ||||
|     end | ||||
|   end | ||||
|  | ||||
|   def test_ls_by_heuristics | ||||
|     assert_heuristics({ | ||||
|       "LiveScript" => "LiveScript/hello.ls", | ||||
| @@ -171,4 +171,10 @@ class TestHeuristcs < Minitest::Test | ||||
|       "XML" => all_fixtures("XML", "*.ts") | ||||
|     }) | ||||
|   end | ||||
|  | ||||
|   def test_ch_by_heuristics | ||||
|     assert_heuristics({ | ||||
|       "xBase" => all_fixtures("xBase") | ||||
|     }) | ||||
|   end | ||||
| end | ||||
|   | ||||
		Reference in New Issue
	
	Block a user