diff third_party/highlight/languages/http.js @ 173:827c6ac504cd hg-web

Merged in default here.
author MrJuneJune <me@mrjunejune.com>
date Mon, 19 Jan 2026 18:59:10 -0800
parents 2db6253f355d
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/third_party/highlight/languages/http.js	Mon Jan 19 18:59:10 2026 -0800
@@ -0,0 +1,107 @@
+/*! `http` grammar compiled for Highlight.js 11.11.1 */
+  (function(){
+    var hljsGrammar = (function () {
+  'use strict';
+
+  /*
+  Language: HTTP
+  Description: HTTP request and response headers with automatic body highlighting
+  Author: Ivan Sagalaev <[email protected]>
+  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 })
+      ]
+    };
+  }
+
+  return http;
+
+})();
+
+    hljs.registerLanguage('http', hljsGrammar);
+  })();
\ No newline at end of file