mirror of https://github.com/gogits/gogs.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
2.3 KiB
73 lines
2.3 KiB
// CodeMirror, copyright (c) by Marijn Haverbeke and others |
|
// Distributed under an MIT license: http://codemirror.net/LICENSE |
|
|
|
(function(mod) { |
|
if (typeof exports == "object" && typeof module == "object") // CommonJS |
|
mod(require("../../lib/codemirror")); |
|
else if (typeof define == "function" && define.amd) // AMD |
|
define(["../../lib/codemirror"], mod); |
|
else // Plain browser env |
|
mod(CodeMirror); |
|
})(function(CodeMirror) { |
|
"use strict"; |
|
|
|
function errorIfNotEmpty(stream) { |
|
var nonWS = stream.match(/^\s*\S/); |
|
stream.skipToEnd(); |
|
return nonWS ? "error" : null; |
|
} |
|
|
|
CodeMirror.defineMode("asciiarmor", function() { |
|
return { |
|
token: function(stream, state) { |
|
var m; |
|
if (state.state == "top") { |
|
if (stream.sol() && (m = stream.match(/^-----BEGIN (.*)?-----\s*$/))) { |
|
state.state = "headers"; |
|
state.type = m[1]; |
|
return "tag"; |
|
} |
|
return errorIfNotEmpty(stream); |
|
} else if (state.state == "headers") { |
|
if (stream.sol() && stream.match(/^\w+:/)) { |
|
state.state = "header"; |
|
return "atom"; |
|
} else { |
|
var result = errorIfNotEmpty(stream); |
|
if (result) state.state = "body"; |
|
return result; |
|
} |
|
} else if (state.state == "header") { |
|
stream.skipToEnd(); |
|
state.state = "headers"; |
|
return "string"; |
|
} else if (state.state == "body") { |
|
if (stream.sol() && (m = stream.match(/^-----END (.*)?-----\s*$/))) { |
|
if (m[1] != state.type) return "error"; |
|
state.state = "end"; |
|
return "tag"; |
|
} else { |
|
if (stream.eatWhile(/[A-Za-z0-9+\/=]/)) { |
|
return null; |
|
} else { |
|
stream.next(); |
|
return "error"; |
|
} |
|
} |
|
} else if (state.state == "end") { |
|
return errorIfNotEmpty(stream); |
|
} |
|
}, |
|
blankLine: function(state) { |
|
if (state.state == "headers") state.state = "body"; |
|
}, |
|
startState: function() { |
|
return {state: "top", type: null}; |
|
} |
|
}; |
|
}); |
|
|
|
CodeMirror.defineMIME("application/pgp", "asciiarmor"); |
|
CodeMirror.defineMIME("application/pgp-keys", "asciiarmor"); |
|
CodeMirror.defineMIME("application/pgp-signature", "asciiarmor"); |
|
});
|
|
|