hexo/node_modules/highlight.js/lib/languages/thrift.js

78 lines
1.5 KiB
JavaScript
Raw Normal View History

2023-10-03 11:14:36 +08:00
/*
Language: Thrift
Author: Oleg Efimov <efimovov@gmail.com>
Description: Thrift message definition format
Website: https://thrift.apache.org
Category: protocols
*/
function thrift(hljs) {
const TYPES = [
"bool",
"byte",
"i16",
"i32",
"i64",
"double",
"string",
"binary"
];
const KEYWORDS = [
"namespace",
"const",
"typedef",
"struct",
"enum",
"service",
"exception",
"void",
"oneway",
"set",
"list",
"map",
"required",
"optional"
];
return {
name: 'Thrift',
keywords: {
keyword: KEYWORDS,
type: TYPES,
literal: 'true false'
},
contains: [
hljs.QUOTE_STRING_MODE,
hljs.NUMBER_MODE,
hljs.C_LINE_COMMENT_MODE,
hljs.C_BLOCK_COMMENT_MODE,
{
className: 'class',
beginKeywords: 'struct enum service exception',
end: /\{/,
illegal: /\n/,
contains: [
hljs.inherit(hljs.TITLE_MODE, {
// hack: eating everything after the first title
starts: {
endsWithParent: true,
excludeEnd: true
} })
]
},
{
begin: '\\b(set|list|map)\\s*<',
keywords: { type: [
...TYPES,
"set",
"list",
"map"
] },
end: '>',
contains: [ 'self' ]
}
]
};
}
module.exports = thrift;