自动根据选择的编程语言修正测试用例的null文本,python自动修改为None,go和swift自动修改为nil,可自行修改代码自定义
// ==UserScript==
// @name LeetCode自动修正null和None
// @namespace http://tampermonkey.net/
// @version 2024-04-11
// @description 自动根据选择的编程语言修正测试用例的null文本,python自动修改为None,go和swift自动修改为nil,可自行修改代码自定义
// @author Ozymandias
// @license MIT
// @match https://leetcode.cn/problems/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=leetcode.cn
// @grant none
// ==/UserScript==
(function() {
'use strict';
// Your code here...
function waitForElement(id, callback) {
const intervalId = setInterval(() => {
const targetElements = document.querySelectorAll(id)
if (targetElements.length >0) {
targetElements.forEach((targetElement)=>{
const targetButton=targetElement.querySelectorAll('button.rounded');
if (targetButton!=null){
if(targetButton[0]!=null){
const textContent = targetButton[0].textContent
if(textContent!=null){
const buttonText = textContent.trim().toLowerCase(); // 获取并转换为小写,去除前后空格
if (buttonText!=null &&buttonText!=""){
clearInterval(intervalId);
//console.info("当前使用语言:"+buttonText)
callback(buttonText);
}
}
}
}
})
} else {
console.log("等待按钮组件加载完成中");
}
}, 2000); // 延迟时间,以毫秒为单位
}
function replaceNullStringsInElfjSElements() {
waitForElement('[id^="headlessui-popover-button-:r"]', element => {
const buttonText =element.trim().toLowerCase(); // 获取并转换为小写,去除前后空格
const targetElements = document.querySelectorAll('.elfjS pre'); // 选择目标元素
targetElements.forEach((element) => {
const currentText = element.textContent || element.innerText; // 获取元素文本内容,兼容不同属性
if (currentText) {
//console.log("currentText:"+currentText)
var replacedText=null
switch (buttonText){
case "python":
case "python3":
replacedText = currentText.replace(/null/g, 'None'); // 使用正则表达式替换null字符串
break
case "ruby":
case "swift":
case "go":
case "elixir":
replacedText = currentText.replace(/null/g, 'nil'); // 使用正则表达式替换null字符串
break
//case "erlang":
//replacedText = currentText.replace(/null/g, 'undefined'); // 使用正则表达式替换null字符串
//break
case "racket":
replacedText = currentText.replace(/null/g, '#false'); // 使用正则表达式替换null字符串
break
default:
replacedText = currentText
break
}
//console.log("replacedText:"+replacedText)
if (element.textContent !== undefined) {
element.textContent = replacedText;
} else if (element.innerText !== undefined) {
element.innerText = replacedText;
}
}
});
});
}
const targetNode = document.querySelectorAll('html')[0]; // 替换为您的组件容器节点
const observerOptions = {
childList: true, // 监听子节点的添加或删除
subtree: true, // 递归监听目标节点及其所有后代节点
//attributes: true, //目标节点的属性变化
};
const callback = (mutationsList) => {
for (const mutation of mutationsList) {
if (mutation.type === 'childList') {
// console.log('组件重新渲染');
// 在这里执行您希望在组件重新渲染时运行的函数
replaceNullStringsInElfjSElements()
}
}
};
const observer = new MutationObserver(callback);
observer.observe(targetNode, observerOptions);
// 当不再需要观察时,记得停止观察并释放资源
// observer.disconnect();
})();