86 lines
2.5 KiB
JavaScript
86 lines
2.5 KiB
JavaScript
|
module.exports = function(hljs) {
|
||
|
var BUILTIN_MODULES =
|
||
|
'ObjectLoader Animate MovieCredits Slides Filters Shading Materials LensFlare Mapping VLCAudioVideo ' +
|
||
|
'StereoDecoder PointCloud NetworkAccess RemoteControl RegExp ChromaKey Snowfall NodeJS Speech Charts';
|
||
|
|
||
|
var XL_KEYWORDS = {
|
||
|
keyword: 'if then else do while until for loop import with is as where when by data constant',
|
||
|
literal: 'true false nil',
|
||
|
type: 'integer real text name boolean symbol infix prefix postfix block tree',
|
||
|
built_in: 'in mod rem and or xor not abs sign floor ceil sqrt sin cos tan asin acos atan exp expm1 log log2 log10 log1p pi at',
|
||
|
module: BUILTIN_MODULES,
|
||
|
id:
|
||
|
'text_length text_range text_find text_replace contains page slide basic_slide title_slide title subtitle ' +
|
||
|
'fade_in fade_out fade_at clear_color color line_color line_width texture_wrap texture_transform texture ' +
|
||
|
'scale_?x scale_?y scale_?z? translate_?x translate_?y translate_?z? rotate_?x rotate_?y rotate_?z? rectangle ' +
|
||
|
'circle ellipse sphere path line_to move_to quad_to curve_to theme background contents locally time mouse_?x ' +
|
||
|
'mouse_?y mouse_buttons'
|
||
|
};
|
||
|
|
||
|
var XL_CONSTANT = {
|
||
|
className: 'constant',
|
||
|
begin: '[A-Z][A-Z_0-9]+',
|
||
|
relevance: 0
|
||
|
};
|
||
|
var XL_VARIABLE = {
|
||
|
className: 'variable',
|
||
|
begin: '([A-Z][a-z_0-9]+)+',
|
||
|
relevance: 0
|
||
|
};
|
||
|
var XL_ID = {
|
||
|
className: 'id',
|
||
|
begin: '[a-z][a-z_0-9]+',
|
||
|
relevance: 0
|
||
|
};
|
||
|
|
||
|
var DOUBLE_QUOTE_TEXT = {
|
||
|
className: 'string',
|
||
|
begin: '"', end: '"', illegal: '\\n'
|
||
|
};
|
||
|
var SINGLE_QUOTE_TEXT = {
|
||
|
className: 'string',
|
||
|
begin: '\'', end: '\'', illegal: '\\n'
|
||
|
};
|
||
|
var LONG_TEXT = {
|
||
|
className: 'string',
|
||
|
begin: '<<', end: '>>'
|
||
|
};
|
||
|
var BASED_NUMBER = {
|
||
|
className: 'number',
|
||
|
begin: '[0-9]+#[0-9A-Z_]+(\\.[0-9-A-Z_]+)?#?([Ee][+-]?[0-9]+)?',
|
||
|
relevance: 10
|
||
|
};
|
||
|
var IMPORT = {
|
||
|
className: 'import',
|
||
|
beginKeywords: 'import', end: '$',
|
||
|
keywords: {
|
||
|
keyword: 'import',
|
||
|
module: BUILTIN_MODULES
|
||
|
},
|
||
|
relevance: 0,
|
||
|
contains: [DOUBLE_QUOTE_TEXT]
|
||
|
};
|
||
|
var FUNCTION_DEFINITION = {
|
||
|
className: 'function',
|
||
|
begin: '[a-z].*->'
|
||
|
};
|
||
|
return {
|
||
|
aliases: ['tao'],
|
||
|
lexemes: /[a-zA-Z][a-zA-Z0-9_?]*/,
|
||
|
keywords: XL_KEYWORDS,
|
||
|
contains: [
|
||
|
hljs.C_LINE_COMMENT_MODE,
|
||
|
hljs.C_BLOCK_COMMENT_MODE,
|
||
|
DOUBLE_QUOTE_TEXT,
|
||
|
SINGLE_QUOTE_TEXT,
|
||
|
LONG_TEXT,
|
||
|
FUNCTION_DEFINITION,
|
||
|
IMPORT,
|
||
|
XL_CONSTANT,
|
||
|
XL_VARIABLE,
|
||
|
XL_ID,
|
||
|
BASED_NUMBER,
|
||
|
hljs.NUMBER_MODE
|
||
|
]
|
||
|
};
|
||
|
};
|