ajout app flask pour prévisualiser le livre

This commit is contained in:
Tykayn 2025-03-04 22:36:16 +01:00 committed by tykayn
parent 375fbb3a7a
commit 9f1b265a21
29 changed files with 4533 additions and 137 deletions

7
static/js/lib/bootstrap.bundle.min.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

13
static/js/lib/chart.min.js vendored Normal file

File diff suppressed because one or more lines are too long

1
static/js/lib/codemirror.min.js vendored Normal file

File diff suppressed because one or more lines are too long

1
static/js/lib/commonlisp.min.js vendored Normal file
View file

@ -0,0 +1 @@
!function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";t.defineMode("commonlisp",function(r){var o,i=/^(block|let*|return-from|catch|load-time-value|setq|eval-when|locally|symbol-macrolet|flet|macrolet|tagbody|function|multiple-value-call|the|go|multiple-value-prog1|throw|if|progn|unwind-protect|labels|progv|let|quote)$/,c=/^with|^def|^do|^prog|case$|^cond$|bind$|when$|unless$/,l=/^(?:[+\-]?(?:\d+|\d*\.\d+)(?:[efd][+\-]?\d+)?|[+\-]?\d+(?:\/[+\-]?\d+)?|#b[+\-]?[01]+|#o[+\-]?[0-7]+|#x[+\-]?[\da-f]+)/,n=/[^\s'`,@()\[\]";]/;function u(t){for(var e;e=t.next();)if("\\"==e)t.next();else if(!n.test(e)){t.backUp(1);break}return t.current()}function a(t,e){if(t.eatSpace())return o="ws",null;if(t.match(l))return"number";var n=t.next();if('"'==(n="\\"==n?t.next():n))return(e.tokenize=s)(t,e);if("("==n)return o="open","bracket";if(")"==n||"]"==n)return o="close","bracket";if(";"==n)return t.skipToEnd(),o="ws","comment";if(/['`,@]/.test(n))return null;if("|"==n)return t.skipTo("|")?(t.next(),"symbol"):(t.skipToEnd(),"error");if("#"==n)return"("==(n=t.next())?(o="open","bracket"):/[+\-=\.']/.test(n)||/\d/.test(n)&&t.match(/^\d*#/)?null:"|"==n?(e.tokenize=d)(t,e):":"==n?(u(t),"meta"):"\\"==n?(t.next(),u(t),"string-2"):"error";t=u(t);return"."==t?null:(o="symbol","nil"==t||"t"==t||":"==t.charAt(0)?"atom":"open"==e.lastType&&(i.test(t)||c.test(t))?"keyword":"&"==t.charAt(0)?"variable-2":"variable")}function s(t,e){for(var n,r=!1;n=t.next();){if('"'==n&&!r){e.tokenize=a;break}r=!r&&"\\"==n}return"string"}function d(t,e){for(var n,r;n=t.next();){if("#"==n&&"|"==r){e.tokenize=a;break}r=n}return o="ws","comment"}return{startState:function(){return{ctx:{prev:null,start:0,indentTo:0},lastType:null,tokenize:a}},token:function(t,e){t.sol()&&"number"!=typeof e.ctx.indentTo&&(e.ctx.indentTo=e.ctx.start+1),o=null;var n=e.tokenize(t,e);return"ws"!=o&&(null==e.ctx.indentTo?"symbol"==o&&c.test(t.current())?e.ctx.indentTo=e.ctx.start+r.indentUnit:e.ctx.indentTo="next":"next"==e.ctx.indentTo&&(e.ctx.indentTo=t.column()),e.lastType=o),"open"==o?e.ctx={prev:e.ctx,start:t.column(),indentTo:null}:"close"==o&&(e.ctx=e.ctx.prev||e.ctx),n},indent:function(t,e){var n=t.ctx.indentTo;return"number"==typeof n?n:t.ctx.start+1},closeBrackets:{pairs:'()[]{}""'},lineComment:";;",fold:"brace-paren",blockCommentStart:"#|",blockCommentEnd:"|#"}}),t.defineMIME("text/x-common-lisp","commonlisp")});

1
static/js/lib/css.min.js vendored Normal file

File diff suppressed because one or more lines are too long

1
static/js/lib/javascript.min.js vendored Normal file

File diff suppressed because one or more lines are too long

1
static/js/lib/markdown.min.js vendored Normal file

File diff suppressed because one or more lines are too long

83
static/js/lib/org.min.js vendored Normal file
View file

@ -0,0 +1,83 @@
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx</center>
</body>
</html>
CodeMirror.defineMode("org", function () {
return {
token: function (stream, state) {
// Titres
if (stream.match(/^\*+\s/)) {
stream.skipToEnd();
return "header";
}
// Commentaires
if (stream.match(/^#\s/)) {
stream.skipToEnd();
return "comment";
}
// 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";
}
// Blocs de code
if (stream.match(/^#\+BEGIN_SRC/)) {
state.inCode = true;
return "comment";
}
if (state.inCode && stream.match(/^#\+END_SRC/)) {
state.inCode = false;
return "comment";
}
if (state.inCode) {
stream.skipToEnd();
return "string";
}
// Citations
if (stream.match(/^#\+BEGIN_QUOTE/)) {
state.inQuote = true;
return "comment";
}
if (state.inQuote && stream.match(/^#\+END_QUOTE/)) {
state.inQuote = false;
return "comment";
}
if (state.inQuote) {
stream.skipToEnd();
return "string";
}
// Liens
if (stream.match(/\[\[(.*?)\]\]/)) {
return "link";
}
// Texte normal
stream.next();
return null;
},
startState: function () {
return {
inComment: false,
inCode: false,
inQuote: false
};
}
};
});

1
static/js/lib/scheme.min.js vendored Normal file

File diff suppressed because one or more lines are too long

1
static/js/lib/xml.min.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

138
static/js/mode/org.js Normal file
View 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");
});