Skip to content

Instantly share code, notes, and snippets.

@razetime
Last active December 30, 2020 05:35
Show Gist options
  • Save razetime/8d0be74e104ac54b1e55d57bec8c2156 to your computer and use it in GitHub Desktop.
Save razetime/8d0be74e104ac54b1e55d57bec8c2156 to your computer and use it in GitHub Desktop.
Executes apl code inside a chat box textarea(first line only). Can be changed to target any website/textarea.
// ==UserScript==
// @name Chat box exec
// @version 1.0
// @description Executes apl code inside a chat box textarea!
// @namespace http://tampermonkey.net/
// @grant GM_xmlhttpRequest
// @grant GM_listValues
// @match https://chat.stackexchange.com/*
// @run-at document-start
// ==/UserScript==
window.addEventListener('DOMContentLoaded', (event) => {
let bContainer = document.getElementById("chat-buttons");
let tmp = document.createElement("div");
tmp.innerHTML = "<button id=\"apl-execute\" class=\"button\" accesskey=\"x\">⍎</button>";
bContainer.appendChild(tmp.firstChild);
let exButton = document.getElementById("apl-execute");
exButton.addEventListener('click', function (e) {
exButton.classList.add("disabled");
let field = document.getElementById("input");
let code = field.value.split("\n")[0].trim();
let output;
console.log(code);
let request = new XMLHttpRequest();
request.open("POST", "https://tryapl.org/Exec", true);
request.setRequestHeader("Content-Type", "application/json; charset=utf-8")
request.send(JSON.stringify(["", 0, "", code]));
request.onreadystatechange = function () {
if (request.readyState === 4) {
if (request.status === 200) {
let result = JSON.parse(request.responseText)[3];
result.unshift(" " + code);
field.value = result.map(x => " " + x).join("\n");
field.focus();
exButton.classList.remove("disabled");
}
}
}
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment