UNPKG

2.51 kBJavaScriptView Raw
1/*
2Language: crmsh
3Author: Kristoffer Gronlund <kgronlund@suse.com>
4Website: http://crmsh.github.io
5Description: Syntax Highlighting for the crmsh DSL
6Category: config
7*/
8
9/** @type LanguageFn */
10function crmsh(hljs) {
11 const RESOURCES = 'primitive rsc_template';
12 const COMMANDS = 'group clone ms master location colocation order fencing_topology '
13 + 'rsc_ticket acl_target acl_group user role '
14 + 'tag xml';
15 const PROPERTY_SETS = 'property rsc_defaults op_defaults';
16 const KEYWORDS = 'params meta operations op rule attributes utilization';
17 const OPERATORS = 'read write deny defined not_defined in_range date spec in '
18 + 'ref reference attribute type xpath version and or lt gt tag '
19 + 'lte gte eq ne \\';
20 const TYPES = 'number string';
21 const LITERALS = 'Master Started Slave Stopped start promote demote stop monitor true false';
22
23 return {
24 name: 'crmsh',
25 aliases: [
26 'crm',
27 'pcmk'
28 ],
29 case_insensitive: true,
30 keywords: {
31 keyword: KEYWORDS + ' ' + OPERATORS + ' ' + TYPES,
32 literal: LITERALS
33 },
34 contains: [
35 hljs.HASH_COMMENT_MODE,
36 {
37 beginKeywords: 'node',
38 starts: {
39 end: '\\s*([\\w_-]+:)?',
40 starts: {
41 className: 'title',
42 end: '\\s*[\\$\\w_][\\w_-]*'
43 }
44 }
45 },
46 {
47 beginKeywords: RESOURCES,
48 starts: {
49 className: 'title',
50 end: '\\s*[\\$\\w_][\\w_-]*',
51 starts: { end: '\\s*@?[\\w_][\\w_\\.:-]*' }
52 }
53 },
54 {
55 begin: '\\b(' + COMMANDS.split(' ').join('|') + ')\\s+',
56 keywords: COMMANDS,
57 starts: {
58 className: 'title',
59 end: '[\\$\\w_][\\w_-]*'
60 }
61 },
62 {
63 beginKeywords: PROPERTY_SETS,
64 starts: {
65 className: 'title',
66 end: '\\s*([\\w_-]+:)?'
67 }
68 },
69 hljs.QUOTE_STRING_MODE,
70 {
71 className: 'meta',
72 begin: '(ocf|systemd|service|lsb):[\\w_:-]+',
73 relevance: 0
74 },
75 {
76 className: 'number',
77 begin: '\\b\\d+(\\.\\d+)?(ms|s|h|m)?',
78 relevance: 0
79 },
80 {
81 className: 'literal',
82 begin: '[-]?(infinity|inf)',
83 relevance: 0
84 },
85 {
86 className: 'attr',
87 begin: /([A-Za-z$_#][\w_-]+)=/,
88 relevance: 0
89 },
90 {
91 className: 'tag',
92 begin: '</?',
93 end: '/?>',
94 relevance: 0
95 }
96 ]
97 };
98}
99
100module.exports = crmsh;