Compare commits

..

11 commits

6 changed files with 101 additions and 20 deletions

View file

@ -91,8 +91,7 @@
"words": [
"brain"
],
"color": "pink",
"caseInsensitive": true
"color": "#f5abb9"
},
{
"words": [
@ -184,7 +183,8 @@
},
{
"words": [
"Fedi"
"Fedi",
"Sharkey"
],
"color": "rgb(175, 125, 200)"
},
@ -194,6 +194,12 @@
],
"color": "rgb(100, 255, 200)"
},
{
"words": [
"Signal"
],
"color": "#3b45fd"
},
{
"words": [
"Codeberg",

View file

@ -146,15 +146,17 @@ function highlighter(json, full = true, linkParent = false) {
var termKey = "{TERM" + index + "}"
var termProps = dict
while (element.content.includes(termKey)) {
var endRegex = " "
var termIndex = element.content.indexOf(termKey)
var spanEnd = element.content.indexOf(" ", termIndex)
var spanEnd = element.content.indexOf(endRegex, termIndex)
if (spanEnd == -1) {
spanEnd = element.content.length
}
var spanStart = element.content.substring(0, termIndex).lastIndexOf(" ") + 1
var spanStart = element.content.substring(0, termIndex).lastIndexOf(endRegex) + 1
// if (highTable[index] == "ULTRAKILL") {
// console.log(startContent, " ---- ", endContent)
@ -164,12 +166,26 @@ function highlighter(json, full = true, linkParent = false) {
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)
var newSpanEnd = element.content.indexOf(")", spanStart) + 1
var newEndContent = element.content.substring(termIndex + termKey.length, newSpanEnd)
if (newEndContent.includes("<") || newEndContent.includes("TERM")) {
spanStart += 1
startContent = startContent.substring(2)
} else {
spanEnd = newSpanEnd
endContent = newEndContent
}
}
else if (endContent.includes(")") && !startContent.includes("(")) {
spanStart = element.content.substring(0, spanStart).lastIndexOf("(")
startContent = element.content.substring(spanStart - 1, termIndex)
var newSpanStart = element.content.substring(0, spanStart).lastIndexOf("(")
var newStartContent = element.content.substring(newSpanStart - 1, termIndex)
if (newStartContent.includes("<") || newStartContent.includes("TERM")) {
spanEnd -= 1
endContent = endContent.substring(0, endContent.length - 1)
} else {
spanStart = newSpanStart
startContent = newStartContent
}
}
var style = termProps.style || ""
@ -300,7 +316,7 @@ function converter(html, dynamic = true) {
"WEATHER_MODIFIER": randomThemer.returnTheme(),
"WEATHER_TEXT": "",
"ANNOUNCEMENT": fs.readFileSync(path.join(__dirname, "config/announcement.html")),
"SOCIALS": () => {
"SOCIALS": (full) => {
if (api.lanyard && api.lanyard.socials) {
var socials = api.lanyard.socials
var html = `<div class="grid-container">`
@ -313,8 +329,9 @@ function converter(html, dynamic = true) {
for (var x = 0; x < sitesTable.length; x++) {
var siteName = sitesTable[x]
var siteData = sites[siteName]
html += `<a class="chip" ${onlyIfExists(`href="${siteData.url}"`, siteData.url)}>${siteName}: <span class="noHighlight">${siteData.name}</span></a>`
if (siteData.main || full) {
html += `<a class="chip ${siteData.pref || ""}pref" ${onlyIfExists(`href="${siteData.url}"`, siteData.url)}>${siteName}: <span class="noHighlight">${siteData.name}</span></a>`
}
}
html += "</div></div>"
}
@ -354,6 +371,9 @@ function converter(html, dynamic = true) {
<script src="../js/lanyardSocket.js"></script>
<script src="../js/timeFormatter.js"></script>
`
},
"TEST_KEYWORD": (arg1, arg2, arg3) => {
return `<p>The arguements you inputted are "${arg1}" and "${arg2}". Wow!</p>`
}
}
@ -380,10 +400,34 @@ function converter(html, dynamic = true) {
for (let index = 0; index < rpTable.length; index++) {
const text = rpTable[index];
if (dynamic) {
replacers[text] = himalaya.stringify(highlighter(himalaya.parse(replacers[text])))
const braceText = `{${text}}`
if (typeof replacers[text] == "function" && replacers[text].length == 0) {
replacers[text] = replacers[text]()
}
while (html.includes(braceText)) {
var posOfKeyword = html.indexOf(braceText)
var keywordLength = braceText.length
var args = undefined
if (html.charAt(posOfKeyword + keywordLength) == "(") {
args = html.substring(posOfKeyword + keywordLength + 1)
keywordLength = args.substring(0, args.indexOf(")")).length + keywordLength + 2
args = args.substring(0, args.indexOf(")"))
args = args.split(",").map(item => item.trim())
}
var fnString = replacers[text]
if (typeof fnString == "function") {
fnString = fnString.apply(null, args)
}
if (dynamic) {
fnString = himalaya.stringify(highlighter(himalaya.parse(fnString)))
}
html = html.substring(0, posOfKeyword) + fnString + html.substring(posOfKeyword + keywordLength)
// break
}
html = html.replaceAll(`{${text}}`, replacers[text])
}
if (!dynamic) {

View file

@ -77,17 +77,26 @@
</div>
{ANNOUNCEMENT}
<h2><hr>Services</h2>
<h1><hr>Services</h1>
<p>List of services for public use hosted on Violet's Purgatory.</p>
<h2><br>Public:</h2>
<a href="https://sxng.violets-purgatory.dev" class="chip">SearXNG: <span class="noHighlight">sxng.violets-purgatory.dev</span></a>
<!-- <a class="chip">Matrix: matrix.violets-purgatory.dev</a> -->
<!-- <a href="https://element.violets-purgatory.dev" class="chip">Element: element.violets-purgatory.dev</a> -->
<a href="https://git.viois.gay" class="chip">Forgejo: <span class="noHighlight">git.viois.gay</span></a>
<a href="https://univerter.dev" class="chip">Univerter: <span class="noHighlight">univerter.dev</span></a>
<a class="chip">Thumbor: <span class="noHighlight">thumbor.violets-purgatory.dev</span></a>
<h2><br>Invite only:</h2>
<a href="https://git.viois.gay" class="chip">Forgejo: <span class="noHighlight">git.viois.gay</span></a>
<a href="https://pds.violets-purgatory.dev" class="chip">Bluesky: <span class="noHighlight">pds.violets-purgatory.dev</span></a>
<a href="https://sharkey.violets-purgatory.dev" class="chip">Fedi (Sharkey): <span class="noHighlight">sharkey.violets-purgatory.dev</span></a>
<br>
<p>Feel free to DM me anywhere (Discord & Fedi are best) for an invite! Do understand though, <b>my instances are not stable!<br></b>
<underline>By using my services, you are confirming you understand that there are risks of data loss, downtime, and bugs!!!</underline></p>
<hr>
<h1>Socials</h1>
{PATH_SOCIALS}
<p>Here's some of the sites you can find me on! Check the full <a href="./socials/">socials</a> page for more details & links.</p>
{SOCIALS}
<br>
{SELECTED_VIDEO}

View file

@ -29,8 +29,10 @@
<div class="mainDiv">
<hr>
<main>
<p>Here's most of the sites you can find me on-<br>if you needed that for some reason?</p>
{SOCIALS}
<p>Here's most of the sites you can find me on!</p>
{SOCIALS}(Full)
<p>Gray border = preferred, Yellow = neutral, Red = not preferred. <br>
Interacting via any site is perfectly fine! E.G. if you use both Fedi and Bluesky, Bluesky is yellow, so you should contact me through Fedi instead! But if you don't have Fedi, then just contact me through Bluesky!</p>
<br>
</main>
<div id="activityHtml">

View file

@ -335,6 +335,10 @@ b, b > *, .activityTitle, .activityTitle > *, .bold {
font-family: "RubikBold", Verdana, Geneva, Tahoma, sans-serif;
}
underline {
text-decoration: underline;
}
.activityTitle {
text-decoration: underline;
}

View file

@ -16,3 +16,19 @@ h1:nth-of-type(1) {
.mainDiv {
margin: auto;
}
.notpref {
border-color: rgb(150, 25, 25);
}
.notpref:hover {
border-color: red;
}
.neutralpref {
border-color: rgb(150, 150, 75);
}
.neutralpref:hover {
border-color: yellow;
}