123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- /*
- 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) {
- const KEYWORDS = [
- "struct",
- "enum",
- "interface",
- "union",
- "group",
- "import",
- "using",
- "const",
- "annotation",
- "extends",
- "in",
- "of",
- "on",
- "as",
- "with",
- "from",
- "fixed"
- ];
- const TYPES = [
- "Void",
- "Bool",
- "Int8",
- "Int16",
- "Int32",
- "Int64",
- "UInt8",
- "UInt16",
- "UInt32",
- "UInt64",
- "Float32",
- "Float64",
- "Text",
- "Data",
- "AnyPointer",
- "AnyStruct",
- "Capability",
- "List"
- ];
- const LITERALS = [
- "true",
- "false"
- ];
- const CLASS_DEFINITION = {
- variants: [
- { match: [
- /(struct|enum|interface)/,
- /\s+/,
- hljs.IDENT_RE
- ] },
- { match: [
- /extends/,
- /\s*\(/,
- hljs.IDENT_RE,
- /\s*\)/
- ] }
- ],
- scope: {
- 1: "keyword",
- 3: "title.class"
- }
- };
- return {
- name: 'Cap’n Proto',
- aliases: [ 'capnp' ],
- keywords: {
- keyword: KEYWORDS,
- type: TYPES,
- literal: LITERALS
- },
- 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/
- },
- CLASS_DEFINITION
- ]
- };
- }
- module.exports = capnproto;
|