generated at
ScrapCalc
Scrapboxをスプレッドシートみたいに使う方法
/masui/ScrapCalc に書きました 増井俊之
記法が = から % に変更になりました

「Scrapboxで計算ができるようになった。何に使えるかな?」と考えても用途を思いつくものではない
ボトムアップ発想は難しい
しかし、ページ上で何か計算が必要になったときScrapCalcを思い出すようなことがあれば役にたつこともあるだろう
Scrapboxのページ数 = scrapbox.Project.pages.length ページ
赤いのも含むやつか
東京オリンピックまで Math.floor((new Date('2021-7-23') - Date.now()) / (24 * 60 * 60 * 1000))
テキスト = [% scrapbox.Page.lines.map( function(l){ return l.text} ).join("\n")]

ScrapJupyterというのが爆誕してた
というか既存のアイデアに名前がついてた
こちらの方式を使うかな... 増井俊之
(1,eval)('a = 100') とすると window.a = 100 になるらしい
なんでやろ

成績判定できるなら、履修シミュレーションもできるじゃん!

増井俊之
家計簿計算するのに便利すぎる
いろんな計算と文章書きを同じところでやるのは正しいことだと思う
Excelでもエディタでもこれができないのは間違ってる

年齢計算
増井俊之Math.floor((((1900+(new Date).getYear())+("00"+((new Date).getMonth()+1)).substr(-2)+("00"+(new Date).getDate()).substr(-2))-19590711) / 10000)
長いな...
こっちのほうがやや短い?takker
Math.floor((new Date().getTime() - new Date(1959,6,11).getTime()) / (365 * 24 * 60 * 60 * 1000))

グラフを描く
増井俊之 の体重
'I'.repeat(99.1) 2020/3/27 99.1
'I'.repeat(97.8) 2020/4/17 97.8
'I'.repeat(95.1) 2021/2/2 95.1
'I'.repeat(93.1) 2021/2/25 93.1


実装

環境依存しそうですが、下記のkeypressをkeydownにする必要がありましたyanma
Ctrlキーでkeypressイベントが出ない場合があるようです。
修正しました! 増井俊之

ScrapCalcが機能しなくなっちゃった?
2023/5/7 変数に 2023/5〜2023/4 を使うと以下のエラーがでました基素
頭に数字が入るとダメみたい基素
/ も割り算になるからダメか基素
js
function scrapcalc_exec(){ for(let e of document.querySelectorAll('.deco-\\%')){ let text = e.innerText; // 全角カギカッコを配列などで使えるようにする苦しい工夫 let expr = decodeURI(text).replaceAll('[','[').replaceAll(']',']') if(text.match(/=/)){ (0,eval)(expr); // 何故かこれでstrictが有効でなくなる? <- ここでエラー } // 省略
console
dex.js:2 Uncaught SyntaxError: Invalid or unexpected token at eval (<anonymous>) at scrapcalc_exec (script.js:7:19)
text.match(/=/) がなにをしているのかわからないtakker
上の説明を見る限り、 = を使っているかどうかに関わらず実行しているように見える
decodeURI いるのかな
変数名を 2023/5〜2023/4 にしたということですか?takker
2023/5〜2023/4のX=...にしました基素
たとえば2023/5〜2023/4のX=45 * 56のように書いて実行したということでしょうか?takker
そうです基素
結論としては頭に数字を使ってはいけないのと/は使えない。JavaScriptの制約基素
変数名の先頭に数字を使える言語と/を含められる言語がそもそもなさそうtakker
これを使っている時にJavaScriptで計算するぞ〜という意識はないので、できないとなんで?と思った基素
なるほど使うときのメンタルモデルの違いかなtakker
自分はコードとしか見てなかったので、変数に自由な文字を入れるという発想がなかった
自由に変数を使えるようにするには
とりあえず内部で変数として使える何らかの文字列に変換して対応づければいいtakker
MD5で小文字alphabetのみで構成されたハッシュ値を生成して、それらと Map で結びつければいいだろう

こういうのを作り込んでいくと泥酔志向で使えるソフトになっていく基素
= の文字装飾記法がなくなってしまったようだ
なんとyosidersta
一応一時的なものだったらしい
「=」は使うなとshokaiに言われたので「%」に変更しました 増井俊之
すみません

行で列挙して足してくれるのはこれじゃないですよね