From be528bc34f845c15f2777dfb71a686c4c192561c Mon Sep 17 00:00:00 2001 From: hanishkvc Date: Tue, 25 Nov 2025 21:42:00 +0530 Subject: [PATCH] SimpleChatTCRV:Markdown:Unordered list initial go --- tools/server/public_simplechat/typemd.mjs | 35 +++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/tools/server/public_simplechat/typemd.mjs b/tools/server/public_simplechat/typemd.mjs index fe67b9e7f8..a3740bcaea 100644 --- a/tools/server/public_simplechat/typemd.mjs +++ b/tools/server/public_simplechat/typemd.mjs @@ -10,6 +10,8 @@ export class MarkDown { this.in = { pre: false, table: false, + /** @type {Array} */ + listUnordered: [] } this.md = "" this.html = "" @@ -42,6 +44,39 @@ export class MarkDown { this.html += `
\n`
             return
         }
+        let matchUnOrdered = line.match(/^([ ]*)[-*][ ](.*)$/);
+        if ( matchUnOrdered != null) {
+            let sList = 'none'
+            let listLvl = 0
+            if (this.in.listUnordered.length == 0) {
+                sList = 'next'
+                this.in.listUnordered.push(matchUnOrdered[1].length)
+                listLvl = this.in.listUnordered.length // ie 1
+            } else {
+                if (this.in.listUnordered[this.in.listUnordered.length-1] < matchUnOrdered[1].length){
+                    sList = 'next'
+                    this.in.listUnordered.push(matchUnOrdered[1].length)
+                    listLvl = this.in.listUnordered.length
+                } else if (this.in.listUnordered[this.in.listUnordered.length-1] == matchUnOrdered[1].length){
+                    sList = 'same'
+                } else {
+                    sList = 'same'
+                    while (this.in.listUnordered[this.in.listUnordered.length-1] > matchUnOrdered[1].length) {
+                        this.in.listUnordered.pop()
+                        this.html += `\n`
+                        if (this.in.listUnordered.length == 0) {
+                            break
+                        }
+                    }
+                }
+            }
+            if (sList == 'same') {
+                this.html += `
  • ${line}
  • \n` + } else if (sList == 'next') { + this.html += `
      \n
    • ${line}
    • \n` + } + return + } this.html += `

      ${line}

      ` }