Enhanced rich text parsing for specific plain text content

This commit is contained in:
loner
2025-11-19 05:11:27 +08:00
parent 4b507fa238
commit 1a4f151bbc
+23 -3
View File
@@ -158,7 +158,7 @@ Item {
const parsed = JSON.parse(lineToParse);
const text = parsed.text || "";
const icon = parsed.icon || "";
const tooltip = parsed.tooltip || "";
let tooltip = parsed.tooltip || "";
if (checkCollapse(text)) {
_dynamicText = "";
@@ -169,7 +169,8 @@ Item {
_dynamicText = text;
_dynamicIcon = icon;
_dynamicTooltip = tooltip;
_dynamicTooltip = toHtml(tooltip);
return;
} catch (e) {
Logger.w("CustomButton", `Failed to parse JSON. Content: "${lineToParse}"`);
@@ -185,7 +186,7 @@ Item {
_dynamicText = contentStr;
_dynamicIcon = "";
_dynamicTooltip = "";
_dynamicTooltip = toHtml(contentStr);
}
function checkCollapse(text) {
@@ -244,6 +245,25 @@ Item {
}
}
function toHtml(str) {
const htmlRegex = /<\/?[a-zA-Z][\s\S]*>/;
if (htmlRegex.test(str)) {
return str;
}
const escaped = str
.replace(/&/g, "&amp;")
.replace(/</g, "&lt;")
.replace(/>/g, "&gt;")
.replace(/"/g, "&quot;")
.replace(/'/g, "&#39;");
const withBreaks = escaped.replace(/\r\n|\r|\n/g, "<br/>");
return withBreaks;
}
function runTextCommand() {
if (!textCommand || textCommand.length === 0)
return;