From 3cfb7cf6dc6c7da882989006b83af198a5fe4e4d Mon Sep 17 00:00:00 2001 From: Nicolas Sanchez Date: Mon, 13 Feb 2023 00:25:04 +0100 Subject: [PATCH] =?UTF-8?q?bq=20et=20ul=20imbriqu=C3=A9s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- static/mdnotes.css | 18 +++++++++-- static/modules/md.js | 64 +++++++++++++++++++++++++++------------ static/modules/mdnotes.js | 9 ++++++ 3 files changed, 68 insertions(+), 23 deletions(-) diff --git a/static/mdnotes.css b/static/mdnotes.css index c1cd8d4..badca3b 100644 --- a/static/mdnotes.css +++ b/static/mdnotes.css @@ -77,9 +77,21 @@ div#mdnotes div.bq3 { border-left: .9rem solid #6688bb; } -div#mdnotes div.ul { - padding-left: 1rem; -} +div#mdnotes div.ul1 { padding-left: 2.2rem; } +div#mdnotes div.ul1.bq1 { padding-left: 1.9rem; } +div#mdnotes div.ul1.bq2 { padding-left: 1.6rem; } +div#mdnotes div.ul1.bq3 { padding-left: 1.3rem; } + +div#mdnotes div.ul2 { padding-left: 2.7rem; } +div#mdnotes div.ul2.bq1 { padding-left: 2.4rem; } +div#mdnotes div.ul2.bq2 { padding-left: 2.1rem; } +div#mdnotes div.ul2.bq3 { padding-left: 1.8rem; } + +div#mdnotes div.ul3 { padding-left: 3.2rem; } +div#mdnotes div.ul3.bq1 { padding-left: 2.9rem; } +div#mdnotes div.ul3.bq2 { padding-left: 2.6rem; } +div#mdnotes div.ul3.bq3 { padding-left: 2.3rem; } + div#mdnotes div.mdnotes_line span.token { font-weight: 1; diff --git a/static/modules/md.js b/static/modules/md.js index b68ee11..971143a 100644 --- a/static/modules/md.js +++ b/static/modules/md.js @@ -28,7 +28,17 @@ function onlinkin(e) { function onlink(e) { let mdnotes = document.getElementById('mdnotes'); if (mdnotes.contentEditable == 'false') { + e.preventDefault(); mdnotes.contentEditable = true; + let link = e.currentTarget; + if (link.host !== document.location.host) { + open(link.href); + } else { + open(link.href, '_self'); + } + return false; + } else { + return true; } } @@ -41,37 +51,54 @@ function onlinkout(e) { function formatLine(line) { let normLine = line.trimStart(); - let styleClass = null; let token = null; + let elem = document.createElement('div'); if (normLine.match(/^####\s/i)) { token = /^(####\s)/i; - styleClass = 'h4'; + elem.classList.add('h4'); } else if (normLine.match(/^###\s/i)) { token = /^(###\s)/i; - styleClass = 'h3'; + elem.classList.add('h3'); } else if (normLine.match(/^##\s/)) { token = /^(##\s)/i; - styleClass = 'h2'; + elem.classList.add('h2'); } else if (normLine.match(/^#\s/i)) { token = /^(#\s)/i; - styleClass = 'h1'; - } else if (normLine.match(/^>>>\s/i)) { - token = /^(>>>\s)/i; - styleClass = 'bq3'; - } else if (normLine.match(/^>>\s/i)) { - token = /^(>>\s)/i; - styleClass = 'bq2'; + elem.classList.add('h1'); + } else if (normLine.match(/^>\s*>\s*>\s/i)) { + token = /^(>\s*>\s*>\s)/i; + elem.classList.add('bq3'); + elem.classList.add('bq'); + } else if (normLine.match(/^>\s*>\s/i)) { + token = /^(>\s*>\s)/i; + elem.classList.add('bq2'); + elem.classList.add('bq'); } else if (normLine.match(/^>\s/i)) { token = /^(>\s)/i; - styleClass = 'bq1'; - } else if (normLine.match(/^[*-]\s/i)) { - styleClass = 'ul'; + elem.classList.add('bq1'); + elem.classList.add('bq'); } else { - styleClass = 'body'; + elem.classList.add('body'); + } + if (elem.classList.contains('bq') || elem.classList.contains('body')) { + if (normLine.match(/^((>\s*){0,3}\s)?([\*\-+]\s*){3}\s/i)) { + token = /^((>\s*){0,3}([\*\-+]\s*){2})/i; + elem.classList.add('ul3'); + elem.classList.remove('body'); + } else if (normLine.match(/^((>\s*){0,3}\s)?([\*\-+]\s*){2}\s/i)) { + token = /^((>\s*){0,3}[\*\-+]\s*)/i; + elem.classList.add('ul2'); + elem.classList.remove('body'); + } else if (normLine.match(/^((>\s*){0,3}\s)?[\*\-+]\s/i)) { + token = /^((>\s*){1,3})/; + if (token == '') { + token = null; + } + elem.classList.add('ul1'); + elem.classList.remove('body'); + } } - let elem = document.createElement('div'); elem.classList.add('mdnotes_line'); - elem.classList.add(styleClass); normLine = addLink(normLine); normLine = addBold(normLine); normLine = addMono(normLine); @@ -83,9 +110,6 @@ function formatLine(line) { let links = elem.getElementsByClassName('link'); for (let i=0; i