334cratch

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();
})();