Scrapboxにペリマインドを実装する
https://gyazo.com/50c6b2cd2567cd571b07d2e8309b45c0
1
マーク
[peremind.icon] [sta.icon] 一行でいいので追記していきたい
実装
ページPを開いたときに
Pの中からマークを探す
もしマークがあれば、メッセージ内容を取得して alert('メッセージ内容')する
できれば alert 部分は交換可能にする
2
code:script.js
const res = await fetch("/api/users/me");
const username = (await res.json()).name;
// icon記法にするのはだるいが、視覚的にわかりやすいのであえて導入する。
//const remindIcon = "peremind";
const remindIcon = "peremind.icon";
//const regExp = new RegExp(^\\s*\\[${remindIcon}\\]\\s*\\[${username.icon}\\]\\s*(.*)$);
const regExp = new RegExp(^\\s*\\[${remindIcon}\\]\\s*\\[${username}.icon\\]\\s*(.*)$);
const callback = () => {
// console.log('in callback'); // ★ここはページ読み込んだときに一回だけ入る
if (scrapbox.Layout !== "page") return;
//console.log('in callback after layout-page condifion.'); ★ここも問題ない
console.log(scrapbox.Page.lines);
const line = scrapbox.Page.lines.find(
(line) => regExp.test(line.text)
);
if (!line) return;
console.log('来てる?');
alert(line.text.match(regExp)1); };
// console.log('ここ来てる?'); ★来てる
// console.log(username); ★sta、と正しい
callback();
scrapbox.addListener("page:changed", callback);
まだ動かん
あとは読み解いて微調整してみるか
scrapbox.Page.lines
https://gyazo.com/c46920774b543c0f5d930dc646c385eb
ああ、正規表現マッチしてねえわ
bingo
https://gyazo.com/8541221b20d0da3bd9d6f14a3d6323dd
https://gyazo.com/75c83030dcde07f6bfd124775a4e4eca
❌
problem1: 二度目にページ開いたときにリマインドされない
code:ここやろな.js
scrapbox.addListener("page:changed", callback);
リスナーが page:changed をどう解釈してるかはわからんが、おそらく
「読み込んだページ」をストックしていて、ここに「今開いたページ」を貯めている
で、ページ開いたときは、このストックから既存を探して、なければ発火、あれば何もしない
↑ こんな感じになってそう
気のせい。されたされた。
んー、Firefoxだからか知らないけど、なんか割と不安定な気がするんだよなー