Auto selects the language based on file extension, when you upload a file
目前為
// ==UserScript==
// @name Auto Select CF Language
// @namespace http://tampermonkey.net/
// @version 2024-08-13
// @description Auto selects the language based on file extension, when you upload a file
// @author Mushfiqur Rahman Talha
// @match *codeforces.com/contest/*/problem/*
// @match *codeforces.com/problemset/problem/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=codeforces.com
// @grant none
// @license GPLv3
// ==/UserScript==
(function() {
'use strict';
/*
Language Support:
- GNU GCC C11 5.1.0
- GNU G++20 13.2 (64 bit, winlibs)
- C# 10, .NET SDK 6.0
- D DMD32 v2.105.0
- Go 1.22.2
- Java 21 64bit
- Kotlin 1.9.21
- OCaml 4.02.1
- PHP 8.1.7
- PyPy 3.10 (7.3.15, 64bit)
- Ruby 3.2.2
- Rust 1.75.0 (2021)
- Node.js 15.8.0 (64bit)
*/
const fileInput = document.querySelector("input[name=sourceFile]");
fileInput.addEventListener("change", event => {
const file = event.target.files[0];
if (!file) return;
const ext = file.name.split('.').pop();
let optionValue = null;
switch (ext) {
case "cpp":
optionValue = "89"
break;
case "c":
optionValue = "43"
break;
case "java":
optionValue = "87"
break;
case "py":
optionValue = "70"
break;
case "cs":
optionValue = "79"
break;
case "js":
optionValue = "55"
break;
case "d":
optionValue = "28"
break;
case "go":
optionValue = "32"
break;
case "kt":
optionValue = "88"
break;
case "ml":
optionValue = "19"
break;
case "php":
optionValue = "6"
break;
case "rb":
optionValue = "67"
break;
case "rs":
optionValue = "75"
break;
default:
break;
}
if (!optionValue) return;
document.querySelectorAll("option").forEach(element => element.removeAttribute("selected"));
document.querySelector(`option[value='${optionValue}']`).setAttribute("selected", "selected");
});
})();