ChatGPTで生成しました。Scratch上の数字を334にします。
// ==UserScript== // @name 334cratch // @namespace http://tampermonkey.net/ // @version 1.5 // @description ChatGPTで生成しました。Scratch上の数字を334にします。 // @author 334nfz. // @match *://scratch.mit.edu/* // @grant none // @run-at document-end // @license MIT // ==/UserScript== (function() { 'use strict'; const numberRegex = /[\d0-9]+|一|二|三|四|五|六|七|八|九|十|百|千|万|億|兆|#|one|two|three|four|five|six|seven|eight|nine|ten|eleven|twelve|thirteen|fourteen|fifteen|sixteen|seventeen|eighteen|nineteen|twenty|thirty|forty|fifty|sixty|seventy|eighty|ninety|hundred|thousand|million|billion|trillion|quadrillion|one|two|three|four|five|six|seven|eight|nine|ten|eleven|twelve|thirteen|fourteen|fifteen|sixteen|seventeen|eighteen|nineteen|twenty|thirty|forty|fifty|sixty|seventy|eighty|ninety|hundred|thousand|million|billion|trillion|quadrillion/gi; function replaceNumbers(node) { if (node.nodeType === 3) { // テキストノードのみ対象 node.nodeValue = node.nodeValue.replace(numberRegex, '334'); } else if (node.nodeType === 1 && node.childNodes) { node.childNodes.forEach(replaceNumbers); } } function observeChanges() { const observer = new MutationObserver(mutations => { mutations.forEach(mutation => { mutation.addedNodes.forEach(replaceNumbers); }); }); observer.observe(document.body, { childList: true, subtree: true }); } function interceptUserInput() { document.addEventListener('input', event => { if (event.target && (event.target.tagName === 'INPUT' || event.target.tagName === 'TEXTAREA')) { let inputText = event.target.value; let matches = inputText.match(numberRegex); if (matches) { let replacement = '334'.repeat(matches.length); event.target.value = inputText.replace(numberRegex, replacement); } } }); } replaceNumbers(document.body); observeChanges(); interceptUserInput(); })();