Mercurial Hosting > lang
comparison src/site.js @ 29:505185272dd7
edit chat
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sat, 02 Aug 2025 22:39:48 -0600 |
parents | 99b71a377f2c |
children | 1e7d855afde3 |
comparison
equal
deleted
inserted
replaced
28:99b71a377f2c | 29:505185272dd7 |
---|---|
122 | 122 |
123 // requires markdown-it | 123 // requires markdown-it |
124 | 124 |
125 let mdDiv = document.createElement('div'); | 125 let mdDiv = document.createElement('div'); |
126 | 126 |
127 function handleMarkdown() { | 127 function handleMarkdown(lang) { |
128 let converter = window.markdownit({html: true}); | 128 let converter = window.markdownit({html: true}); |
129 let divs = document.querySelectorAll('[markdown]'); | 129 let divs = document.querySelectorAll('[markdown]'); |
130 for( let div of divs ) { | 130 for( let div of divs ) { |
131 let text = div.textContent; | 131 let text = div.textContent; |
132 text = text.replace(/\{([^|}]+)\|([^|}]+)\}/g, '<ruby>$1<rt>$2</rt></ruby>'); | 132 text = text.replace(/\{([^|}]+)\|([^|}]+)\}/g, '<ruby>$1<rt>$2</rt></ruby>'); |
133 text = converter.render(text); | 133 text = converter.render(text); |
134 if( div.getAttribute('role')==='assistant' ) { | 134 if( lang && div.getAttribute('role')==='assistant' ) { |
135 mdDiv.innerHTML = text; | 135 mdDiv.innerHTML = text; |
136 let rts = mdDiv.querySelectorAll('rt'); | 136 let rts = mdDiv.querySelectorAll('rt'); |
137 for( let rt of rts ) { | 137 for( let rt of rts ) { |
138 rt.remove(); | 138 rt.remove(); |
139 } | 139 } |
140 //console.log(mdDiv.textContent); | 140 //console.log(mdDiv.textContent); |
141 let lang = div.getAttribute('lang'); | |
142 text += `\n<p><audio controls preload=none src="/tts.mp3?lang=${lang}&text=${encodeURIComponent(mdDiv.textContent)}"></audio></p>\n`; | 141 text += `\n<p><audio controls preload=none src="/tts.mp3?lang=${lang}&text=${encodeURIComponent(mdDiv.textContent)}"></audio></p>\n`; |
143 } | 142 } |
144 div.innerHTML = text; | 143 div.innerHTML = text; |
145 div.removeAttribute('markdown'); | 144 div.removeAttribute('markdown'); |
146 } | 145 } |