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(