mirror of
https://forge.chapril.org/tykayn/book_generator
synced 2025-06-20 01:34:43 +02:00
ajout app flask pour prévisualiser le livre
This commit is contained in:
parent
375fbb3a7a
commit
9f1b265a21
29 changed files with 4533 additions and 137 deletions
138
static/js/mode/org.js
Normal file
138
static/js/mode/org.js
Normal file
|
@ -0,0 +1,138 @@
|
|||
(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";
|
||||
|
||||
CodeMirror.defineMode("org", function () {
|
||||
return {
|
||||
startState: function () {
|
||||
return {
|
||||
inComment: false,
|
||||
inBlock: false,
|
||||
blockType: null
|
||||
};
|
||||
},
|
||||
|
||||
token: function (stream, state) {
|
||||
// Gestion des commentaires en ligne
|
||||
if (stream.match(/^# /)) {
|
||||
stream.skipToEnd();
|
||||
return "comment";
|
||||
}
|
||||
|
||||
// Gestion des lignes de paramètres
|
||||
if (stream.match(/^:PROPERTIES:|^:END:|^:ID:|^#\+[A-Z_]+:/)) {
|
||||
stream.skipToEnd();
|
||||
return "comment";
|
||||
}
|
||||
|
||||
// Gestion des paramètres d'export
|
||||
if (stream.match(/^:title|^:author|^:email|^:language|^:encoding|^:subject|^:description|^:keywords|^:cover/)) {
|
||||
stream.skipToEnd();
|
||||
return "comment";
|
||||
}
|
||||
|
||||
// Gestion des blocs de commentaires
|
||||
if (stream.match(/^#\+begin_comment/)) {
|
||||
state.inComment = true;
|
||||
return "comment";
|
||||
}
|
||||
|
||||
if (state.inComment && stream.match(/^#\+end_comment/)) {
|
||||
state.inComment = false;
|
||||
return "comment";
|
||||
}
|
||||
|
||||
if (state.inComment) {
|
||||
stream.skipToEnd();
|
||||
return "comment";
|
||||
}
|
||||
|
||||
// Gestion des blocs de code
|
||||
if (stream.match(/^#\+BEGIN_SRC/)) {
|
||||
state.inBlock = true;
|
||||
state.blockType = "src";
|
||||
return "keyword";
|
||||
}
|
||||
|
||||
if (stream.match(/^#\+BEGIN_QUOTE/)) {
|
||||
state.inBlock = true;
|
||||
state.blockType = "quote";
|
||||
return "keyword";
|
||||
}
|
||||
|
||||
if (state.inBlock && stream.match(/^#\+END_(SRC|QUOTE)/)) {
|
||||
state.inBlock = false;
|
||||
state.blockType = null;
|
||||
return "keyword";
|
||||
}
|
||||
|
||||
if (state.inBlock) {
|
||||
stream.skipToEnd();
|
||||
return state.blockType === "src" ? "string" : "quote";
|
||||
}
|
||||
|
||||
// Gestion des titres
|
||||
if (stream.match(/^\*+\s/)) {
|
||||
const level = stream.current().length - 1;
|
||||
stream.skipToEnd();
|
||||
return `header-${level}`;
|
||||
}
|
||||
|
||||
// Gestion des listes
|
||||
if (stream.match(/^-\s/)) {
|
||||
stream.skipToEnd();
|
||||
return "list";
|
||||
}
|
||||
|
||||
// Gestion des liens
|
||||
if (stream.match(/\[\[(.*?)\]\]/)) {
|
||||
return "link";
|
||||
}
|
||||
|
||||
// Gestion des propriétés
|
||||
if (stream.match(/^:PROPERTIES:/)) {
|
||||
stream.skipToEnd();
|
||||
return "property";
|
||||
}
|
||||
|
||||
if (stream.match(/^:END:/)) {
|
||||
stream.skipToEnd();
|
||||
return "property";
|
||||
}
|
||||
|
||||
// Gestion des tags
|
||||
if (stream.match(/:[a-zA-Z0-9_@#%:]+:/)) {
|
||||
return "tag";
|
||||
}
|
||||
|
||||
// Gestion des dates
|
||||
if (stream.match(/<\d{4}-\d{2}-\d{2}(?: \w+)?>/)) {
|
||||
return "date";
|
||||
}
|
||||
|
||||
// Gestion des mots-clés
|
||||
if (stream.match(/^#\+[A-Z_]+:/)) {
|
||||
stream.skipToEnd();
|
||||
return "keyword";
|
||||
}
|
||||
|
||||
// Gestion des nombres
|
||||
if (stream.match(/\b\d+\b/)) {
|
||||
return "number";
|
||||
}
|
||||
|
||||
// Texte normal
|
||||
stream.next();
|
||||
return null;
|
||||
}
|
||||
};
|
||||
});
|
||||
|
||||
CodeMirror.defineMIME("text/x-org", "org");
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue