リンクを外すPopupMenu
code:script.js
// リンクを外す
scrapbox.PopupMenu.addButton({
title: 'unlink',
onClick: text => {
const result = text.split(/\n/).map(line => {
line = line.replace(/\[(https?:\/\/^\s\]+)(\s^\]+)?\]/g, '$1$2'); line = line.replace(/\[(^\]+)\s(https?:\/\/^\s\]+)\]/g, '$1 $2'); // (*太字 -打ち消し線 /イタリック体 _アンダーライン $数式)が含まれず (.icon)で終わらない]のブラケットを外す
line = line.replace(/\[((?:(?!\*\-\/_\$\s)^\]+))(?<!\.icon)\]/g, '$1'); return line;
}).join('\n');
if(text == result) return;
return result;
}
});
とり漏らしていないかテストする
URLのリンクも外す
イタリック体の記法とは別で判定する
[サイト名 URL]のURLの前の空白\sを利用して通常のリンクと区別している
ブラケットが取れなければよい
打ち消し線
アンダーライン
太字
イタリック体
$ \TeX
あんも.icon
icon
装飾文字*-/を含むだけの文字列は取りたい
片カッコ]
カッコ囲み
二回発動して全部取れる
\[((?:(?![\*\-\/_\$]\s)[^\]]+))(?<!\.icon)\]
\[: [をマッチさせる
[^\]]+: ]以外の文字を1文字以上
閉じ括弧が出るまですべて
(?![\*\-\/_\$]\s): 否定の先読み
![修飾文字]\s: マッチさせない条件
(?<!\.icon)\]: 否定の後読み
]の直前が.iconならマッチさせない