diff options
| author | Alex Pooley (@zuedev) <zuedev@gmail.com> | 2026-07-16 16:48:48 +0100 |
|---|---|---|
| committer | Alex Pooley (@zuedev) <zuedev@gmail.com> | 2026-07-16 16:48:48 +0100 |
| commit | 1768191b23e2ab224cb584f3301da66db75acdc9 (patch) | |
| tree | 4a072e14e0301a5eaae878b5ab5980d3e442eebe /174bg/handbook/source/wikilinks.js | |
| parent | d723827b91cbe59a7ccbb12942172ed00cc2006e (diff) | |
| download | unnamed-group-1768191b23e2ab224cb584f3301da66db75acdc9.tar unnamed-group-1768191b23e2ab224cb584f3301da66db75acdc9.tar.gz unnamed-group-1768191b23e2ab224cb584f3301da66db75acdc9.tar.bz2 unnamed-group-1768191b23e2ab224cb584f3301da66db75acdc9.tar.xz unnamed-group-1768191b23e2ab224cb584f3301da66db75acdc9.zip | |
replace handbook with vitepress
Diffstat (limited to '174bg/handbook/source/wikilinks.js')
| -rw-r--r-- | 174bg/handbook/source/wikilinks.js | 135 |
1 files changed, 0 insertions, 135 deletions
diff --git a/174bg/handbook/source/wikilinks.js b/174bg/handbook/source/wikilinks.js deleted file mode 100644 index b32c6c4..0000000 --- a/174bg/handbook/source/wikilinks.js +++ /dev/null @@ -1,135 +0,0 @@ -/** - * wikilinks.js - * - * Automatically turns known Star Citizen ship, weapon, armor, and tool names - * found in the page's text into hyperlinks pointing to starcitizen.tools. - * - * How it works: - * 1. `linkMap` defines each recognized term and its destination URL. - * 2. On DOMContentLoaded, a single regex is built from all terms, sorted - * longest-first so multi-word names (e.g. "Fury MX") take precedence - * over shorter overlapping ones (e.g. "Fury"). - * 3. The document body's text nodes are walked and any matching term is - * replaced in place with an anchor element. Text already inside an - * existing <a> is skipped to avoid nested links. - * - * To add a new link, insert a `"Display Name": "https://..."` entry into - * `linkMap`. - */ -document.addEventListener("DOMContentLoaded", () => { - const linkMap = { - "A2 Hercules Starlifter": - "https://starcitizen.tools/A2_Hercules_Starlifter", - "Apollo Medivac": "https://starcitizen.tools/Apollo_Medivac", - Asgard: "https://starcitizen.tools/Asgard", - Carrack: "https://starcitizen.tools/Carrack", - Crucible: "https://starcitizen.tools/Crucible", - "Cutlass Red": "https://starcitizen.tools/Cutlass_Red", - Eclipse: "https://starcitizen.tools/Eclipse", - "Fury MX": "https://starcitizen.tools/Fury_MX", - Fury: "https://starcitizen.tools/Fury", - Hammerhead: "https://starcitizen.tools/Hammerhead", - Herald: "https://starcitizen.tools/Herald", - "Hull C": "https://starcitizen.tools/Hull_C", - "Hull E": "https://starcitizen.tools/Hull_E", - "Idris-K": "https://starcitizen.tools/Idris-K", - "Ironclad Assault": "https://starcitizen.tools/Ironclad_Assault", - Kraken: "https://starcitizen.tools/Kraken", - Legionnaire: "https://starcitizen.tools/Legionnaire", - Mole: "https://starcitizen.tools/Mole", - Nautilus: "https://starcitizen.tools/Nautilus", - Orion: "https://starcitizen.tools/Orion", - Perseus: "https://starcitizen.tools/Perseus", - Polaris: "https://starcitizen.tools/Polaris", - Prowler: "https://starcitizen.tools/Prowler", - Reclaimer: "https://starcitizen.tools/Reclaimer", - Retaliator: "https://starcitizen.tools/Retaliator", - Scorpius: "https://starcitizen.tools/Scorpius", - "Starfarer Gemini": "https://starcitizen.tools/Starfarer_Gemini", - "Terrapin Medic": "https://starcitizen.tools/Terrapin_Medic", - Tiburon: "https://starcitizen.tools/Tiburon", - Valkyrie: "https://starcitizen.tools/Valkyrie", - "Vanguard Sentinel": "https://starcitizen.tools/Vanguard_Sentinel", - "Arclight Pistol": "https://starcitizen.tools/Arclight_Pistol", - "Arden-SL Arms": "https://starcitizen.tools/Arden-SL_Arms", - "Arden-SL Core": "https://starcitizen.tools/Arden-SL_Core", - "Arden-SL Helmet": "https://starcitizen.tools/Arden-SL_Helmet", - "Arden-SL Legs": "https://starcitizen.tools/Arden-SL_Legs", - "Calico Arms Tactical": "https://starcitizen.tools/Calico_Arms_Tactical", - "Calico Core Tactical": "https://starcitizen.tools/Calico_Core_Tactical", - "Calico Helmet Tactical": - "https://starcitizen.tools/Calico_Helmet_Tactical", - "Calico Legs Tactical": "https://starcitizen.tools/Calico_Legs_Tactical", - "DustUp Arms Tactical": "https://starcitizen.tools/DustUp_Arms_Tactical", - "DustUp Core Tactical": "https://starcitizen.tools/DustUp_Core_Tactical", - "DustUp Helmet Tactical": - "https://starcitizen.tools/DustUp_Helmet_Tactical", - "DustUp Legs Tactical": "https://starcitizen.tools/DustUp_Legs_Tactical", - "Killshot Rifle": "https://starcitizen.tools/Killshot_Rifle", - "Morozov-SH Arms": "https://starcitizen.tools/Morozov-SH_Arms", - "Morozov-SH Core": "https://starcitizen.tools/Morozov-SH_Core", - "Morozov-SH Helmet": "https://starcitizen.tools/Morozov-SH_Helmet", - "Morozov-SH Legs": "https://starcitizen.tools/Morozov-SH_Legs", - "P6-LR Sniper Rifle": "https://starcitizen.tools/P6-LR_Sniper_Rifle", - "Pulverizer LMG": "https://starcitizen.tools/Pulverizer_LMG", - "S-38 Pistol": "https://starcitizen.tools/S-38_Pistol", - "Stoneskin Undersuit": "https://starcitizen.tools/Stoneskin_Undersuit", - "TripleDown Shotgun Pistol": - "https://starcitizen.tools/TripleDown_Shotgun_Pistol", - "Yubarev Pistol": "https://starcitizen.tools/Yubarev_Pistol", - "ADP-mk4 Arms": "https://starcitizen.tools/ADP-mk4_Arms", - "ADP-mk4 Core": "https://starcitizen.tools/ADP-mk4_Core", - "ADP-mk4 Helmet": "https://starcitizen.tools/ADP-mk4_Helmet", - "ADP-mk4 Legs": "https://starcitizen.tools/ADP-mk4_Legs", - "Tailwind Flight Helmet": - "https://starcitizen.tools/Tailwind_Flight_Helmet", - "Tailwind Flight Suit": "https://starcitizen.tools/Tailwind_Flight_Suit", - "Novikov Exploration Suit": - "https://starcitizen.tools/Novikov_Exploration_Suit", - "Novikov Helmet": "https://starcitizen.tools/Novikov_Helmet", - "APX Fire Extinguisher": "https://starcitizen.tools/APX_Fire_Extinguisher", - "Cambio SRT": "https://starcitizen.tools/Cambio_SRT", - "Pyro RYT Multi-Tool": "https://starcitizen.tools/Pyro_RYT_Multi-Tool", - "TruHold Tractor Beam Attachment": - "https://starcitizen.tools/TruHold_Tractor_Beam_Attachment", - }; - - // Build one regex from every term, longest first so multi-word names - // like "Fury MX" win over shorter ones like "Fury". - const escaped = Object.keys(linkMap) - .sort((a, b) => b.length - a.length) - .map((term) => term.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")); - const termPattern = new RegExp(`\\b(${escaped.join("|")})\\b`, "g"); - - // Collect text nodes up front, since we mutate the DOM as we go. - const walker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT); - const textNodes = []; - while (walker.nextNode()) textNodes.push(walker.currentNode); - - for (const node of textNodes) { - // Skip text that is already inside a link. - if (node.parentNode.closest("a")) continue; - - const text = node.textContent; - const matches = [...text.matchAll(termPattern)]; - if (matches.length === 0) continue; - - // Rebuild the node as a mix of plain text and anchor elements. - const fragment = document.createDocumentFragment(); - let cursor = 0; - for (const match of matches) { - const term = match[0]; - fragment.append(text.slice(cursor, match.index)); - - const link = document.createElement("a"); - link.href = linkMap[term]; - link.textContent = term; - fragment.append(link); - - cursor = match.index + term.length; - } - fragment.append(text.slice(cursor)); - - node.parentNode.replaceChild(fragment, node); - } -}); |
