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;
 |