diff --git a/src/info/components/partner-card.js b/src/info/components/partner-card.js
index 667ec29..bb79231 100644
--- a/src/info/components/partner-card.js
+++ b/src/info/components/partner-card.js
@@ -2,11 +2,11 @@ import Link from "next/link";
import Image from "next/image";
export function validURL(str) {
- var pattern = new RegExp(
+ const pattern = new RegExp(
"^(https?:\\/\\/)?" + // protocol
"((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|" + // domain name
"((\\d{1,3}\\.){3}\\d{1,3}))" + // OR ip (v4) address
- "(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*" + // port and path
+ "(\\:\\d+)?(\\/[-a-z\\d%_.~+$]*)*" + // port and path
"(\\?[;&a-z\\d%_.~+=-]*)?" + // query string
"(\\#[-a-z\\d_]*)?$",
"i"
@@ -14,7 +14,37 @@ export function validURL(str) {
return !!pattern.test(str);
}
-export function renderPossibleURLField(field) {
+export function replaceWithImageTags(index, str, emoji_path) {
+ if (index % 2 === 0) {
+ return
{`${str}`}
;
+ } else {
+ return (
+ <>
+
+
+
+ >
+ );
+ }
+}
+
+export function formatCustomEmoji(str, emoji_paths) {
+ const emoji_pattern = new RegExp(/(:[A-Za-z_-]+:)/, "g");
+ const values = emoji_pattern[Symbol.split](str);
+ if (Boolean(emoji_paths)) {
+ return (
+ <>
+ {Object.keys(values).map((v) =>
+ replaceWithImageTags(v, values[v], emoji_paths[values[v]])
+ )}
+ >
+ );
+ } else {
+ return <>>;
+ }
+}
+
+export function renderPossibleURLField(field, emoji_paths) {
if (validURL(field)) {
return (
@@ -28,18 +58,22 @@ export function renderPossibleURLField(field) {
} else {
return (
- {field}
+ {formatCustomEmoji(field, emoji_paths)}
);
}
}
-export function renderPossibleFields(fields) {
+export function renderPossibleFields(fields, emoji_paths) {
if (Boolean(fields)) {
return Object.keys(fields).map((field) => (
-
{renderPossibleURLField(field)}
-
{renderPossibleURLField(fields[field])}
+
+ {renderPossibleURLField(field, emoji_paths)}
+
+
+ {renderPossibleURLField(fields[field], emoji_paths)}
+
));
} else {
@@ -47,24 +81,38 @@ export function renderPossibleFields(fields) {
}
}
-export function renderPossibleBio(bio) {
+export function renderPossibleBio(bio, emoji_paths) {
if (Boolean(bio)) {
let bioarray = bio.split("\n");
bioarray = bioarray.slice(0, bioarray.length - 1);
const biodict = Object.assign({}, bioarray);
return Object.keys(biodict).map((bio) => (
- {biodict[bio] == "" ?
: biodict[bio]}
+
+ {biodict[bio] == "" ? (
+
+ ) : (
+ formatCustomEmoji(biodict[bio], emoji_paths)
+ )}
+
));
} else {
return <>>;
}
}
-export default function PartnerCard({ src, alt, url, fields, bio, user }) {
+export default function PartnerCard({
+ src,
+ alt,
+ url,
+ fields,
+ bio,
+ user,
+ emoji_paths,
+}) {
const finalsrc = Boolean(src) ? src : "/images/logo.png";
return (
-
+
-
- {renderPossibleFields(fields)}
+
+ {renderPossibleFields(fields, emoji_paths)}
);
diff --git a/src/info/data/identities/partners.yml b/src/info/data/identities/partners.yml
index 20cc963..d48ce06 100644
--- a/src/info/data/identities/partners.yml
+++ b/src/info/data/identities/partners.yml
@@ -9,7 +9,7 @@ lindsays:
queeeeer: ":qhTrans: :qhPolyro: :qhPolyam:"
LiberaPay: "https://liberapay.com/Lindsayschmocker"
bio: |
- Lindsay. She/her. US/CO. audio engineer, photographer, digital artist, sysadmin, network engineer, metal fabricator (hiatus on fabricating). very not vanilla. otherkin-furry on main. slowly converting into Judaism. always burning the candle for those we've lost. 🕯️ may their memories be for a blessing. Never again means NEVER again; SRA member. Black lives always have, do, and always will matter.
+ Lindsay. She/her. US/CO. audio engineer, photographer, digital artist, sysadmin, network engineer, metal fabricator (hiatus on fabricating). very not vanilla. otherkin-furry on main. slowly converting into Judaism. always burning the candle for those we've lost. :ms_candle: may their memories be for a blessing. Never again means NEVER again; SRA member. Black lives always have, do, and always will matter.
ASK before DMing.
@@ -41,5 +41,21 @@ karma:
plausocks:
url: "https://masto.werefox.dev/@plausocks"
avi: "/images/plausocks.png"
+ fields:
+ Ko-fi: "https://ko-fi.com/plausocks"
+ Paypal: "https://paypal.me/plausocks"
+ CashApp: "https://cash.app/$plausocks"
bio: |
am cat, am gay
+
+ ~Transgender 🏳️⚧️ ⚧️ (She/Her), Polyamorous :potion_polyamory: , ADHD, Plural :plural: (newly discovered/still discovering), most definitely neurodivergent :ms_neurodiversity:, CatGirl~ 🏳️🌈
+
+ Please don't follow me if you're under 18 🔞
+
+ Taken by 4 Partners~
+ - @alexis@masto.werefox.dev 💙 :alexis:
+ - @aowora@vulpine.club 💜 :Elizafox:
+ - @violet@vulpine.club 💜 :violet_bat:
+ - @cdmnky@vulpine.club 💚 :sierra:
+
+ I Live in Tulsa, Oklahoma
diff --git a/src/info/pages/identities/partners/index.js b/src/info/pages/identities/partners/index.js
index 71dcecf..95dc1b0 100644
--- a/src/info/pages/identities/partners/index.js
+++ b/src/info/pages/identities/partners/index.js
@@ -8,21 +8,51 @@ export async function getStaticProps() {
const fs = require("fs");
const yaml = require("js-yaml");
let PARTNERS = {};
+ let emoji_paths = {};
try {
let fileContent = fs.readFileSync("./data/identities/partners.yml", "utf8");
PARTNERS = yaml.load(fileContent);
+ const emoji_pattern = new RegExp(/(:[A-Za-z_-]+:)/, "g");
+ let emoji = [];
+ Object.keys(PARTNERS).forEach((p, i) => {
+ Array.from(emoji_pattern[Symbol.matchAll](PARTNERS[p].bio)).forEach(
+ (e, i) => {
+ emoji.push(e[0]);
+ }
+ );
+ Object.keys(PARTNERS[p].fields).forEach((f, i) => {
+ Array.from(emoji_pattern[Symbol.matchAll](f)).forEach((e, i) => {
+ emoji.push(e[0]);
+ });
+ Array.from(
+ emoji_pattern[Symbol.matchAll](PARTNERS[p].fields[f])
+ ).forEach((e, i) => {
+ emoji.push(e[0]);
+ });
+ });
+ });
+ emoji.forEach((e, i) => {
+ if (fs.existsSync(`./public/emoji/${e}.svg`)) {
+ emoji_paths[e] = `/emoji/${e}.svg`;
+ } else if (fs.existsSync(`./public/emoji/${e}.png`)) {
+ emoji_paths[e] = `/emoji/${e}.png`;
+ } else {
+ emoji_paths[e] = `/emoji/pixel_alexis.png`;
+ }
+ });
} catch (e) {
console.log(e);
}
return {
props: {
PARTNERS,
+ emoji_paths,
},
};
}
-export default function Partners({ PARTNERS }) {
+export default function Partners({ PARTNERS, emoji_paths }) {
if (PARTNERS) {
return (
))}
diff --git a/src/info/public/emoji/:Elizafox:.png b/src/info/public/emoji/:Elizafox:.png
new file mode 100644
index 0000000..7f27e3c
Binary files /dev/null and b/src/info/public/emoji/:Elizafox:.png differ
diff --git a/src/info/public/emoji/:ms_candle:.svg b/src/info/public/emoji/:ms_candle:.svg
new file mode 100644
index 0000000..6630ec5
--- /dev/null
+++ b/src/info/public/emoji/:ms_candle:.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/info/public/emoji/:ms_neurodiversity:.svg b/src/info/public/emoji/:ms_neurodiversity:.svg
new file mode 100644
index 0000000..e9a65da
--- /dev/null
+++ b/src/info/public/emoji/:ms_neurodiversity:.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/info/public/emoji/:plural:.png b/src/info/public/emoji/:plural:.png
new file mode 100644
index 0000000..72fb803
Binary files /dev/null and b/src/info/public/emoji/:plural:.png differ
diff --git a/src/info/public/emoji/:potion_polyamory:.png b/src/info/public/emoji/:potion_polyamory:.png
new file mode 100644
index 0000000..a8ce6ed
Binary files /dev/null and b/src/info/public/emoji/:potion_polyamory:.png differ
diff --git a/src/info/public/emoji/:qhPolyam:.png b/src/info/public/emoji/:qhPolyam:.png
new file mode 100644
index 0000000..e13eb89
Binary files /dev/null and b/src/info/public/emoji/:qhPolyam:.png differ
diff --git a/src/info/public/emoji/:qhPolyro:.png b/src/info/public/emoji/:qhPolyro:.png
new file mode 100644
index 0000000..f36d5c9
Binary files /dev/null and b/src/info/public/emoji/:qhPolyro:.png differ
diff --git a/src/info/public/emoji/:qhTrans:.png b/src/info/public/emoji/:qhTrans:.png
new file mode 100644
index 0000000..46527f1
Binary files /dev/null and b/src/info/public/emoji/:qhTrans:.png differ
diff --git a/src/info/public/emoji/:sierra:.png b/src/info/public/emoji/:sierra:.png
new file mode 100644
index 0000000..ec12343
Binary files /dev/null and b/src/info/public/emoji/:sierra:.png differ
diff --git a/src/info/public/emoji/:violet_bat:.png b/src/info/public/emoji/:violet_bat:.png
new file mode 100644
index 0000000..d832a92
Binary files /dev/null and b/src/info/public/emoji/:violet_bat:.png differ