Skip to content
This repository was archived by the owner on Apr 11, 2022. It is now read-only.

Commit 8a8e6cb

Browse files
committed
initial commit
0 parents  commit 8a8e6cb

File tree

3 files changed

+85
-0
lines changed

3 files changed

+85
-0
lines changed

Makefile

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
.PHONY: build
2+
3+
build: index.user.js
4+
index.user.js: index.user.ts
5+
tsc --target es2015 $<

index.user.js

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
// ==UserScript==
2+
// @name AtCoder dos2unix UserScript
3+
// @namespace https://github.com/kmyk
4+
// @version 1.0
5+
// @description submit code using LF instead of CRLF
6+
// @author Kimiyuki Onaka
7+
// @match *://beta.atcoder.jp/contests/*/submit
8+
// ==/UserScript==
9+
function main() {
10+
const taskScreenName = document.getElementsByName("data.TaskScreenName")[0];
11+
const languageId = document.getElementsByName("data.LanguageId")[0];
12+
const sourceCode = document.getElementsByName("sourceCode")[0];
13+
const csrfToken = document.getElementsByName("csrf_token")[0];
14+
const submit = document.getElementById("submit");
15+
submit.addEventListener("click", function (e) {
16+
e.preventDefault();
17+
const data = [];
18+
for (const tag of [taskScreenName, languageId, sourceCode, csrfToken]) {
19+
var value = tag.value;
20+
if (tag === sourceCode) {
21+
value = $(sourceCode).data('editor').getValue();
22+
}
23+
data.push(tag.name + '=' + encodeURIComponent(value));
24+
console.log([tag.name, value]);
25+
}
26+
const payload = data.join('&');
27+
console.log(payload);
28+
const xhr = new XMLHttpRequest();
29+
xhr.open("POST", location.pathname, false);
30+
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
31+
xhr.send(payload);
32+
console.log(xhr);
33+
location.href = xhr.responseURL;
34+
});
35+
}
36+
main();

index.user.ts

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
// ==UserScript==
2+
// @name AtCoder dos2unix UserScript
3+
// @namespace https://github.com/kmyk
4+
// @version 1.0
5+
// @description submit code using LF instead of CRLF
6+
// @author Kimiyuki Onaka
7+
// @match *://beta.atcoder.jp/contests/*/submit
8+
// ==/UserScript==
9+
10+
declare const $ : any;
11+
12+
function main(): void {
13+
const taskScreenName = <HTMLInputElement>document.getElementsByName("data.TaskScreenName")[0];
14+
const languageId = <HTMLInputElement>document.getElementsByName("data.LanguageId")[0];
15+
const sourceCode = <HTMLInputElement>document.getElementsByName("sourceCode")[0];
16+
const csrfToken = <HTMLInputElement>document.getElementsByName("csrf_token")[0];
17+
18+
const submit = document.getElementById("submit");
19+
submit.addEventListener("click", function (e) {
20+
e.preventDefault();
21+
22+
const data = [];
23+
for (const tag of [ taskScreenName, languageId, sourceCode, csrfToken ]) {
24+
var value = tag.value;
25+
if (tag === sourceCode) {
26+
value = $(sourceCode).data('editor').getValue();
27+
}
28+
data.push(tag.name + '=' + encodeURIComponent(value));
29+
console.log([ tag.name, value ]);
30+
}
31+
const payload = data.join('&');
32+
console.log(payload);
33+
34+
const xhr = new XMLHttpRequest();
35+
xhr.open("POST", location.pathname, false);
36+
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
37+
xhr.send(payload);
38+
console.log(xhr);
39+
40+
location.href = xhr.responseURL;
41+
});
42+
}
43+
44+
main();

0 commit comments

Comments
 (0)