From b798f1538729c977896bca088f6fb53c7aaa48d6 Mon Sep 17 00:00:00 2001 From: bingus_violet Date: Sat, 29 Jun 2024 23:12:42 -0500 Subject: [PATCH] Much more organized word highlight config --- constants.json | 362 ++++++++++++++++++++++------------------ pageUpdater.js | 179 +++++++++++--------- static/asahi/index.html | 92 ---------- 3 files changed, 297 insertions(+), 336 deletions(-) delete mode 100644 static/asahi/index.html diff --git a/constants.json b/constants.json index 4882a9d..96a914e 100644 --- a/constants.json +++ b/constants.json @@ -124,193 +124,231 @@ } } }, - "highlightedWords": { - "birds": { + "highlightedWords": [ + { + "words": [ + "birds", + "Pissing", + "Starwalker", + + "word highlighting", + "highlight", + "Highlight", + + "Javascript", + "JSON", + "JQuery", + ".js" + ], "color": "yellow" }, - "Pissing": { - "color": "yellow" - }, - "Starwalker": { - "color": "yellow" - }, - "word highlighting": { - "color": "yellow" - }, - "Godot Engine": { - "color": "#64B5F6" - }, - "Javascript": { - "color": "yellow" - }, - "JSON": { - "color": "yellow" - }, - "JQuery": { - "color": "yellow" - }, - "NodeJS": { - "color": "limegreen" - }, - "Violet": { - "color": "rgb(200, 150, 255)" - }, - "Purgatory": { - "color": "rgb(200, 150, 255)" - }, - "Limbo": { - "color": "rgb(200, 150, 255)" - }, - "Asahi": { - "color": "rgb(255, 175, 175)", + { + "words": [ + "Teto Tuesday", + "Teto Territory", + "Teto", + "Kasane" + ], + "color": "#d5738d", "caseInsensitive": true }, - "Lunya": { - "color": "rgb(255, 175, 175)" - }, - "Sylvie": { - "color": "#f768a4" - }, - "bisexual": { - "color": "rgb(214, 2, 112)" - }, - "enby": { - "color": "rgb(252, 244, 52)" - }, - "YouTube": { - "color": "rgb(255, 0, 0)", - "caseInsensitive": true - }, - "Fedi": { - "color": "rgb(175, 125, 200)" - }, - "Matrix": { - "color": "limegreen" - }, - "Element": { - "color": "rgb(100, 255, 200)" - }, - "Codeberg": { - "color": "rgb(0, 255, 255)" - }, - "Code": { - "color": "rgb(150, 175, 255)" - }, - "Codium": { - "color": "rgb(150, 175, 255)" - }, - "Docker": { - "color": "blue" - }, - "Github": { - "color": "gray" - }, - "Steam": { - "color": "lightgray" - }, - "Univerter": { - "link": "https://univerter.dev/", - "color": "rgb(200, 175, 255)" - }, - "Ko-fi": { - "color": "rgb(255, 150, 150)" - }, - "Revolt": { - "color": "rgb(255, 50, 50)" - }, - "Discord": { - "color": "rgb(150, 150, 255)" - }, - "SearXNG": { - "color": "rgb(100, 100, 255)" - }, - "highlight": { - "color": "yellow", - "caseInsensitive": true - }, - "Forgejo": { - "color": "orange" - }, - "HTML": { - "color": "orange" - }, - "CSS": { - "color": "rgb(50, 200, 255)" - }, - "Thumbor": { - "color": "rgb(225, 225, 255)" - }, - "Spotify": { - "color": "limegreen" - }, - "ULTRAKILL": { + { + "words": [ + "YouTube", + "ULTRAKILL", + "Lethal Company" + ], "color": "red", "caseInsensitive": true }, - "Risk of Rain 2": { + { + "words": [ + "Spooky's Jump Scare Mansion" + ], + "color": "rgb(150, 175, 255)" + }, + { + "words": [ + "Forgejo", + "HTML", + "Shortcat", + "Valve", + "Spooky" + ], + "color": "orange" + }, + { + "words": [ + "NodeJS", + "Spotify", + "Wambu" + ], + "color": "limegreen" + }, + { + "words": [ + "Godot Engine" + ], + "color": "#64B5F6" + }, + { + "words": [ + "Violet", + "Purgatory", + "Limbo" + ], + "color": "rgb(200, 150, 255)" + }, + { + "words": [ + "bisexual" + ], + "color": "rgb(214, 2, 112)" + }, + { + "words": [ + "Fedi" + ], + "color": "rgb(175, 125, 200)" + }, + { + "words": [ + "Matrix" + ], + "color": "limegreen" + }, + { + "words": [ + "Element" + ], + "color": "rgb(100, 255, 200)" + }, + { + "words": [ + "Codeberg" + ], + "color": "rgb(0, 255, 255)" + }, + { + "words": [ + "Code" + ], + "color": "rgb(150, 175, 255)" + }, + { + "words": [ + "Codium" + ], + "color": "rgb(150, 175, 255)" + }, + { + "words": [ + "Docker" + ], + "color": "blue" + }, + { + "words": [ + "Github" + ], + "color": "gray" + }, + { + "words": [ + "Steam" + ], + "color": "lightgray" + }, + { + "words": [ + "Univerter" + ], + "link": "https://univerter.dev/", + "color": "rgb(200, 175, 255)" + }, + { + "words": [ + "Ko-fi" + ], + "color": "rgb(255, 150, 150)" + }, + { + "words": [ + "Revolt" + ], + "color": "rgb(255, 50, 50)" + }, + { + "words": [ + "Discord" + ], + "color": "rgb(150, 150, 255)" + }, + { + "words": [ + "SearXNG" + ], + "color": "rgb(100, 100, 255)" + }, + { + "words": [ + "CSS" + ], + "color": "rgb(50, 200, 255)" + }, + { + "words": [ + "Thumbor" + ], + "color": "rgb(225, 225, 255)" + }, + { + "words": [ + "Risk of Rain 2" + ], "color": "rgb(150, 220, 255)", "caseInsensitive": true }, - "Liberapay": { + { + "words": [ + "Liberapay" + ], "color": "yellow" }, - "Roblox": { + { + "words": [ + "Roblox" + ], "color": "rgb(225, 225, 225)" }, - "Teto Tuesday": { - "color": "#d5738d", - "caseInsensitive": true - }, - "Teto Territory": { - "color": "#d5738d", - "caseInsensitive": true - }, - "Teto": { - "color": "#d5738d", - "caseInsensitive": true - }, - "Kasane": { - "color": "#d5738d", - "caseInsensitive": true - }, - "Ryouiki Tenkai": { + { + "words": [ + "Ryouiki Tenkai" + ], "bold": true, "italicized": true, "caseInsensitive": true }, - "Pokerogue": { + { + "words": [ + "Pokerogue" + ], "caseInsensitive": true, "color": "#366383", "outline": "#d43131", "bold": true }, - "page embed": { + { + "words": [ + "page embed" + ], "link": "/faq#embeds" }, - "YIP": { + { + "words": [ + "YIP" + ], "italicized": true - }, - "Lethal Company": { - "color": "red" - }, - "Wambu": { - "color": "limegreen" - }, - "Spooky's Jump Scare Mansion": { - "color": "rgb(150, 175, 255)" - }, - "Spooky": { - "color": "orange" - }, - ".js": { - "color": "yellow" - }, - "Shortcat": { - "color": "orange" - }, - "Valve": { - "color": "orange", - "caseInsensitive": true } - } + ] } \ No newline at end of file diff --git a/pageUpdater.js b/pageUpdater.js index 5207af1..1aae9f6 100644 --- a/pageUpdater.js +++ b/pageUpdater.js @@ -90,95 +90,103 @@ function highlighter(json, full = true) { element.children = highlighter(element.children, full) } } else if (element.type == "text") { - var highTable = Object.keys(highlightedWords) + var index = 0 + for (let i = 0; i < highlightedWords.length; i++) { + var dict = highlightedWords[i] + for (let x = 0; x < dict.words.length; x++) { + index += 1 + var term = dict.words[x]; + var termProps = dict - for (let index = 0; index < highTable.length; index++) { - var term = highTable[index]; - var termProps = highlightedWords[term] + var reg = term + if (termProps.caseInsensitive) { + reg = new RegExp(`(${term})`, "gi") + } - var reg = term - if (termProps.caseInsensitive) { - reg = new RegExp(`(${term})`, "gi") + element.content = element.content.replaceAll(`{${term}}`, "TEMPORARY_REPLACE") + element.content = element.content.replaceAll(reg, "{TERM" + index + "}") + element.content = element.content.replaceAll("TEMPORARY_REPLACE", `${term}`) } - - element.content = element.content.replaceAll(`{${term}}`, "TEMPORARY_REPLACE") - element.content = element.content.replaceAll(reg, "{TERM" + index + "}") - element.content = element.content.replaceAll("TEMPORARY_REPLACE", `${term}`) } if (full) { - for (let index = 0; index < highTable.length; index++) { - var termKey = "{TERM" + index + "}" - var termProps = highlightedWords[highTable[index]] - while (element.content.includes(termKey)) { - var termIndex = element.content.indexOf(termKey) + var index = 0 + for (let i = 0; i < highlightedWords.length; i++) { + var dict = highlightedWords[i] + for (let x = 0; x < dict.words.length; x++) { + index += 1 + var termKey = "{TERM" + index + "}" + var termProps = dict + while (element.content.includes(termKey)) { + var termIndex = element.content.indexOf(termKey) - var spanEnd = element.content.indexOf(" ", termIndex) + var spanEnd = element.content.indexOf(" ", termIndex) - if (spanEnd == -1) { - spanEnd = element.content.length - } - - var spanStart = element.content.substring(0, termIndex).lastIndexOf(" ") + 1 - - // if (highTable[index] == "ULTRAKILL") { - // console.log(startContent, " ---- ", endContent) - // } - - var startContent = element.content.substring(spanStart - 1, termIndex) - var endContent = element.content.substring(termIndex + termKey.length, spanEnd) - - if (startContent.includes("(") && !endContent.includes(")")) { - spanEnd = element.content.indexOf(")", spanStart) + 1 - endContent = element.content.substring(termIndex + termKey.length, spanEnd) - } - else if (endContent.includes(")") && !startContent.includes("(")) { - spanStart = element.content.substring(0, spanStart).lastIndexOf("(") - startContent = element.content.substring(spanStart - 1, termIndex) - } - - var style = termProps.style || "" - var classes = termProps.classes || "" - var link = termProps.link || "" - - if (termProps.color) { - style += `color: ${termProps.color};` - } - - if (termProps.italicized) { - style += "font-style: italic;" - } - - if (termProps.outline) { - var width = 2 - // style += `text-shadow: -1px -1px 0 ${termProps.outline}, 1px -1px 0 ${termProps.outline}, -1px 1px 0 ${termProps.outline}, 1px 1px 0 ${termProps.outline};` - style += `-webkit-text-stroke: 1px ${termProps.outline};` - // ^ Not in use because it looks bad :30 - } - - if (termProps.bold) { - classes += "bold" - } - - if (style.length > 2) { - style = `style="${style}"` - } - - if (classes.length > 2) { - classes = `class="${classes}"` - } - - var stuff = (startContent + highTable[index] + endContent).trim() - - if (!stuff.includes("span")) { - var replacement = `${stuff}` - - if (link) { - replacement = `${replacement}` + if (spanEnd == -1) { + spanEnd = element.content.length + } + + var spanStart = element.content.substring(0, termIndex).lastIndexOf(" ") + 1 + + // if (highTable[index] == "ULTRAKILL") { + // console.log(startContent, " ---- ", endContent) + // } + + var startContent = element.content.substring(spanStart - 1, termIndex) + var endContent = element.content.substring(termIndex + termKey.length, spanEnd) + + if (startContent.includes("(") && !endContent.includes(")")) { + spanEnd = element.content.indexOf(")", spanStart) + 1 + endContent = element.content.substring(termIndex + termKey.length, spanEnd) + } + else if (endContent.includes(")") && !startContent.includes("(")) { + spanStart = element.content.substring(0, spanStart).lastIndexOf("(") + startContent = element.content.substring(spanStart - 1, termIndex) + } + + var style = termProps.style || "" + var classes = termProps.classes || "" + var link = termProps.link || "" + + if (termProps.color) { + style += `color: ${termProps.color};` + } + + if (termProps.italicized) { + style += "font-style: italic;" + } + + if (termProps.outline) { + var width = 2 + // style += `text-shadow: -1px -1px 0 ${termProps.outline}, 1px -1px 0 ${termProps.outline}, -1px 1px 0 ${termProps.outline}, 1px 1px 0 ${termProps.outline};` + style += `-webkit-text-stroke: 1px ${termProps.outline};` + // ^ Not in use because it looks bad :30 + } + + if (termProps.bold) { + classes += "bold" + } + + if (style.length > 2) { + style = `style="${style}"` + } + + if (classes.length > 2) { + classes = `class="${classes}"` + } + + var stuff = (startContent + dict.words[x] + endContent).trim() + + if (!stuff.includes("span")) { + var replacement = `${stuff}` + + if (link) { + replacement = `${replacement}` + } + element.content = element.content.substring(0, spanStart) + replacement + element.content.substring(spanEnd) + } else { + element.content = element.content.replace(termKey, dict.words[x]) } - element.content = element.content.substring(0, spanStart) + replacement + element.content.substring(spanEnd) - } else { - element.content = element.content.replace(termKey, highTable[index]) } } } @@ -194,9 +202,16 @@ function highlighter(json, full = true) { function converter(html, dynamic = true) { var startTime = Date.now() var config = JSON.parse(fs.readFileSync(path.join(__dirname, 'config/config.json'))) - + var staticReplacers = { - "ALL_HIGHLIGHTS": Object.keys(highlightedWords).join(", "), + "ALL_HIGHLIGHTS": () => { + var addedHTML = "" + for (var i = 0; i < highlightedWords.length; i++) { + addedHTML += highlightedWords[i].words.join(", ") + addedHTML += ", " + } + return addedHTML.substring(0, addedHTML.length - 2) + }, "BRANCH_NAME": () => { if (process.env.BRANCH == "dev") { return "Stable" diff --git a/static/asahi/index.html b/static/asahi/index.html deleted file mode 100644 index 69debc8..0000000 --- a/static/asahi/index.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - - - - - Violet's Purgatory - - - - - - - - - - - {WEATHER_MODIFIER} - {TOPBAR} -

Welcome to myHumble Abode -

-
-

nice seeing you here! while you're at it, why not check out my socials or about me?

-
-
-

Asahi

-
-
- -
-
-
-

They/Them

-

Marcy & Violet <3

-
- -
-
-
-
-

-
hi! my name is Asahi Lunya :3 i'm a bisexual enby who's a very queer mess - -
i have interests in tech, aerospace, trains, art, and music! i'm also a privacy/security - enthusiast - -
i'm currently learning many new things in my life, expanding my knowledge - -
i hope you got to know me a little ^^ -

- - -
-
- -


Disclaimer!

-

- This is NOT Asahi's real site! Please find it here instead! -

- -


Quotes:

- - -

“literally anything from the 1995 movie 'Hackers' will absolutely fit here” -tyberry
-"ooooo you like boys, ur a boykisser" -Elodie
-"asahi is twink-esk in spirit. aspirational." -Juniper
-"cute huggable nice huggable cute cute" -marcy
-"Petting Asahi makes the world better” -yassie
-"meow meow meow mrrrp nya~" -gettie
-"cute and queer catenby that functions as fedi's algorithm on the side" -7331
-"sometimes this one still forgets how friendly some people are here… like Asahi, for instance!” -Ariadne
-"Asahi wa sugoi desu ne?" -Bard
-"this is a quote :3c" -Ukko
-"best Asahi I've ever met (awww!)" -Kristina
-"asahi is friend shaped and they have a good heart" -Drew
-"10/10 will give loving headpats and will protect them!" -Natsura

- - -
- - - \ No newline at end of file