Replaces {###} with embedded link to the specified ID anywhere in Torn
// ==UserScript==
// @name Torn ID link replacer thing
// @namespace http://tampermonkey.net/
// @version 0.01
// @description Replaces {###} with embedded link to the specified ID anywhere in Torn
// @author Weav3r
// @match https://www.torn.com/*
// @grant none
// ==/UserScript==
(() => {
const RE = /\{(\d+)\}$/;
const ok = el => el && (el.tagName === "TEXTAREA" || el.tagName === "INPUT");
addEventListener("beforeinput", e => {
if (e.data !== "}" || !ok(document.activeElement)) return;
const el = document.activeElement;
const val = el.value.slice(0, el.selectionStart) + "}";
const m = val.match(RE);
if (!m) return;
e.preventDefault();
el.setRangeText(`<a href="/profiles.php?XID=${m[1]}">${m[1]}</a>`,
el.selectionStart - m[0].length + 1,
el.selectionStart + 1,
"end");
el.dispatchEvent(new Event("input", { bubbles: true }));
}, true);
})();