annotate .cms/lib/codemirror/mode/http/http.js @ 0:78edf6b517a0 draft

24.10
author Coffee CMS <info@coffee-cms.ru>
date Fri, 11 Oct 2024 22:40:23 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1 // CodeMirror, copyright (c) by Marijn Haverbeke and others
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
2 // Distributed under an MIT license: https://codemirror.net/5/LICENSE
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
3
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
4 (function(mod) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
5 if (typeof exports == "object" && typeof module == "object") // CommonJS
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
6 mod(require("../../lib/codemirror"));
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
7 else if (typeof define == "function" && define.amd) // AMD
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
8 define(["../../lib/codemirror"], mod);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
9 else // Plain browser env
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
10 mod(CodeMirror);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
11 })(function(CodeMirror) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
12 "use strict";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
13
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
14 CodeMirror.defineMode("http", function() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
15 function failFirstLine(stream, state) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
16 stream.skipToEnd();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
17 state.cur = header;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
18 return "error";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
19 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
20
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
21 function start(stream, state) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
22 if (stream.match(/^HTTP\/\d\.\d/)) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
23 state.cur = responseStatusCode;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
24 return "keyword";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
25 } else if (stream.match(/^[A-Z]+/) && /[ \t]/.test(stream.peek())) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
26 state.cur = requestPath;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
27 return "keyword";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
28 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
29 return failFirstLine(stream, state);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
30 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
31 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
32
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
33 function responseStatusCode(stream, state) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
34 var code = stream.match(/^\d+/);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
35 if (!code) return failFirstLine(stream, state);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
36
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
37 state.cur = responseStatusText;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
38 var status = Number(code[0]);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
39 if (status >= 100 && status < 200) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
40 return "positive informational";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
41 } else if (status >= 200 && status < 300) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
42 return "positive success";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
43 } else if (status >= 300 && status < 400) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
44 return "positive redirect";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
45 } else if (status >= 400 && status < 500) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
46 return "negative client-error";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
47 } else if (status >= 500 && status < 600) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
48 return "negative server-error";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
49 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
50 return "error";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
51 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
52 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
53
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
54 function responseStatusText(stream, state) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
55 stream.skipToEnd();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
56 state.cur = header;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
57 return null;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
58 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
59
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
60 function requestPath(stream, state) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
61 stream.eatWhile(/\S/);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
62 state.cur = requestProtocol;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
63 return "string-2";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
64 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
65
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
66 function requestProtocol(stream, state) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
67 if (stream.match(/^HTTP\/\d\.\d$/)) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
68 state.cur = header;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
69 return "keyword";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
70 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
71 return failFirstLine(stream, state);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
72 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
73 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
74
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
75 function header(stream) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
76 if (stream.sol() && !stream.eat(/[ \t]/)) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
77 if (stream.match(/^.*?:/)) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
78 return "atom";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
79 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
80 stream.skipToEnd();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
81 return "error";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
82 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
83 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
84 stream.skipToEnd();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
85 return "string";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
86 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
87 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
88
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
89 function body(stream) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
90 stream.skipToEnd();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
91 return null;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
92 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
93
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
94 return {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
95 token: function(stream, state) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
96 var cur = state.cur;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
97 if (cur != header && cur != body && stream.eatSpace()) return null;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
98 return cur(stream, state);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
99 },
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
100
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
101 blankLine: function(state) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
102 state.cur = body;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
103 },
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
104
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
105 startState: function() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
106 return {cur: start};
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
107 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
108 };
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
109 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
110
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
111 CodeMirror.defineMIME("message/http", "http");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
112
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
113 });