| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 | /*Language: RoboconfAuthor: Vincent Zurczak <vzurczak@linagora.com>Description: Syntax highlighting for Roboconf's DSLWebsite: http://roboconf.netCategory: 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;
 |