-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathrobot.js
108 lines (104 loc) · 2.29 KB
/
robot.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
/**
* highlight.js Robot Framework syntax highlighting definition
*
* @see https://github.com/isagalaev/highlight.js
*
* @package: highlightjs-robot
* @author: Harri Paavola <harri.paavola@gmail.com>
* @since: 2019-08-05
*/
var module = module ? module : {}; // shim for browser use
function hljsDefineRobot(hljs) {
var VAR = {
className: 'variable',
begin: /\$\{/,
end: /\}/
};
var DICT = {
className: 'variable',
begin: /\&\{/,
end: /\}/
};
var LIST = {
className: 'variable',
begin: /\@\{/,
end: /\}/
};
var NUMBER = {
className: 'number',
begin: /\$\{([0-9])/,
end: /\}/
};
var SECTION = {
className: 'section',
begin: /^(\*{1,3})/,
end: /$/
};
var DOC = {
className: 'comment',
begin: /^\s*\[?Documentation\]?\s+/,
end: /$/
};
var DOC_CONT = {
className: 'comment',
begin: /^\.\.\./,
end: /$/
};
var COMMENT = {
className: 'comment',
begin: /(^| {2,}|\t|\| {1,})#/,
end: /$/
};
var TEST = {
className: 'name',
begin: /(^([^*| |\t|\n)]))\w/,
end: /($|\s{2,})/,
contains: [VAR]
};
var SETTING = {
className: 'built_in',
begin: /^\s+\[(Tags|Setup|Teardown|Template|Timeout|Arguments|Return)\]/,
end: /$| {2,}|\t/,
contains: [VAR],
relevance: 10
};
var CONST = {
className: 'attribute',
begin: /^(Library|Resource|Test Timeout|Test Template|Test Teardown|Test Setup|Default Tags|Force Tags|Variables|Suite Setup|Suite Teardown)(?:( )|( \| ))/,
end: /$| {2,}|\t/,
contains: [VAR],
relevance: 10
};
var GHERKIN = {
className: 'comment',
variants: [
{begin: /^\s{2,}given/, end: /\s/},
{begin: /^\s{2,}when/, end: /\s/},
{begin: /^\s{2,}then/, end: /\s/},
{begin: /^\s{2,}and/, end: /\s/}
]
};
return {
case_insensitive: true,
aliases: ['robot', 'rf'],
keywords: 'Settings Keywords [Return] [Teardown] [Timeout] [Setup] [Tags] [Arguments] [Documentation]',
contains: [
NUMBER,
VAR,
DICT,
LIST,
SECTION,
CONST,
DOC,
DOC_CONT,
TEST,
COMMENT,
SETTING,
GHERKIN
]
};
}
module.exports = function(hljs) {
hljs.registerLanguage('robot', hljsDefineRobot);
};
module.exports.definer = hljsDefineRobot;