ScrapCalc
https://gyazo.com/bc64b68736885582391f2010a39749c4
仕組み
jsをevalしている
上から順に評価している
使い方
[= ここに式を書く]
[= left=right] この代入の形のときは、トグルしても結果が切り替わらない
[= value] この値だけ書いているときは、トグルすると結果が切り替わる
ショートカットキーでトグル表示切り替え
テスト
身長 = 179
身長メートル = 身長 / 100.0
体重 = 57.5
BMI = 体重 / (身長メートル * 身長メートル )
BMI
派生
JupyterとかEvalなど派生物がいくつか存在するもよう(井戸端参照)
hr.icon
以下はコード本体
変更点
modify to .deco-# and コードの判定箇所も
modify ctrl-c to alt-c
add importできないのでdummy const
code:style.css
/*.deco-\= { 2021/05/25 最近使えなくなったので # に切り替え */
.deco-\# {
padding: 0.1em 0.2em 0.1em 0.2em;
}
.scrapcalc_result {
font-style:italic;
font-weight:bold;
background-color:yellow;
}
code:script.js
function scrapcalc_exec(){
for(let e of document.querySelectorAll('.deco-\\#')){
let text = e.innerText;
// 全角カギカッコを配列などで使えるようにする苦しい工夫
if(text.match(/#/)){
(0,eval)(expr); // 何故かこれでstrictが有効でなくなる?
}
else {
let span = document.createElement('span');
span.classList.add("scrapcalc_result");
span.innerText = (0,eval)(expr);
e.parentNode.appendChild(span)
e.classList.add("scrapcalc_exp")
e.style.display = 'none';
}
}
}
function scrapcalc_reset(){
for(let e of document.querySelectorAll('.scrapcalc_result')){
e.remove();
}
for(let e of document.querySelectorAll('.scrapcalc_exp')){
e.style.display = 'inline';
}
}
document.addEventListener('keydown', e => {
if (e.key == 'c' && e.altKey){
if(document.querySelectorAll('.scrapcalc_result').length == 0){
scrapcalc_exec();
}
else {
scrapcalc_reset();
}
}
})
export const DUMMY_ZoVET2Sk = '';