ta-bu-ta read-param
·
2 mins read
·
edit
result
26c11.html
<div id="container"><div>
<script src="26b39.js"></script>
<script src="26b41.js"></script>
<script src="26b43.js"></script>
<script src="26b11.js"></script>
<script>
// Define global variables
let lenx = null, leny = null, area = null;
// Instantiate containers, output textarea, and buttons
const cnt = getContainer("container");
const inTxa = createTextarea("text-input");
const outTxa = createTextarea("text-output");
const btnDiv = createDiv("button-container");
const cvBtn = createButton("cv-button", "Clear vars");
const ciBtn = createButton("ci-button", "Clear input");
const coBtn = createButton("co-button", "Clear output");
const deBtn = createButton("de-button", "Default");
const rpBtn = createButton("rp-button", "Read params");
const muBtn = createButton("mu-button", "Calc area");
// Append textarea to container
cnt.append(inTxa);
cnt.append(btnDiv);
cnt.append(outTxa);
btnDiv.append(cvBtn);
btnDiv.append(ciBtn);
btnDiv.append(coBtn);
btnDiv.append(deBtn);
btnDiv.append(rpBtn);
btnDiv.append(muBtn);
// Change elements flex value
changeElementsFlex(
["text-input", "3"],
["button-container", "3"] ,
["text-output", "3"],
);
// Bind consolex output to textarea and set EOL character
consolex.setOutput(outTxa);
consolex.setEOL("");
// Set onclick event to each button
ciBtn.addEventListener("click", () => {
clearTextarea("text-input");
});
coBtn.addEventListener("click", () => {
clearTextarea("text-output");
});
deBtn.addEventListener("click", () => {
inTxa.value = "# params";
inTxa.value += "\n" + "LENX 0.25";
inTxa.value += "\n" + "LENY 0.40";
});
rpBtn.addEventListener("click", () => {
let key, line;
key = "LENX";
lenx = readParamFromTextarea("text-input", key);
outTxa.value += key + "=" + lenx + "\n";
key = "LENY";
leny = readParamFromTextarea("text-input", key);
outTxa.value += key + "=" + leny + "\n";
});
muBtn.addEventListener("click", () => {
area = lenx * leny;
outTxa.value += "AREA=" + area + "\n";
});
cvBtn.addEventListener("click", () => {
lenx = null;
leny = null;
area = null;
});
</script>
26c11.js
/**
* 26c11.js
* Helper functions for butiran-x/26c11 note.
*
* Author: Sparisoma Viridi (https://github.com/dudung)
* Created: 2026-03-03
*
* Exports:
* - readParamFromTextarea(id, key)
*/
/**
* Reads a parameter from a textarea element that starts with the specified key.
*
* @param {string} id - The ID of the textarea element to read from.
* @param {string} key - The key (first word) identifying the parameter to retrieve.
* @param {"string" | "int" | "float"} type - The expected parameter type.
* @returns {string | number} The parameter value parsed according to the specified type.
*
* @example
* const value = readParamFromTextarea("text-input", "KEY", "int");
*/
function readParamFromTextarea(id, key, type="string") {
/** @type {HTMLTextareaElement|null} */
const el = document.getElementById(id);
if (!(el instanceof HTMLTextAreaElement)) return null;
const lines = el.value.split("\n");
let param = null;
for(l of lines) {
const cols = l.split(" ");
if(cols[0] == key) {
if(type == "int") {
parseInt(param = cols[1]);
} else if(type == "float") {
parseFloat(param = cols[1]);
} else {
param = cols[1]
}
}
}
return param;
}
// marker: 26c11.js
(() => {
console.log("[marker] 26c11.js loaded");
})();