Syntax-Highlighting für Quicktext
Beim Bearbeiten von Quicktext sollte des Syntax-Highlighting. Mit CodeMirror lässt sich das ganz gut machen. Es wird allerdings eine Sprachdefinition für Quicktext benötigt.
Hier ist ein Beispiel, mit dem man experimentieren kann:
<html>
<head>
<title>GOV Editor Test</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.15/codemirror.min.css">
<meta charset="utf-8"/>
<style>
.cm-source { font-style: italic; }
.cm-source-page { font-style: italic; color: red; }
.cm-date { color: blue; }
.cm-location { color: green; }
.cm-language { color: teal; }
</style>
</head>
<body>
<textarea id="editor">SCHERGJO54EJ
gehört zu object_1187745,
gehört zu object_149289,
gehört zu object_185251 sagt source_149287 sagt source_387809 (S. 136),
gehört zu object_319886 sagt source_1081178 (S. 110) sagt source_1082104 (S. 92) sagt source_387809 (S. 136),
hat 1961-06-06 Einwohner 3483 sagt source_1081178 (S. 110),
hat 1970-05-27 Einwohner 3574 sagt source_1082104 (S. 92),
hat ab 1993-07-01 PLZ 24217,
hat bis 1993-06-30 PLZ W2306,
hat externe Kennung geonames:2836925,
heißt (auf deu) Schönberg,
ist (auf deu) Hauptort sagt source_1081178 (S. 110) sagt source_1082104 (S. 92),
liegt bei 54.3936°N 10.3707°O;
</textarea>
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.15/codemirror.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.15/addon/mode/simple.min.js"></script>
<script>
CodeMirror.defineSimpleMode("gov-quicktext", {
start: [
{ regex: /(\d{4}-\d{2}-\d{2})/, token: "date" }, // Datum im Format "YYYY-MM-DD"
{ regex: /geonames:\d+/, token: "variable-2" }, // "geonames:123" als Kennung
{ regex: /auf deu/i, token: "language" }, // "auf deu" als Sprache
{ regex: /\d+\.\d+°[NS]\s\d+\.\d+°[WEO]/, token: "location" }, // Koordinaten im Format "54.3936°N 10.3707°O"
{ regex: /sagt source_[0-9]+/, token: "source" },
{ regex: /(gehört zu|hat externe Kennung|liegt bei)/, token: "keyword" },
{ regex: /S\.\s\d+/, token: "source-page" }, // "S. 123" als Quellangabe
],
});
var myTextArea = document.querySelector("#editor");
var myCodeMirror = CodeMirror.fromTextArea(myTextArea, { lineNumbers: true, mode: "gov-quicktext" });
</script>
</body>
</html>