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