File modules/editor/codemirror/mode/asciiarmor/asciiarmor.js

Last commit: Sun Dec 17 01:14:09 2017 +0100	Jan Dankert	Integration eines weiteren Code-Editors: Codemirror. Demnächst müssen wir hier mal aufräumen und andere Editoren rauswerfen.
1 // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 // Distributed under an MIT license: http://codemirror.net/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 function errorIfNotEmpty(stream) { 15 var nonWS = stream.match(/^\s*\S/); 16 stream.skipToEnd(); 17 return nonWS ? "error" : null; 18 } 19 20 CodeMirror.defineMode("asciiarmor", function() { 21 return { 22 token: function(stream, state) { 23 var m; 24 if (state.state == "top") { 25 if (stream.sol() && (m = stream.match(/^-----BEGIN (.*)?-----\s*$/))) { 26 state.state = "headers"; 27 state.type = m[1]; 28 return "tag"; 29 } 30 return errorIfNotEmpty(stream); 31 } else if (state.state == "headers") { 32 if (stream.sol() && stream.match(/^\w+:/)) { 33 state.state = "header"; 34 return "atom"; 35 } else { 36 var result = errorIfNotEmpty(stream); 37 if (result) state.state = "body"; 38 return result; 39 } 40 } else if (state.state == "header") { 41 stream.skipToEnd(); 42 state.state = "headers"; 43 return "string"; 44 } else if (state.state == "body") { 45 if (stream.sol() && (m = stream.match(/^-----END (.*)?-----\s*$/))) { 46 if (m[1] != state.type) return "error"; 47 state.state = "end"; 48 return "tag"; 49 } else { 50 if (stream.eatWhile(/[A-Za-z0-9+\/=]/)) { 51 return null; 52 } else { 53 stream.next(); 54 return "error"; 55 } 56 } 57 } else if (state.state == "end") { 58 return errorIfNotEmpty(stream); 59 } 60 }, 61 blankLine: function(state) { 62 if (state.state == "headers") state.state = "body"; 63 }, 64 startState: function() { 65 return {state: "top", type: null}; 66 } 67 }; 68 }); 69 70 CodeMirror.defineMIME("application/pgp", "asciiarmor"); 71 CodeMirror.defineMIME("application/pgp-encrypted", "asciiarmor"); 72 CodeMirror.defineMIME("application/pgp-keys", "asciiarmor"); 73 CodeMirror.defineMIME("application/pgp-signature", "asciiarmor"); 74 });
Download modules/editor/codemirror/mode/asciiarmor/asciiarmor.js
History Sun, 17 Dec 2017 01:14:09 +0100 Jan Dankert Integration eines weiteren Code-Editors: Codemirror. Demnächst müssen wir hier mal aufräumen und andere Editoren rauswerfen.