Convert Call of Duty phonetic gun names

Simple script which tries to replace phonetic gun names in Raven Software blog posts with their actual names.

// ==UserScript==
// @name         Convert Call of Duty phonetic gun names
// @namespace    https://github.com/jayktaylor
// @version      0.1
// @description  Simple script which tries to replace phonetic gun names in Raven Software blog posts with their actual names.
// @author       Jayden Bailey - github.com/jayktaylor
// @match        https://www.ravensoftware.com/community/*
// @grant        none
// @license      MIT
// ==/UserScript==

/* jshint esversion: 6 */

(function() {
    'use strict';

    // Shamelessly taken from SO
    const replaceOnDocument = (pattern, string, {target = document.body} = {}) => {
        [
            target,
            ...target.querySelectorAll("*:not(script):not(noscript):not(style)")
        ].forEach(({childNodes: [...nodes]}) => nodes
                  .filter(({nodeType}) => nodeType === document.TEXT_NODE)
                  .forEach((textNode) => textNode.textContent = textNode.textContent.replace(pattern, string)));
    };

    let mapping = {
        VG: {
            // ARs
            'Assault Rifle Alpha': 'STG44',
            'Assault Rifle Bravo': 'ITRA Burst',
            'Assault Rifle Charlie': 'BAR',
            'Assault Rifle Delta': 'NZ-41',
            'Assault Rifle Echo': 'Volkssturmgewehr',
            'Assault Rifle Foxtrot': 'AS44',
            'Assault Rifle Hotel': 'Automaton',
            'Assault Rifle India': 'Cooper Carbine',
            // SMGs
            'Submachine Gun Alpha': 'M1928',
            'Submachine Gun Bravo': 'Sten',
            'Submachine Gun Charlie': 'MP40',
            'Submachine Gun Delta': 'PPSh-41',
            'Submachine Gun Echo': 'Owen Gun',
            'Submachine Gun Foxtrot': 'Type 100',
            // LMGs
            'Light Machine Gun Alpha': 'MG42',
            'Light Machine Gun Bravo': 'DP27',
            'Light Machine Gun Charlie': 'Bren',
            'Light Machine Gun Delta': 'Type 11',
            // Shotguns
            'Shotgun Alpha': 'Einhorn Revolving',
            'Shotgun Bravo': 'Gracey Auto',
            'Shotgun Charlie': 'Combat Shotgun',
            'Shotgun Delta': 'Double Barrel',
            // Snipers
            'Sniper Rifle Alpha': '3-Line Rifle',
            'Sniper Rifle Bravo': 'Kar98k',
            'Sniper Rifle Charlie': 'Type 99',
            'Sniper Rifle Delta': 'Gorenko Anti-Tank Rifle',
            // Marksman Rifles
            'Marksman Rifle Alpha': 'M1 Garand',
            'Marksman Rifle Bravo': 'SVT-40',
            'Marksman Rifle Charlie': 'G-43',
            // Launchers
            'Launcher Alpha': 'M1 Bazooka',
            'Launcher Bravo': 'Panzerschreck',
            'Launcher Charlie': 'Panzerfaust',
            'Launcher Delta': 'MK11 Launcher',
            // Handguns
            'Handgun Alpha': 'Machine Pistol',
            'Handgun Bravo': 'Ratt',
            'Handgun Charlie': '1911',
            'Handgun Delta': 'Top Break',
            'Handgun Echo': 'Klauser',
            // Melee
            'Melee Weapon Alpha': 'Combat Shield',
            'Melee Weapon Bravo': 'FS Fighting Knife',
            'Melee Weapon Charlie': 'Katana',
            'Melee Weapon Delta': 'Sawtooth',
        },
        BOCW: {
            // ARs
            'Assault Rifle Alpha': 'XM4',
            'Assault Rifle Bravo': 'AK-47',
            'Assault Rifle Charlie': 'Krig 6',
            'Assault Rifle Delta': 'QBZ-83',
            'Assault Rifle Echo': 'FFAR 1',
            'Assault Rifle Foxtrot': 'Groza',
            'Assault Rifle Golf': 'FARA 83',
            'Assault Rifle Hotel': 'C58',
            'Assault Rifle India': 'EM2',
            'Assault Rifle Juliet': 'Grav',
            // SMGs
            'Submachine Gun Alpha': 'MP5',
            'Submachine Gun Bravo': 'Milano 821',
            'Submachine Gun Charlie': 'AK-74u',
            'Submachine Gun Delta': 'KSP 45',
            'Submachine Gun Echo': 'Bullfrog',
            'Submachine Gun Foxtrot': 'MAC-10',
            'Submachine Gun Golf': 'LC10',
            'Submachine Gun Hotel': 'PPSh-41',
            'Submachine Gun India': 'OTs 9',
            'Submachine Gun Juliet': 'TEC-9',
            'Submachine Gun Kilo': 'LAPA',
            // Tactical Rifles
            'Tactical Rifle Alpha': 'Type 63',
            'Tactical Rifle Bravo': 'M16',
            'Tactical Rifle Charlie': 'AUG',
            'Tactical Rifle Delta': 'DMR 14',
            'Tactical Rifle Echo': 'CARV.2',
            // LMGs
            'Light Machine Gun Alpha': 'Stoner 63',
            'Light Machine Gun Bravo': 'RPD',
            'Light Machine Gun Charlie': 'M60',
            'Light Machine Gun Delta': 'MG 82',
            // Shotguns
            'Shotgun Alpha': 'Hauer 77',
            'Shotgun Bravo': 'Gallo SA12',
            'Shotgun Charlie': 'Streetsweeper',
            'Shotgun Delta': '.410 Ironhide',
            // Snipers
            'Sniper Rifle Alpha': 'Pelington 703',
            'Sniper Rifle Bravo': 'LW3 Tundra',
            'Sniper Rifle Charlie': 'M82',
            'Sniper Rifle Delta': 'ZRG 20mm',
            'Sniper Rifle Echo': 'Swiss K31',
            // Marksman Rifles
            'Marksman Rifle Alpha': 'M1 Garand',
            'Marksman Rifle Bravo': 'SVT-40',
            'Marksman Rifle Charlie': 'G-43',
            // Launchers
            'Launcher Alpha': 'Cigma 2',
            'Launcher Bravo': 'RPG-7',
            // Pistols
            'Pistol Alpha': '1911',
            'Pistol Bravo': 'Magnum',
            'Pistol Charlie': 'Diamatti',
            'Pistol Delta': 'AMP63',
            'Pistol Echo': 'Marshal',
            // Melee
            'Melee Weapon Alpha': 'Knife',
            'Melee Weapon Bravo': 'Sledgehammer',
            'Melee Weapon Charlie': 'Wakizashi',
            'Melee Weapon Delta': 'E-Tool',
            'Melee Weapon Echo': 'Machete',
            'Melee Weapon Foxtrot': 'Baseball Bat',
            'Melee Weapon Golf': 'Mace',
            'Melee Weapon Hotel': 'Cane',
            'Melee Weapon India': 'Sai',
            'Melee Weapon Juliet': 'Battle Axe',
            'Melee Weapon Kilo': 'Hammer and Sickle',
            // Specials
            'Special Weapon Alpha': 'M79',
            'Special Weapon Bravo': 'R1 Shadowhunter',
            'Special Weapon Charlie': 'Ballistic Knife',
            'Special Weapon Delta': 'Nail Gun',
        },
        'MW': {
            // ARs
            'Assault Rifle Alpha': 'Kilo 141',
            'Assault Rifle Bravo': 'FAL',
            'Assault Rifle Charlie': 'M4A1',
            'Assault Rifle Delta': 'FR 5.56',
            'Assault Rifle Echo': 'Oden',
            'Assault Rifle Foxtrot': 'M13',
            'Assault Rifle Golf': 'FN Scar 17',
            'Assault Rifle Hotel': 'AK-47',
            'Assault Rifle India': 'RAM-7',
            'Assault Rifle Juliet': 'Grau 5.56',
            'Assault Rifle Kilo': 'CR-56 AMAX',
            'Assault Rifle Lima': 'AN-94',
            'Assault Rifle Mike': 'AS VAL',
            // SMGs
            'Submachine Gun Alpha': 'AUG',
            'Submachine Gun Bravo': 'P90',
            'Submachine Gun Charlie': 'MP5',
            'Submachine Gun Delta': 'Uzi',
            'Submachine Gun Echo': 'PP19 Bizon',
            'Submachine Gun Foxtrot': 'MP7',
            'Submachine Gun Golf': 'Striker 45',
            'Submachine Gun Hotel': 'Fennec',
            'Submachine Gun India': 'ISO',
            'Submachine Gun Juliet': 'CX-9',
            // LMGs
            'Light Machine Gun Alpha': 'PKM',
            'Light Machine Gun Bravo': 'SA87',
            'Light Machine Gun Charlie': 'M91',
            'Light Machine Gun Delta': 'MG34',
            'Light Machine Gun Echo': 'Holger-26',
            'Light Machine Gun Foxtrot': 'Bruen Mk9',
            'Light Machine Gun Golf': 'FiNN LMG',
            'Light Machine Gun Hotel': 'RAAL MG',
            // Shotguns
            'Shotgun Alpha': 'Model 680',
            'Shotgun Bravo': 'R9-0',
            'Shotgun Charlie': '725',
            'Shotgun Delta': 'Origin 12',
            'Shotgun Echo': 'VLK Rogue',
            'Shotgun Foxtrot': 'JAK-12',
            // Snipers
            'Sniper Rifle Alpha': 'Dragunov',
            'Sniper Rifle Bravo': 'HDR',
            'Sniper Rifle Charlie': 'AX-50',
            'Sniper Rifle Delta': 'Rytec AMR',
            // Marksman Rifles
            'Marksman Rifle Alpha': 'EBR-14',
            'Marksman Rifle Bravo': 'MK2 Carbine',
            'Marksman Rifle Charlie': 'Kar98k',
            'Marksman Rifle Delta': 'Crossbow',
            'Marksman Rifle Echo': 'SKS',
            'Marksman Rifle Foxtrot': 'SP-R 208',
            // Launchers
            'Launcher Alpha': 'PILA',
            'Launcher Bravo': 'Strela-P',
            'Launcher Charlie': 'JOKR',
            'Launcher Delta': 'RPG-7',
            // Handguns
            'Handgun Alpha': 'X16',
            'Handgun Bravo': '1911',
            'Handgun Charlie': '.357',
            'Handgun Delta': 'M19',
            'Handgun Echo': '.50 GS',
            'Handgun Foxtrot': 'Renetti',
            'Handgun Golf': 'Sykov',
            // Melee
            'Melee Weapon Alpha \\(Primary\\)': 'Riot Shield',
            'Melee Weapon Alpha \\(Secondary\\)': 'Combat Knife',
            'Melee Weapon Bravo': 'Kali Sticks',
            'Melee Weapon Charlie': 'Dual Kodachis',
        }
    }

    for (let [k, v] of Object.entries(mapping.VG)) {
        let pattern = new RegExp(k + ' \\(VG\\)', 'gi');
        replaceOnDocument(pattern, v + ' (VG)');
    }
    for (let [k, v] of Object.entries(mapping.BOCW)) {
        let pattern = new RegExp(k + ' \\(BOCW\\)', 'gi');
        replaceOnDocument(pattern, v + ' (BOCW)');
    }
    for (let [k, v] of Object.entries(mapping.MW)) {
        let pattern = new RegExp(k + ' \\(MW\\)', 'gi');
        replaceOnDocument(pattern, v + ' (MW)');
    }
})();