function linkify(text, show_media) {
return text.replace(URL_REGEX, function(match, p1, p2, p3) {
const url = p2+p3;
let parsed;
try {
parsed = new URL(url)
} catch (err) {
return match;
}
let html;
if (show_media && is_img_url(parsed.pathname)) {
html = `
`;
} else if (show_media && is_video_url(parsed.pathname)) {
html = `
`;
} else {
html = `${url}`;
}
return p1+html;
})
}
function format_content(ev, show_media) {
if (ev.kind === 7) {
if (ev.content === "" || ev.content === "+")
return "❤️"
return sanitize(ev.content.trim())
}
const content = ev.content.trim()
const body = convert_quote_blocks(content, show_media)
let cw = get_content_warning(ev.tags)
if (cw !== null) {
let cwHTML = "Content Warning"
if (cw === "") {
cwHTML += "."
} else {
cwHTML += `: "${cw}".`
}
return `
${cwHTML}
${body}
`
}
return body
}
function convert_quote_blocks(content, show_media)
{
const split = content.split("\n")
let blockin = false
return split.reduce((str, line) => {
if (line !== "" && line[0] === '>') {
if (!blockin) {
str += ""
blockin = true
}
str += linkify(sanitize(line.slice(1)), show_media)
} else {
if (blockin) {
blockin = false
str += ""
}
str += linkify(sanitize(line), show_media)
}
return str + "
"
}, "")
}