Skip to content

Commit 55e13fe

Browse files
authored
Update convertisseur.js
added support for code blocks
1 parent 56f051a commit 55e13fe

File tree

1 file changed

+25
-7
lines changed

1 file changed

+25
-7
lines changed

editeurMD/convertisseur.js

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,27 @@ document.addEventListener('DOMContentLoaded', () => {
1212
texte = texte.replace(/^##### (.*$)/gim, '<h5>$1</h5>');
1313
texte = texte.replace(/^###### (.*$)/gim, '<h6>$1</h6>');
1414

15+
// Bloc de code
16+
/*
17+
NB : Le code pour le bloc de code est mis ici afin d'éviter d'avoir des problèmes avec les saut de ligne
18+
au sein même du bloc de code, et également afin d'éviter des comportements anormaux en rapport avec le télétype
19+
*/
20+
texte = texte.replace(/```([\s\S]*?)```/g, (_, code) => {
21+
const escaped = code.replace(/&/g, '&amp;')
22+
.replace(/</g, '&lt;')
23+
.replace(/>/g, '&gt;');
24+
return `<pre><code>${escaped}</code></pre>`;
25+
});
26+
1527
// Saut de ligne
1628
texte = texte.replace(/\n$/gim, '<br/>');
17-
29+
30+
// Télétype
31+
texte = texte.replace(/`(.*)`/gim, '<tt>$1</tt>');
32+
1833
// Souligné
1934
texte = texte.replace(/\_\_(.*)\_\_/gm, '<span style="text-decoration: underline;">$1</span>');
20-
35+
2136
// Gras
2237
texte = texte.replace(/\*\*(.*)\*\*/gim, '<b>$1</b>');
2338
texte = texte.replace(/___(.*)___/gim, '<b>$1</b>');
@@ -27,7 +42,6 @@ document.addEventListener('DOMContentLoaded', () => {
2742
texte = texte.replace(/_(.*)_/gim, '<i>$1</i>');
2843

2944
// Bloc de citation
30-
3145
texte = texte.replace(/^\> (.*$)/gim, '<blockquote>$1</blockquote>');
3246

3347
// Trait horizontal
@@ -40,14 +54,13 @@ document.addEventListener('DOMContentLoaded', () => {
4054
texte = texte.replace(/^\s*[+] (.*$)/gim, '<ol><li>$1</li></ol>').replace(/<\/ol>\n?<ol>/g, '');
4155

4256
// Convertion de liens
57+
// [texte](lien)
4358
texte = texte.replace(/\[([^\[\]]+)\]\((?!.*\.(?:png|jpg|gif|jpeg))([^\)]+)\)/gim, '<a href="$2">$1</a>');
4459

4560
// Convertion d'images
61+
// ![alt](src)
4662
texte = texte.replace(/\!\[([^\[\]]+)\]\((.*?)\)/gim, '<img alt="$1" src="$2"/>');
47-
48-
// Télétype
49-
texte = texte.replace(/`(.*)`/gim, '<tt>$1</tt>');
50-
63+
5164
// Liste à coche (non coché)
5265
texte = texte.replace(/^\[\] (.*$)/gim, '<input type="checkbox"/>$1'); // Sans espace au centre
5366

@@ -57,6 +70,11 @@ document.addEventListener('DOMContentLoaded', () => {
5770
texte = texte.replace(/^\[\X\] (.*$)/gim, '<input type="checkbox" checked/>$1');
5871

5972
// Couleur texte
73+
/*
74+
\c[color] texte \c
75+
"color" fait référence à une couleur direct (red, blue, white, green...)
76+
Peut également être remplacer par un hexadécimal ou rgb(X, X, X)
77+
*/
6078
texte = texte.replace(/\\c\[(.*)\] (.*) \\c /gim, '<span style="color:$1;">$2 </span>');
6179

6280
return texte.trim();

0 commit comments

Comments
 (0)