83 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /*
 | |
| Language: Roboconf
 | |
| Author: Vincent Zurczak <vzurczak@linagora.com>
 | |
| Description: Syntax highlighting for Roboconf's DSL
 | |
| Website: http://roboconf.net
 | |
| Category: config
 | |
| */
 | |
| 
 | |
| function roboconf(hljs) {
 | |
|   const IDENTIFIER = '[a-zA-Z-_][^\\n{]+\\{';
 | |
| 
 | |
|   const PROPERTY = {
 | |
|     className: 'attribute',
 | |
|     begin: /[a-zA-Z-_]+/,
 | |
|     end: /\s*:/,
 | |
|     excludeEnd: true,
 | |
|     starts: {
 | |
|       end: ';',
 | |
|       relevance: 0,
 | |
|       contains: [
 | |
|         {
 | |
|           className: 'variable',
 | |
|           begin: /\.[a-zA-Z-_]+/
 | |
|         },
 | |
|         {
 | |
|           className: 'keyword',
 | |
|           begin: /\(optional\)/
 | |
|         }
 | |
|       ]
 | |
|     }
 | |
|   };
 | |
| 
 | |
|   return {
 | |
|     name: 'Roboconf',
 | |
|     aliases: [
 | |
|       'graph',
 | |
|       'instances'
 | |
|     ],
 | |
|     case_insensitive: true,
 | |
|     keywords: 'import',
 | |
|     contains: [
 | |
|       // Facet sections
 | |
|       {
 | |
|         begin: '^facet ' + IDENTIFIER,
 | |
|         end: /\}/,
 | |
|         keywords: 'facet',
 | |
|         contains: [
 | |
|           PROPERTY,
 | |
|           hljs.HASH_COMMENT_MODE
 | |
|         ]
 | |
|       },
 | |
| 
 | |
|       // Instance sections
 | |
|       {
 | |
|         begin: '^\\s*instance of ' + IDENTIFIER,
 | |
|         end: /\}/,
 | |
|         keywords: 'name count channels instance-data instance-state instance of',
 | |
|         illegal: /\S/,
 | |
|         contains: [
 | |
|           'self',
 | |
|           PROPERTY,
 | |
|           hljs.HASH_COMMENT_MODE
 | |
|         ]
 | |
|       },
 | |
| 
 | |
|       // Component sections
 | |
|       {
 | |
|         begin: '^' + IDENTIFIER,
 | |
|         end: /\}/,
 | |
|         contains: [
 | |
|           PROPERTY,
 | |
|           hljs.HASH_COMMENT_MODE
 | |
|         ]
 | |
|       },
 | |
| 
 | |
|       // Comments
 | |
|       hljs.HASH_COMMENT_MODE
 | |
|     ]
 | |
|   };
 | |
| }
 | |
| 
 | |
| module.exports = roboconf;
 |