xP: detect links in the log

This commit is contained in:
Přemysl Eric Janouch 2022-09-10 17:18:08 +02:00
parent 240fac4d90
commit d29e2cbfe8
Signed by: p
GPG Key ID: A0420B94F92B9493
1 changed files with 21 additions and 8 deletions

View File

@ -277,6 +277,12 @@ for (let i = 0; i < 24; i++) {
// ---- UI ---------------------------------------------------------------------
let linkRE = [
/https?:\/\//,
/([^\[\](){}<>"'\s]|\([^\[\](){}<>"'\s]*\))+/,
/[^\[\](){}<>"'\s,.:]/,
].map(r => r.source).join('')
let Toolbar = {
toggleAutoscroll: () => {
bufferAutoscroll = !bufferAutoscroll
@ -349,13 +355,7 @@ let Content = {
},
linkify: (text, attrs) => {
let re = new RegExp([
/https?:\/\//,
/([^\[\](){}<>"'\s]|\([^\[\](){}<>"'\s]*\))+/,
/[^\[\](){}<>"'\s,.:]/,
].map(r => r.source).join(''), 'g')
let a = [], end = 0, match
let re = new RegExp(linkRE, 'g'), a = [], end = 0, match
while ((match = re.exec(text)) !== null) {
if (end < match.index)
a.push(m('span', attrs, text.substring(end, match.index)))
@ -480,8 +480,21 @@ let Log = {
vnode.dom.scrollTop = vnode.dom.scrollHeight
},
linkify: text => {
let re = new RegExp(linkRE, 'g'), a = [], end = 0, match
while ((match = re.exec(text)) !== null) {
if (end < match.index)
a.push(text.substring(end, match.index))
a.push(m('a[target=_blank]', {href: match[0]}, match[0]))
end = re.lastIndex
}
if (end < text.length)
a.push(text.substring(end))
return a
},
view: vnode => {
return m(".log", {}, bufferLog)
return m(".log", {}, Log.linkify(bufferLog))
},
}