1 |
|
2 |
|
3 |
|
4 | (function(mod) {
|
5 | if (typeof exports == "object" && typeof module == "object")
|
6 | mod(require("../../lib/codemirror"));
|
7 | else if (typeof define == "function" && define.amd)
|
8 | define(["../../lib/codemirror"], mod);
|
9 | else
|
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 | });
|