You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
1.5 KiB
82 lines
1.5 KiB
/* |
|
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;
|
|
|