65 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /*
 | ||
| Language: Cap’n Proto
 | ||
| Author: Oleg Efimov <efimovov@gmail.com>
 | ||
| Description: Cap’n Proto message definition format
 | ||
| Website: https://capnproto.org/capnp-tool.html
 | ||
| Category: protocols
 | ||
| */
 | ||
| 
 | ||
| /** @type LanguageFn */
 | ||
| function capnproto(hljs) {
 | ||
|   return {
 | ||
|     name: 'Cap’n Proto',
 | ||
|     aliases: ['capnp'],
 | ||
|     keywords: {
 | ||
|       keyword:
 | ||
|         'struct enum interface union group import using const annotation extends in of on as with from fixed',
 | ||
|       built_in:
 | ||
|         'Void Bool Int8 Int16 Int32 Int64 UInt8 UInt16 UInt32 UInt64 Float32 Float64 ' +
 | ||
|         'Text Data AnyPointer AnyStruct Capability List',
 | ||
|       literal:
 | ||
|         'true false'
 | ||
|     },
 | ||
|     contains: [
 | ||
|       hljs.QUOTE_STRING_MODE,
 | ||
|       hljs.NUMBER_MODE,
 | ||
|       hljs.HASH_COMMENT_MODE,
 | ||
|       {
 | ||
|         className: 'meta',
 | ||
|         begin: /@0x[\w\d]{16};/,
 | ||
|         illegal: /\n/
 | ||
|       },
 | ||
|       {
 | ||
|         className: 'symbol',
 | ||
|         begin: /@\d+\b/
 | ||
|       },
 | ||
|       {
 | ||
|         className: 'class',
 | ||
|         beginKeywords: 'struct enum',
 | ||
|         end: /\{/,
 | ||
|         illegal: /\n/,
 | ||
|         contains: [hljs.inherit(hljs.TITLE_MODE, {
 | ||
|           starts: {
 | ||
|             endsWithParent: true,
 | ||
|             excludeEnd: true
 | ||
|           } // hack: eating everything after the first title
 | ||
|         })]
 | ||
|       },
 | ||
|       {
 | ||
|         className: 'class',
 | ||
|         beginKeywords: 'interface',
 | ||
|         end: /\{/,
 | ||
|         illegal: /\n/,
 | ||
|         contains: [hljs.inherit(hljs.TITLE_MODE, {
 | ||
|           starts: {
 | ||
|             endsWithParent: true,
 | ||
|             excludeEnd: true
 | ||
|           } // hack: eating everything after the first title
 | ||
|         })]
 | ||
|       }
 | ||
|     ]
 | ||
|   };
 | ||
| }
 | ||
| 
 | ||
| module.exports = capnproto;
 |