source: node_modules/highlight.js/lib/languages/properties.js

main
Last change on this file was d24f17c, checked in by Aleksandar Panovski <apano77@…>, 15 months ago

Initial commit

  • Property mode set to 100644
File size: 2.1 KB
Line 
1/*
2Language: .properties
3Contributors: Valentin Aitken <valentin@nalisbg.com>, Egor Rogov <e.rogov@postgrespro.ru>
4Website: https://en.wikipedia.org/wiki/.properties
5Category: common, config
6*/
7
8function properties(hljs) {
9
10 // whitespaces: space, tab, formfeed
11 var WS0 = '[ \\t\\f]*';
12 var WS1 = '[ \\t\\f]+';
13 // delimiter
14 var EQUAL_DELIM = WS0+'[:=]'+WS0;
15 var WS_DELIM = WS1;
16 var DELIM = '(' + EQUAL_DELIM + '|' + WS_DELIM + ')';
17 var KEY_ALPHANUM = '([^\\\\\\W:= \\t\\f\\n]|\\\\.)+';
18 var KEY_OTHER = '([^\\\\:= \\t\\f\\n]|\\\\.)+';
19
20 var DELIM_AND_VALUE = {
21 // skip DELIM
22 end: DELIM,
23 relevance: 0,
24 starts: {
25 // value: everything until end of line (again, taking into account backslashes)
26 className: 'string',
27 end: /$/,
28 relevance: 0,
29 contains: [
30 { begin: '\\\\\\\\'},
31 { begin: '\\\\\\n' }
32 ]
33 }
34 };
35
36 return {
37 name: '.properties',
38 case_insensitive: true,
39 illegal: /\S/,
40 contains: [
41 hljs.COMMENT('^\\s*[!#]', '$'),
42 // key: everything until whitespace or = or : (taking into account backslashes)
43 // case of a "normal" key
44 {
45 returnBegin: true,
46 variants: [
47 { begin: KEY_ALPHANUM + EQUAL_DELIM, relevance: 1 },
48 { begin: KEY_ALPHANUM + WS_DELIM, relevance: 0 }
49 ],
50 contains: [
51 {
52 className: 'attr',
53 begin: KEY_ALPHANUM,
54 endsParent: true,
55 relevance: 0
56 }
57 ],
58 starts: DELIM_AND_VALUE
59 },
60 // case of key containing non-alphanumeric chars => relevance = 0
61 {
62 begin: KEY_OTHER + DELIM,
63 returnBegin: true,
64 relevance: 0,
65 contains: [
66 {
67 className: 'meta',
68 begin: KEY_OTHER,
69 endsParent: true,
70 relevance: 0
71 }
72 ],
73 starts: DELIM_AND_VALUE
74 },
75 // case of an empty key
76 {
77 className: 'attr',
78 relevance: 0,
79 begin: KEY_OTHER + WS0 + '$'
80 }
81 ]
82 };
83}
84
85module.exports = properties;
Note: See TracBrowser for help on using the repository browser.