diff --git a/generate/portfolio/skills.ejs b/generate/portfolio/skills.ejs
index fd0e36b..d665e05 100644
--- a/generate/portfolio/skills.ejs
+++ b/generate/portfolio/skills.ejs
@@ -8,23 +8,17 @@
xmlns="http://www.w3.org/1999/xhtml"
xmlns:xlink="http://www.w3.org/1999/xlink"
>
-
Programming Languages
-
- <%- include("badges.ejs", { badges: data.programmingLanguage }) %>
-
- Front End
-
- Web
-
- <%- include("badges.ejs", { badges: data.frontEndWeb }) %>
-
- Desktop
-
- <%- include("badges.ejs", { badges: data.frontEndDesktop }) %>
-
- Game development
-
- <%- include("badges.ejs", { badges: data.gameDev }) %>
+ <% for (let key in data) { %>
+ <% if(data[key] instanceof Array){ %>
+ <%- key %>
+ <%- include("badges.ejs", { badges: data[key] }) %>
+ <% } else{ %>
+ <% for (let subKey in data[key]) { %>
+ <%- subKey %>
+ <%- include("badges.ejs", { badges: data[key][subKey] }) %>
+ <% } %>
+ <% } %>
+ <% } %>
diff --git a/generate/portfolio/skills.json b/generate/portfolio/skills.json
index 7856d47..7f7e91b 100644
--- a/generate/portfolio/skills.json
+++ b/generate/portfolio/skills.json
@@ -1,12 +1,15 @@
{
- "programmingLanguage": [
+ "Programming Languages": [
"javascript",
"typescript",
"python",
"rust",
"csharp"
],
- "frontEndWeb": ["react", "svelte", "tailwindcss"],
- "frontEndDesktop": ["gtk", "electron", "tauri"],
- "gameDev": ["unity", "godotengine Godot"]
+ "Front End": {
+ "Web": ["react", "svelte", "tailwindcss"],
+ "Desktop": ["gtk", "electron", "tauri"]
+ },
+ "Game Development": ["unity", "godotengine Godot"],
+ "Etc": ["figma", "markdown"]
}
diff --git a/generate/postProcess.ts b/generate/postProcess.ts
index 743fd57..6ceb6e2 100644
--- a/generate/postProcess.ts
+++ b/generate/postProcess.ts
@@ -57,17 +57,50 @@ function generatePortfolioSVGs() {
const style = readFileSync("./generate/portfolio/style.css", "utf-8")
- const data: { [key in keyof typeof skills]: Badge[] } = {
- programmingLanguage: [],
- frontEndWeb: [],
- frontEndDesktop: [],
- gameDev: [],
- }
+ const data: {
+ [key: string]: Badge[] | { [key: string]: Badge[] }
+ } = {}
- for (const skillCategory in skills) {
- skills[skillCategory as keyof typeof skills].forEach((badge: string) => {
- data[skillCategory as keyof typeof skills].push(parseBadge(badge))
- })
+ // C O G N I T O - H A Z A R D
+ // THIS PART OF THE CODE WAS WRITTEN IN 3 AM
+ // C O G N I T O - H A Z A R D
+
+ for (const key in skills) {
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
+ // @ts-ignore
+ if (skills[key] instanceof Array) {
+ if (!data[key]) {
+ data[key] = []
+ }
+
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
+ // @ts-ignore
+ ;(skills[key] as string[]).forEach((badge) =>
+ (data[key] as Badge[]).push(parseBadge(badge))
+ )
+ } else {
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
+ // @ts-ignore
+ for (const subKey in skills[key]) {
+ if (!data[key]) data[key] = {}
+
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
+ // @ts-ignore
+ if (!data[key][subKey]) {
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
+ // @ts-ignore
+ data[key][subKey] = []
+ }
+
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
+ // @ts-ignore
+ skills[key][subKey].forEach((badge: string) =>
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
+ // @ts-ignore
+ (data[key][subKey] as Badge[]).push(parseBadge(badge))
+ )
+ }
+ }
}
const renderedSVG = ejs.render(