generated at
正規表現を展開してリンクにしてくれるUserScript

導入方法
compile script.jsでBundleした物をUserScriptにコピペ
使い方
[正規表現記法] 」という形式(「`」も含む)でリンクを書き、Pop upの「正規表現を展開」をクリック
サンプル
一緒に使うと良いCSS
これが無いと展開したものが邪魔すぎると思うblu3mo
style.css
.popup-menu .button-container .button:empty { display: none; }
これを置くとコードブロック以外のところで文字を選択しても謎の空白ができなくなるwogikaze

未来の自分の検索ワードに引っかかって欲しい時に便利そうblu3mo
しばらく個人projectで使ってみて、どの程度邪魔になるかを検証してみる

もし邪魔で全部消したくなった場合は、https://scrapbox.io/villagepump/search/page?q=​ (<-ゼロ幅スペース)で一覧表示できる

-
Helpfeel記法の検索を利用したいblu3mo
Helpfeel記法を勝手に展開してリンクにしてくれるUserScriptがあれば良い?blu3mo
? (アメリカ|米国)の大学出願に必要な(試験|テスト)は?
と書くと、その下に
[( [アメリカの大学出願に必要な試験は?] [アメリカの大学出願に必要なテストは?] [米国の大学出願に必要な試験は?] [米国の大学出願に必要なテストは?] ]
と自動で展開される、みたいな
展開されたリンクが邪魔くさいのはUserCSSでなんとかすれば良さそう

実装自体はそこまで難しくないtakker
script.js
import Generator from "https://esm.sh/re_expand@0.2.0"; const expand = (pattern) => { const generator = new Generator(pattern); try { // " "はワイルドカード return [ ...new Set( generator.filter(" ").flatMap((pairs) => pairs.map(([expanded]) => expanded) ), ), ]; } catch (e) { // TypeErrorがでたpatternは無視する if (e instanceof TypeError) return []; throw e; } }; const condition = /^\s*`\[([^\n]+)\]`/ const processLine = (line) => { const match = line.match(condition) if (match === null) { return line } else { return `\`[${match[1]}]\` ${expand(match[1].replace(/[\[\]]/g, "")) .flatMap((description) => description !== "" ? [`[, [(${description})]]`] : []) .join(" ")}` } } scrapbox.PopupMenu.addButton({ title: (text) => text.split("\n").some( (line) => condition.test(line.trim()) ) ? "正規表現を展開" : "", onClick: (text) => text.split("\n").map(processLine).join("\n"), });
re expandというものが既にあるのかblu3mo
あるんです! 増井俊之
(知らずに再実装するところだった)
実装結構メンドクサイですが、うまく作れます? 増井俊之
Scrapboxだとimport出来ない?
あ、bundleしないと使えないって言うの忘れてたtakker
compileボタン設置しました
なるほどblu3mo
Helpfeel記法内だとPopUpが表示されないみたい?
ほんとだ
Helpfeel記法の前の行まで選択すればでてくる
takkerさんの実装を一部改変しました🙏(前のはHistoryにあります)blu3mo
? Helpfeel記法を(展開|Expand)する(UserScript|拡張機能)
こんな感じのフォーマットにしましたblu3mo
理由
行の後ろにリンクを置きたかった
純正Helpfeel記法だと後ろに別のものを置けない
Text<-このCSSでリンクの存在を示しつつコンパクトに詰め込ました
本物のHelpfeel記法が使えるなら本物のHelpfeelで検索すればいい
+1smiletakker
? を正規表現と認識してしまうtakker
一つでいいのに4つ出てしまう
このページに辿り着きたい時は良いが、それ以外の時に邪魔
これがUserCSSで解決できれば本当にHelpfeelになる?
小さくしてみた✅blu3mo
Helpfeel記法の検索結果が候補に出ると言うだけでも便利そうMijinko_SD
補完で色々なページにリンクが飛ぶ
Helpfeel記法を展開するUserScriptにリンクを飛ばすページと、Helpfeel記法をExpandする拡張機能にリンクを飛ばすページがあるとまずい
Wikiとして成り立たなくなる
副表記に❌をつけると区別つくかも?takker
なるほどblu3mo
(展開されたリンク)みたいにカッコで囲うだけでも良さそう✅blu3mo
もはやHelpfeel記法に似せる必要も無い気がしてきたblu3mo
質問形式以外でも、普通のリンクのバリエーションを増やしたい時に使えるので
[(正規表現|Regex)記法] というフォーマットを展開する形でよさそう
変えてみた✅
[(正規表現|Regex)記法] (正規表現記法)​ (Regex記法)​
リンクが展開されているという事が分かりやすくて良さそう
検索結果で展開された正規表現のみフィルタして小さくしたい
ゼロ幅スペースを展開時に埋め込めば、 a[href*="%E2%80%8B"] でCSSにてフィルタできる?blu3mo
やってみた✅
PopUpを使わない形の実装も考えてみたい
書いている側から常時勝手に展開される様なイメージ
/takker/scrapbox-keyboard-emulation-2あたりを使えば出来るのかな
現在のカーソル位置と異なる場所に挿入は難しい?
書いて改行したら展開されるとかでも良いか