generated at
quote-block-all
script.js
scrapbox.PopupMenu.addButton({ title: (text) => text.includes("\n") ? ">" : "", onClick: (text) => text.split("\n") .map((line) => line.replace(/^(\s*)/, "$1>")) .join("\n"), });
thk takker

コードリード
textには \n 区切りの複数行文字列が入る(複数行選択時)
単一行選択時は入らないので、includesで判定して非表示にしてる
非表示とは「何も表示しない」を表示すること
1: textを \n でスプリットして配列にする
2: 1に対してmap
mapとは、各要素に対して何かを適用した版を新たに返すこと
pythonでいう内包表記みたいなものか
mapの中身は、 > を先頭につける正規表現を何か書いている
行頭の空白を\1でキャプチャして、\1の後に > をつけているのかsta
で、 > つけた配列はそのままだと文字列じゃないので、joinで復元する

titleには表示テキストを書く
空文字列を指定すれば非表示にできる
のは嘘で「何も映らないスペース」がまだできてるのでCSSでdisplay noneしなきゃダメみたい /villagepump/@sta#62a8190f1280f0000094ef2f
ので、 ? の記法(三項演算子)で場合分けすれば「こういうときだけ表示しない」が可
onClickにはクリックされたとき(項目選択されたとき)の処理を書く

テストする

あああ
いいい
ううう
y1えええ
staおおおーーーー
↓ quote
>あああ
>いいい
>ううう
>y1えええ
>staおおおーーーー
おおstasta

なるほど、選択範囲を全部 > つける感じなのかsta