1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 | function http(hljs) {
|
10 | const regex = hljs.regex;
|
11 | const VERSION = 'HTTP/(2|1\\.[01])';
|
12 | const HEADER_NAME = /[A-Za-z][A-Za-z0-9-]*/;
|
13 | const HEADER = {
|
14 | className: 'attribute',
|
15 | begin: regex.concat('^', HEADER_NAME, '(?=\\:\\s)'),
|
16 | starts: {
|
17 | contains: [
|
18 | {
|
19 | className: "punctuation",
|
20 | begin: /: /,
|
21 | relevance: 0,
|
22 | starts: {
|
23 | end: '$',
|
24 | relevance: 0
|
25 | }
|
26 | }
|
27 | ]
|
28 | }
|
29 | };
|
30 | const HEADERS_AND_BODY = [
|
31 | HEADER,
|
32 | {
|
33 | begin: '\\n\\n',
|
34 | starts: { subLanguage: [], endsWithParent: true }
|
35 | }
|
36 | ];
|
37 |
|
38 | return {
|
39 | name: 'HTTP',
|
40 | aliases: ['https'],
|
41 | illegal: /\S/,
|
42 | contains: [
|
43 |
|
44 | {
|
45 | begin: '^(?=' + VERSION + " \\d{3})",
|
46 | end: /$/,
|
47 | contains: [
|
48 | {
|
49 | className: "meta",
|
50 | begin: VERSION
|
51 | },
|
52 | {
|
53 | className: 'number', begin: '\\b\\d{3}\\b'
|
54 | }
|
55 | ],
|
56 | starts: {
|
57 | end: /\b\B/,
|
58 | illegal: /\S/,
|
59 | contains: HEADERS_AND_BODY
|
60 | }
|
61 | },
|
62 |
|
63 | {
|
64 | begin: '(?=^[A-Z]+ (.*?) ' + VERSION + '$)',
|
65 | end: /$/,
|
66 | contains: [
|
67 | {
|
68 | className: 'string',
|
69 | begin: ' ',
|
70 | end: ' ',
|
71 | excludeBegin: true,
|
72 | excludeEnd: true
|
73 | },
|
74 | {
|
75 | className: "meta",
|
76 | begin: VERSION
|
77 | },
|
78 | {
|
79 | className: 'keyword',
|
80 | begin: '[A-Z]+'
|
81 | }
|
82 | ],
|
83 | starts: {
|
84 | end: /\b\B/,
|
85 | illegal: /\S/,
|
86 | contains: HEADERS_AND_BODY
|
87 | }
|
88 | },
|
89 |
|
90 | hljs.inherit(HEADER, {
|
91 | relevance: 0
|
92 | })
|
93 | ]
|
94 | };
|
95 | }
|
96 |
|
97 | export { http as default };
|