52 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /*
 | |
| Language: Thrift
 | |
| Author: Oleg Efimov <efimovov@gmail.com>
 | |
| Description: Thrift message definition format
 | |
| Website: https://thrift.apache.org
 | |
| Category: protocols
 | |
| */
 | |
| 
 | |
| function thrift(hljs) {
 | |
|   const BUILT_IN_TYPES = 'bool byte i16 i32 i64 double string binary';
 | |
|   return {
 | |
|     name: 'Thrift',
 | |
|     keywords: {
 | |
|       keyword:
 | |
|         'namespace const typedef struct enum service exception void oneway set list map required optional',
 | |
|       built_in:
 | |
|         BUILT_IN_TYPES,
 | |
|       literal:
 | |
|         'true false'
 | |
|     },
 | |
|     contains: [
 | |
|       hljs.QUOTE_STRING_MODE,
 | |
|       hljs.NUMBER_MODE,
 | |
|       hljs.C_LINE_COMMENT_MODE,
 | |
|       hljs.C_BLOCK_COMMENT_MODE,
 | |
|       {
 | |
|         className: 'class',
 | |
|         beginKeywords: 'struct enum service exception',
 | |
|         end: /\{/,
 | |
|         illegal: /\n/,
 | |
|         contains: [
 | |
|           hljs.inherit(hljs.TITLE_MODE, {
 | |
|             // hack: eating everything after the first title
 | |
|             starts: {
 | |
|               endsWithParent: true,
 | |
|               excludeEnd: true
 | |
|             }
 | |
|           })
 | |
|         ]
 | |
|       },
 | |
|       {
 | |
|         begin: '\\b(set|list|map)\\s*<',
 | |
|         end: '>',
 | |
|         keywords: BUILT_IN_TYPES,
 | |
|         contains: [ 'self' ]
 | |
|       }
 | |
|     ]
 | |
|   };
 | |
| }
 | |
| 
 | |
| module.exports = thrift;
 |