From 857b8d331b5315de79dd41477cd5904d73cda0e3 Mon Sep 17 00:00:00 2001 From: Naomi Carrigan Date: Thu, 31 Oct 2024 03:52:06 +0000 Subject: [PATCH] feat: add retro achievements link (#36) ### Explanation _No response_ ### Issue _No response_ ### Attestations - [x] I have read and agree to the [Code of Conduct](https://docs.nhcarrigan.com/community/coc/) - [x] I have read and agree to the [Community Guidelines](https://docs.nhcarrigan.com/community/guide/). - [x] My contribution complies with the [Contributor Covenant](https://docs.nhcarrigan.com/dev/covenant/). ### Dependencies - [ ] I have pinned the dependencies to a specific patch version. ### Style - [x] I have run the linter and resolved any errors. - [x] My pull request uses an appropriate title, matching the conventional commit standards. - [x] My scope of feat/fix/chore/etc. correctly matches the nature of changes in my pull request. ### Tests - [x] My contribution adds new code, and I have added tests to cover it. - [ ] My contribution modifies existing code, and I have updated the tests to reflect these changes. - [x] All new and existing tests pass locally with my changes. - [x] Code coverage remains at or above the configured threshold. ### Documentation _No response_ ### Versioning Patch - My pull request introduces bug fixes ONLY. Reviewed-on: https://codeberg.org/nhcarrigan/portfolio/pulls/36 Co-authored-by: Naomi Carrigan Co-committed-by: Naomi Carrigan --- package.json | 2 +- src/config/Socials.ts | 135 ++++++++++++++------------- src/icons/RetroAchievements.ts | 116 +++++++++++++++++++++++ test/config/Socials.spec.ts | 8 ++ test/icons/RetroAchievements.spec.ts | 39 ++++++++ 5 files changed, 236 insertions(+), 64 deletions(-) create mode 100644 src/icons/RetroAchievements.ts create mode 100644 test/icons/RetroAchievements.spec.ts diff --git a/package.json b/package.json index 87091dd..d509ab6 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "version": "0.1.0", "private": true, "scripts": { - "prebuild": "pnpm lint", + "prebuild": "pnpm lint && pnpm test", "dev": "next dev", "build": "next build", "start": "next start", diff --git a/src/config/Socials.ts b/src/config/Socials.ts index fa98480..0fa3e70 100644 --- a/src/config/Socials.ts +++ b/src/config/Socials.ts @@ -55,6 +55,7 @@ import { Matrix } from "../icons/Matrix"; import { Peerlist } from "../icons/Peerlist"; import { Pixiv } from "../icons/Pixiv"; import { Polywork } from "../icons/Polywork"; +import { RetroAchievements } from "../icons/RetroAchievements"; import { Saylor } from "../icons/Saylor"; import { TeeSpring } from "../icons/TeeSpring"; import { Throne } from "../icons/Throne"; @@ -142,8 +143,8 @@ const Socials: Array<{ }, { alt: "GitHub Logo", - background: "#333", - color: "#FFF", + background: "#333333", + color: "#FFFFFF", icon: faGithub, label: "GitHub", link: "https://github.com/nhcarrigan", @@ -151,7 +152,7 @@ const Socials: Array<{ { alt: "Discord Logo", background: "#7289DA", - color: "#FFF", + color: "#FFFFFF", icon: faDiscord, label: "Discord", link: "https://chat.naomi.lgbt", @@ -159,15 +160,15 @@ const Socials: Array<{ { alt: "Element Logo", background: "#29B6F6", - color: "#FFF", + color: "#FFFFFF", icon: Matrix, label: "Matrix", link: "https://matrix.to/#/#naomi:matrix.org", }, { alt: "Octothorpe", - background: "#000", - color: "#FFF", + background: "#000000", + color: "#FFFFFF", icon: faHashtag, label: "IRC", link: "https://docs.nhcarrigan.com/about/contact/#33-irc-channels", @@ -175,7 +176,7 @@ const Socials: Array<{ { alt: "Slack Logo", background: "#4A154B", - color: "#FFF", + color: "#FFFFFF", icon: faSlack, label: "Slack", link: "https://join.slack.com/t/naomi-lgbt/signup", @@ -183,7 +184,7 @@ const Socials: Array<{ { alt: "Reddit Logo", background: "#FF4500", - color: "#FFF", + color: "#FFFFFF", icon: faReddit, label: "Reddit", link: "https://reddit.com/r/nhcarrigan", @@ -191,7 +192,7 @@ const Socials: Array<{ { alt: "Hashnode Logo", background: "#2962FF", - color: "#FFF", + color: "#FFFFFF", icon: faHashnode, label: "Blog", link: "https://blog.nhcarrigan.com", @@ -199,15 +200,15 @@ const Socials: Array<{ { alt: "LinkedIn Logo", background: "#0077B5", - color: "#FFF", + color: "#FFFFFF", icon: faLinkedinIn, label: "LinkedIn", link: "https://linkedin.com/in/naomi-lgbt", }, { alt: "Peerlist Logo", - background: "rgb(33, 150, 83)", - color: "#FFF", + background: "#219653", + color: "#FFFFFF", icon: Peerlist, label: "Peerlist", link: "https://resume.nhcarrigan.com", @@ -215,7 +216,7 @@ const Socials: Array<{ { alt: "Polywork Logo", background: "#7C3AED", - color: "#FFF", + color: "#FFFFFF", icon: Polywork, label: "Polywork", link: "https://polywork.nhcarrigan.com/", @@ -223,7 +224,7 @@ const Socials: Array<{ { alt: "Fiverr Logo", background: "#1DBF73", - color: "#FFF", + color: "#FFFFFF", icon: Fiverr, label: "Fiverr", link: "https://www.fiverr.com/nhcarrigan", @@ -231,7 +232,7 @@ const Socials: Array<{ { alt: "Mastodon Logo", background: "#2B90D9", - color: "#FFF", + color: "#FFFFFF", icon: faMastodon, label: "Mastodon", link: "https://mastodon.social/@naomi_lgbt", @@ -239,15 +240,15 @@ const Socials: Array<{ { alt: "X Logo", background: "#1DA1F2", - color: "#FFF", + color: "#FFFFFF", icon: faXTwitter, label: "X (Twitter)", link: "https://x.com/naomi_lgbt", }, { alt: "Steam Logo", - background: "rgb(27, 40, 56)", - color: "rgb(199, 213, 224)", + background: "#1b2838", + color: "#c7d5e0", icon: faSteam, label: "Steam", link: "https://steamcommunity.com/id/naomi-lgbt/", @@ -255,15 +256,15 @@ const Socials: Array<{ { alt: "Twitch Logo", background: "#6441A4", - color: "#FFF", + color: "#FFFFFF", icon: faTwitch, label: "Twitch", link: "https://www.twitch.tv/naomilgbt/", }, { alt: "How Long to Beat Logo", - background: "#333", - color: "#FFF", + background: "#333333", + color: "#FFFFFF", icon: faGamepad, label: "HLTB", link: "https://howlongtobeat.com/user/naomi_lgbt", @@ -271,7 +272,7 @@ const Socials: Array<{ { alt: "Snapchat Logo", background: "#FFFC00", - color: "#000", + color: "#000000", icon: faSnapchat, label: "Snapchat", link: "https://www.snapchat.com/add/naomi-lgbt", @@ -279,7 +280,7 @@ const Socials: Array<{ { alt: "GOG Logo", background: "#863A3A", - color: "#FFF", + color: "#FFFFFF", icon: Gog, label: "GOG", link: "https://www.gog.com/u/naomi-lgbt", @@ -287,15 +288,15 @@ const Socials: Array<{ { alt: "Itch.io Logo", background: "#FA5C5C", - color: "#FFF", + color: "#FFFFFF", icon: faItchIo, label: "Itch.io", link: "https://nhcarrigan.itch.io/", }, { alt: "Lichess Logo", - background: "#000", - color: "#FFF", + background: "#000000", + color: "#FFFFFF", icon: faChessKnight, label: "Lichess", link: "https://lichess.org/../naomi-lgbt", @@ -311,7 +312,7 @@ const Socials: Array<{ { alt: "Paypal Logo", background: "#003087", - color: "#FFF", + color: "#FFFFFF", icon: faPaypal, label: "Paypal", link: "https://paypal.me/nhcarrigan", @@ -319,7 +320,7 @@ const Socials: Array<{ { alt: "Ko-Fi Logo", background: "#FF5E5B", - color: "#FFF", + color: "#FFFFFF", icon: Kofi, label: "Ko-Fi", link: "https://ko-fi.com/nhcarrigan", @@ -327,7 +328,7 @@ const Socials: Array<{ { alt: "Patreon Logo", background: "#F96854", - color: "#FFF", + color: "#FFFFFF", icon: faPatreon, label: "Patreon", link: "https://patreon.com/nhcarrigan", @@ -335,7 +336,7 @@ const Socials: Array<{ { alt: "freeCodeCamp Logo", background: "#0a0a23", - color: "#FFF", + color: "#FFFFFF", icon: faFreeCodeCamp, label: "freeCodeCamp", link: "https://forum.freecodecamp.org/u/nhcarrigan/summary", @@ -343,7 +344,7 @@ const Socials: Array<{ { alt: "NPM Logo", background: "#CB3837", - color: "#FFF", + color: "#FFFFFF", icon: faNpm, label: "NPM", link: "https://www.npmjs.com/~nhcarrigan", @@ -351,7 +352,7 @@ const Socials: Array<{ { alt: "GatherTown Logo", background: "#7B68EE", - color: "#FFF", + color: "#FFFFFF", icon: Gather, label: "GatherTown", link: "https://app.gather.town/invite?token=CiIvbSnrQiW-akXFSPL_", @@ -359,7 +360,7 @@ const Socials: Array<{ { alt: "VRoid Logo", background: "#ffe100", - color: "#000", + color: "#000000", icon: VRoid, label: "VRoid", link: "https://hub.vroid.com/en/characters/6033404747153826650/models/3483506204509065121", @@ -367,7 +368,7 @@ const Socials: Array<{ { alt: "Pixiv Logo", background: "#0096FA", - color: "#FFF", + color: "#FFFFFF", icon: Pixiv, label: "Pixiv", link: "https://www.pixiv.net/en/users/77818154", @@ -375,7 +376,7 @@ const Socials: Array<{ { alt: "Email Icon", background: "#000000", - color: "#FFF", + color: "#FFFFFF", icon: faEnvelope, label: "Email", link: "https://docs.nhcarrigan.com/about/contact/#7-email-communication", @@ -383,7 +384,7 @@ const Socials: Array<{ { alt: "Coursera Logo", background: "#0056D2", - color: "#FFF", + color: "#FFFFFF", icon: Coursera, label: "Coursera", link: "https://www.coursera.org/learner/naomi-lgbt", @@ -391,7 +392,7 @@ const Socials: Array<{ { alt: "Udemy Logo", background: "#EC5252", - color: "#FFF", + color: "#FFFFFF", icon: Udemy, label: "Udemy", link: "https://www.udemy.com/user/naomi-carrigan/", @@ -399,23 +400,23 @@ const Socials: Array<{ { alt: "Wordpress Logo", background: "#1E8EDE", - color: "#FFF", + color: "#FFFFFF", icon: faWordpress, label: "Gravatar", link: "https://gravatar.com/nhcarrigan", }, { alt: "Computer Icon", - background: "#000", - color: "#FFF", + background: "#000000", + color: "#FFFFFF", icon: faComputer, label: "PC Part Picker", link: "https://pcpartpicker.com/user/nhcarrigan/", }, { alt: "Throne.me Logo", - background: "#000", - color: "#FFF", + background: "#000000", + color: "#FFFFFF", icon: Throne, label: "Throne", link: "https://throne.com/naomilgbt", @@ -423,14 +424,14 @@ const Socials: Array<{ { alt: "Stripe Logo", background: "#6772E5", - color: "#FFF", + color: "#FFFFFF", icon: faStripe, label: "Stripe", link: "https://buy.stripe.com/cN24iTfqu1j6b3afZ2", }, { alt: "Signal Logo", - background: "#FFF", + background: "#FFFFFF", color: "#3A76F0", icon: faSignalMessenger, label: "Signal", @@ -438,24 +439,24 @@ const Socials: Array<{ }, { alt: "Angellist Logo", - background: "#000", - color: "#FFF", + background: "#000000", + color: "#FFFFFF", icon: faAngellist, label: "WellFound", link: "https://wellfound.com/u/naomi-h-carrigan", }, { alt: "ProtonDB Logo", - background: "#000", - color: "#FFF", + background: "#000000", + color: "#FFFFFF", icon: faAtom, label: "ProtonDB", link: "https://www.protondb.com/users/1717755560", }, { alt: "TeeSpring Logo", - background: "#000", - color: "#FFF", + background: "#000000", + color: "#FFFFFF", icon: TeeSpring, label: "Merch", link: "https://nhcarrigan.creator-spring.com/", @@ -463,7 +464,7 @@ const Socials: Array<{ { alt: "BlueSky Logo", background: "#1DA1F2", - color: "#FFF", + color: "#FFFFFF", icon: faBluesky, label: "BlueSky", link: "https://bsky.app/profile/naomi-lgbt.bsky.social", @@ -471,7 +472,7 @@ const Socials: Array<{ { alt: "Telegram Logo", background: "#0088cc", - color: "#FFF", + color: "#FFFFFF", icon: faTelegramPlane, label: "Telegram", link: "https://t.me/naomi_lgbt", @@ -479,7 +480,7 @@ const Socials: Array<{ { alt: "WhatsApp Logo", background: "#25D366", - color: "#FFF", + color: "#FFFFFF", icon: faWhatsapp, label: "WhatsApp", link: "https://wa.me/qr/WCGJIID7UKWIE1", @@ -487,14 +488,14 @@ const Socials: Array<{ { alt: "Google Chat Logo", background: "#DB4437", - color: "#FFF", + color: "#FFFFFF", icon: faGooglePlus, label: "Google Chat", link: "https://chat.google.com/room/AAAAK270m3M", }, { alt: "Tree Nation Logo", - background: "#FFF", + background: "#FFFFFF", color: "#55C1A8", icon: TreeNation, label: "Tree Nation", @@ -503,7 +504,7 @@ const Socials: Array<{ { alt: "Meetup Logo", background: "#FF6D00", - color: "#FFF", + color: "#FFFFFF", icon: faMeetup, label: "Meetup", link: "https://www.meetup.com/members/437962584/", @@ -511,7 +512,7 @@ const Socials: Array<{ { alt: "Tumblr Logo", background: "#36465D", - color: "#FFF", + color: "#FFFFFF", icon: faTumblr, label: "Tumblr", link: "https://www.tumblr.com/naomi-lgbt", @@ -519,23 +520,23 @@ const Socials: Array<{ { alt: "YouTube Logo", background: "#FF0000", - color: "#FFF", + color: "#FFFFFF", icon: faYoutube, label: "YouTube", link: "https://www.youtube.com/@naomilgbt", }, { alt: "Tiktok Logo", - background: "#000", - color: "#FFF", + background: "#000000", + color: "#FFFFFF", icon: faTiktok, label: "Tiktok", link: "https://www.tiktok.com/@naomilgbt", }, { alt: "Threads Logo", - background: "#000", - color: "#FFF", + background: "#000000", + color: "#FFFFFF", icon: faThreads, label: "Threads", link: "https://www.threads.net/@naomi.lgbt", @@ -543,11 +544,19 @@ const Socials: Array<{ { alt: "Instagram Logo", background: "#C13584", - color: "#FFF", + color: "#FFFFFF", icon: faInstagram, label: "Instagram", link: "https://www.instagram.com/naomi.lgbt/", }, + { + alt: "RetroAchievements Logo", + background: "#1066dd", + color: "#cc9a00", + icon: RetroAchievements, + label: "RetroAchievements", + link: "https://retroachievements.org/user/naomilgbt", + }, ]; export { HireMe, Donate, Socials }; diff --git a/src/icons/RetroAchievements.ts b/src/icons/RetroAchievements.ts new file mode 100644 index 0000000..caeb3a7 --- /dev/null +++ b/src/icons/RetroAchievements.ts @@ -0,0 +1,116 @@ +/** + * @copyright nhcarrigan + * @license Naomi's Public License + * @author Naomi Carrigan + */ +import type { IconDefinition } from "@fortawesome/fontawesome-svg-core"; + +/** + * Custom FontAwesome icon definition for the + * RetroAchievements logo. + */ +export const RetroAchievements: IconDefinition = { + icon: [ + 500, + 275, + [], + "U+E002", + `M 0.00,0.00 + C 0.00,0.00 73.00,0.00 73.00,0.00 + 73.00,0.00 116.00,0.00 116.00,0.00 + 150.90,0.05 184.08,28.35 194.12,61.00 + 197.20,71.03 199.09,81.49 199.00,92.00 + 198.86,108.25 194.88,127.04 186.39,141.00 + 183.49,145.75 178.82,151.91 174.92,155.83 + 172.79,157.98 170.04,159.58 170.72,163.01 + 170.72,163.01 175.25,172.00 175.25,172.00 + 175.25,172.00 187.58,194.00 187.58,194.00 + 187.58,194.00 215.86,245.00 215.86,245.00 + 215.86,245.00 232.00,275.00 232.00,275.00 + 232.00,275.00 200.00,275.00 200.00,275.00 + 200.00,275.00 192.61,274.01 192.61,274.01 + 192.61,274.01 186.43,265.00 186.43,265.00 + 186.43,265.00 175.00,245.00 175.00,245.00 + 175.00,245.00 139.40,183.00 139.40,183.00 + 139.40,183.00 117.00,143.00 117.00,143.00 + 160.97,139.31 175.67,72.18 138.00,47.10 + 122.50,36.79 106.57,39.00 89.00,39.00 + 89.00,39.00 0.00,39.00 0.00,39.00 + 0.00,39.00 0.00,0.00 0.00,0.00 Z + M 238.00,275.00 + C 238.00,275.00 253.58,229.00 253.58,229.00 + 253.58,229.00 278.31,159.00 278.31,159.00 + 278.31,159.00 308.66,73.00 308.66,73.00 + 308.66,73.00 326.32,24.00 326.32,24.00 + 332.59,12.07 343.55,2.89 357.00,0.23 + 357.00,0.23 375.00,0.23 375.00,0.23 + 381.82,0.08 386.99,1.57 393.00,4.79 + 412.88,15.46 416.50,37.70 423.81,57.00 + 423.81,57.00 446.69,122.00 446.69,122.00 + 446.69,122.00 474.69,201.00 474.69,201.00 + 474.69,201.00 492.34,251.00 492.34,251.00 + 494.69,257.75 499.30,268.27 500.00,275.00 + 500.00,275.00 336.00,275.00 336.00,275.00 + 336.00,275.00 336.00,241.00 336.00,241.00 + 336.00,241.00 452.00,241.00 452.00,241.00 + 452.00,241.00 435.95,197.00 435.95,197.00 + 435.95,197.00 397.42,90.00 397.42,90.00 + 397.42,90.00 384.42,54.00 384.42,54.00 + 381.75,46.85 381.24,41.88 373.00,39.11 + 367.19,37.16 360.56,39.79 357.53,45.09 + 357.53,45.09 351.95,60.00 351.95,60.00 + 351.95,60.00 341.33,90.00 341.33,90.00 + 341.33,90.00 299.31,210.00 299.31,210.00 + 299.31,210.00 285.95,248.00 285.95,248.00 + 285.95,248.00 277.00,275.00 277.00,275.00 + 277.00,275.00 238.00,275.00 238.00,275.00 Z + M 0.00,47.00 + C 0.00,47.00 110.00,47.00 110.00,47.00 + 123.38,47.16 136.40,52.85 144.20,64.00 + 155.04,79.48 152.55,106.67 140.67,121.00 + 129.04,135.04 117.41,135.00 101.00,135.00 + 101.00,135.00 130.42,186.00 130.42,186.00 + 130.42,186.00 181.00,275.00 181.00,275.00 + 181.00,275.00 147.00,275.00 147.00,275.00 + 147.00,275.00 139.33,273.98 139.33,273.98 + 139.33,273.98 126.15,253.00 126.15,253.00 + 126.15,253.00 85.00,182.00 85.00,182.00 + 85.00,182.00 85.00,275.00 85.00,275.00 + 85.00,275.00 47.00,275.00 47.00,275.00 + 47.00,275.00 47.00,95.00 47.00,95.00 + 47.00,95.00 102.00,95.00 102.00,95.00 + 105.16,94.98 112.73,94.56 110.60,89.22 + 109.14,85.55 103.19,86.01 100.00,86.00 + 100.00,86.00 38.00,86.00 38.00,86.00 + 38.00,86.00 38.00,275.00 38.00,275.00 + 38.00,275.00 0.00,275.00 0.00,275.00 + 0.00,275.00 0.00,47.00 0.00,47.00 Z + M 285.00,275.00 + C 285.00,275.00 302.00,224.00 302.00,224.00 + 302.00,224.00 344.00,102.00 344.00,102.00 + 344.00,102.00 358.14,61.00 358.14,61.00 + 359.89,56.05 361.21,48.97 367.02,47.43 + 373.36,45.76 376.14,49.86 378.19,55.00 + 378.19,55.00 390.00,88.00 390.00,88.00 + 390.00,88.00 423.05,182.00 423.05,182.00 + 423.05,182.00 434.34,214.00 434.34,214.00 + 436.60,220.49 439.37,226.04 440.00,233.00 + 440.00,233.00 336.00,233.00 336.00,233.00 + 336.00,233.00 335.00,229.00 335.00,229.00 + 335.00,229.00 325.00,261.00 325.00,261.00 + 325.00,261.00 320.16,273.40 320.16,273.40 + 320.16,273.40 313.00,275.00 313.00,275.00 + 313.00,275.00 285.00,275.00 285.00,275.00 Z + M 370.00,131.00 + C 370.00,131.00 361.28,155.00 361.28,155.00 + 361.28,155.00 348.00,198.00 348.00,198.00 + 348.00,198.00 391.00,198.00 391.00,198.00 + 391.00,198.00 370.00,131.00 370.00,131.00 Z + M 337.00,227.00 + C 337.00,227.00 336.00,227.00 336.00,227.00 + 336.00,227.00 337.00,228.00 337.00,228.00 + 337.00,228.00 337.00,227.00 337.00,227.00 Z`, + ], + iconName: "yyy", + prefix: "xxx", +} as never; diff --git a/test/config/Socials.spec.ts b/test/config/Socials.spec.ts index 67b0396..dd49c8a 100644 --- a/test/config/Socials.spec.ts +++ b/test/config/Socials.spec.ts @@ -37,6 +37,14 @@ describe("socials objects", () => { ); expect(set, "are not unique").toHaveLength(Socials.length); }); + + it("should have hex codes for colours", () => { + expect.hasAssertions(); + for (const social of Socials) { + expect(social.color, `${social.label} is not a hex code`).toMatch(/^#[\da-f]{6}$/i); + expect(social.background, `${social.label} is not a hex code`).toMatch(/^#[\da-f]{6}$/i); + } + }); }); describe("hire me object", () => { diff --git a/test/icons/RetroAchievements.spec.ts b/test/icons/RetroAchievements.spec.ts new file mode 100644 index 0000000..5709c5f --- /dev/null +++ b/test/icons/RetroAchievements.spec.ts @@ -0,0 +1,39 @@ +/** + * @copyright nhcarrigan + * @license Naomi's Public License + * @author Naomi Carrigan + */ + +import { describe, it, expect } from "vitest"; +import { RetroAchievements } from "../../src/icons/RetroAchievements"; + +describe("retroachievements icon", () => { + it("should have a valid width", () => { + expect.assertions(1); + expect(RetroAchievements.icon[0], "width is negative").toBeGreaterThan(0); + }); + + it("should have a valid height", () => { + expect.assertions(1); + expect(RetroAchievements.icon[1], "height is negative").toBeGreaterThan(0); + }); + + it("should not have any ligatures", () => { + expect.assertions(1); + expect(RetroAchievements.icon[2], "ligatures are present"). + toStrictEqual([]); + }); + + it("should have a valid unicode set", () => { + expect.assertions(1); + expect(RetroAchievements.icon[3], "unicode set is wrong").toBe("U+E002"); + }); + + it("should have valid SVG path data", () => { + expect.assertions(1); + expect(RetroAchievements.icon[4], "path data is bad").toMatch( + // eslint-disable-next-line stylistic/max-len + /(?:[lm]\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))|(?:[hv]\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))|(?:c\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){5})|(?:q\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){3}(?:\s?t?\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+)))*)|(?:a\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){2}[\s,]?(?:[01][\s,]+){2}(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){2})|(?:s\s?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))(?:[\s,]?-?(?:(?:\d+(?:\.\d+)?)|(?:\.\d+))){3})|z/gi, + ); + }); +});