12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- /*
- Language: HTTP
- Description: HTTP request and response headers with automatic body highlighting
- Author: Ivan Sagalaev <maniac@softwaremaniacs.org>
- Category: protocols, web
- Website: https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview
- */
- function http(hljs) {
- const regex = hljs.regex;
- const VERSION = 'HTTP/([32]|1\\.[01])';
- const HEADER_NAME = /[A-Za-z][A-Za-z0-9-]*/;
- const HEADER = {
- className: 'attribute',
- begin: regex.concat('^', HEADER_NAME, '(?=\\:\\s)'),
- starts: { contains: [
- {
- className: "punctuation",
- begin: /: /,
- relevance: 0,
- starts: {
- end: '$',
- relevance: 0
- }
- }
- ] }
- };
- const HEADERS_AND_BODY = [
- HEADER,
- {
- begin: '\\n\\n',
- starts: {
- subLanguage: [],
- endsWithParent: true
- }
- }
- ];
- return {
- name: 'HTTP',
- aliases: [ 'https' ],
- illegal: /\S/,
- contains: [
- // response
- {
- begin: '^(?=' + VERSION + " \\d{3})",
- end: /$/,
- contains: [
- {
- className: "meta",
- begin: VERSION
- },
- {
- className: 'number',
- begin: '\\b\\d{3}\\b'
- }
- ],
- starts: {
- end: /\b\B/,
- illegal: /\S/,
- contains: HEADERS_AND_BODY
- }
- },
- // request
- {
- begin: '(?=^[A-Z]+ (.*?) ' + VERSION + '$)',
- end: /$/,
- contains: [
- {
- className: 'string',
- begin: ' ',
- end: ' ',
- excludeBegin: true,
- excludeEnd: true
- },
- {
- className: "meta",
- begin: VERSION
- },
- {
- className: 'keyword',
- begin: '[A-Z]+'
- }
- ],
- starts: {
- end: /\b\B/,
- illegal: /\S/,
- contains: HEADERS_AND_BODY
- }
- },
- // to allow headers to work even without a preamble
- hljs.inherit(HEADER, { relevance: 0 })
- ]
- };
- }
- export { http as default };
|