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"] |         Language["GAS"] | ||||||
|       end |       end | ||||||
|     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 | ||||||
| end | end | ||||||
|   | |||||||
| @@ -501,6 +501,13 @@ Chapel: | |||||||
|   - .chpl |   - .chpl | ||||||
|   ace_mode: text |   ace_mode: text | ||||||
|  |  | ||||||
|  | Charity: | ||||||
|  |   type: programming | ||||||
|  |   extensions: | ||||||
|  |     - .ch | ||||||
|  |   tm_scope: none | ||||||
|  |   ace_mode: text | ||||||
|  |  | ||||||
| ChucK: | ChucK: | ||||||
|   type: programming |   type: programming | ||||||
|   extensions: |   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 |     assert_equal [], results | ||||||
|   end |   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"] |   # Candidate languages = ["C++", "Objective-C"] | ||||||
|   def test_obj_c_by_heuristics |   def test_obj_c_by_heuristics | ||||||
|     # Only calling out '.h' filenames as these are the ones causing issues |     # Only calling out '.h' filenames as these are the ones causing issues | ||||||
| @@ -147,17 +158,6 @@ class TestHeuristcs < Minitest::Test | |||||||
|     }) |     }) | ||||||
|   end |   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 |   def test_ls_by_heuristics | ||||||
|     assert_heuristics({ |     assert_heuristics({ | ||||||
|       "LiveScript" => "LiveScript/hello.ls", |       "LiveScript" => "LiveScript/hello.ls", | ||||||
| @@ -171,4 +171,10 @@ class TestHeuristcs < Minitest::Test | |||||||
|       "XML" => all_fixtures("XML", "*.ts") |       "XML" => all_fixtures("XML", "*.ts") | ||||||
|     }) |     }) | ||||||
|   end |   end | ||||||
|  |  | ||||||
|  |   def test_ch_by_heuristics | ||||||
|  |     assert_heuristics({ | ||||||
|  |       "xBase" => all_fixtures("xBase") | ||||||
|  |     }) | ||||||
|  |   end | ||||||
| end | end | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user