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