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")]
というか既存のアイデアに名前がついてた
こちらの方式を使うかな...

(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)歳
長いな...
こっちのほうがやや短い?

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にする必要がありました

Ctrlキーでkeypressイベントが出ない場合があるようです。
修正しました!

2023/5/7 変数に
2023/5〜2023/4
を使うと以下のエラーがでました

頭に数字が入るとダメみたい

/
も割り算になるからダメか

jsfunction 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が有効でなくなる? <- ここでエラー
}
// 省略
consoledex.js:2 Uncaught SyntaxError: Invalid or unexpected token
at eval (<anonymous>)
at scrapcalc_exec (script.js:7:19)
text.match(/=/)
がなにをしているのかわからない

上の説明を見る限り、 =
を使っているかどうかに関わらず実行しているように見える
decodeURI
いるのかな
変数名を
2023/5〜2023/4
にしたということですか?

2023/5〜2023/4のX=...にしました

たとえば
[% 2023/5〜2023/4のX=45 * 56]
のように書いて実行したということでしょうか?

Calcボタンを押したときにエラーが出るのでインラインコードにします

そうです

結論としては頭に数字を使ってはいけないのと/は使えない。JavaScriptの制約

変数名の先頭に数字を使える言語と/を含められる言語がそもそもなさそう

これを使っている時にJavaScriptで計算するぞ〜という意識はないので、できないとなんで?と思った

なるほど使うときのメンタルモデルの違いかな

自分はコードとしか見てなかったので、変数に自由な文字を入れるという発想がなかった
自由に変数を使えるようにするには
とりあえず内部で変数として使える何らかの文字列に変換して対応づければいい

MD5で小文字alphabetのみで構成されたハッシュ値を生成して、それらと
Map
で結びつければいいだろう
こういうのを作り込んでいくと泥酔志向で使えるソフトになっていく

=
の文字装飾記法がなくなってしまったようだ
なんと


一応一時的なものだったらしい
「=」は使うなと

に言われたので「%」に変更しました

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