UNPKG

2.54 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: {
52 end: '\\s*@?[\\w_][\\w_\\.:-]*'
53 }
54 }
55 },
56 {
57 begin: '\\b(' + COMMANDS.split(' ').join('|') + ')\\s+',
58 keywords: COMMANDS,
59 starts: {
60 className: 'title',
61 end: '[\\$\\w_][\\w_-]*'
62 }
63 },
64 {
65 beginKeywords: PROPERTY_SETS,
66 starts: {
67 className: 'title',
68 end: '\\s*([\\w_-]+:)?'
69 }
70 },
71 hljs.QUOTE_STRING_MODE,
72 {
73 className: 'meta',
74 begin: '(ocf|systemd|service|lsb):[\\w_:-]+',
75 relevance: 0
76 },
77 {
78 className: 'number',
79 begin: '\\b\\d+(\\.\\d+)?(ms|s|h|m)?',
80 relevance: 0
81 },
82 {
83 className: 'literal',
84 begin: '[-]?(infinity|inf)',
85 relevance: 0
86 },
87 {
88 className: 'attr',
89 begin: /([A-Za-z$_#][\w_-]+)=/,
90 relevance: 0
91 },
92 {
93 className: 'tag',
94 begin: '</?',
95 end: '/?>',
96 relevance: 0
97 }
98 ]
99 };
100}
101
102export { crmsh as default };