リンクを外すPopupMenu
code:script.js
// リンクを外す
scrapbox.PopupMenu.addButton({
title: 'unlink',
onClick: text => {
const result = text.split(/\n/)
.map(line => line.replace(/\[(^\*\-\/_\$[^\\]*)\]/g,'$1')).join('\n'); // テロメアが無駄に更新されるのを防ぐ
if(text == result) return;
return result;
}
});
いや正規表現でもとから無視するようにしているっぽいあんも.icon 正規表現を読んでみる
/\[([^\[!"#%&'()\*\+,\-\.\/\{\|\}<>_~][^\[\]]*)\]/g
/正規表現/g
JavaScriptの正規表現リテラルはスラッシュ/で囲まれる
gフラグで全てのマッチを検出する
フラグなしの場合は最初のマッチのみ検出する
\[...\]
[と]で囲まれたテキストを検出する
\はエスケープ文字
([^\[!"#%&'()\*\+,\-\.\/\{\|\}<>_~][^\[\]]*)
[...]内のテキストを抽出する
[^...]とすれば...に含まれない任意の文字を表現できる
2つのキャラクターセットで構成されている
[^!"#%&'()\*\+,\-\.\/\{\|\}<>_~]
リンクの最初の文字が!"#%&'()*+,-./{|}<>_~のいずれでもないことを確認する
[^\[\]]*
リンクの残りの部分が[や]を含まないことを確認する
*: 0回以上の繰り返し
拡張装飾記法は極力使わないようにしているので、リストから削る \[^!"#%&'()\*\+,\-\.\/\{\|\}<>_~]から削る
[^\*\-\/_\$]
これと逆の操作で、$から始まる部分はTeX記法にするのが考えられそうあんも.icon
とり漏らしていないかテストする
ブラケットが取れなければよい
打ち消し線
アンダーライン
太字
イタリック体
$ \TeX