-
Notifications
You must be signed in to change notification settings - Fork 40
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
URL内にチャンネルの表記が入ると意図しないリンクが生成される #3978
Comments
チャンネルとメンションの置換処理はバックとフロント両方にあるので、両方弄らないとだめそう? traQ_S-UI/src/lib/markdown/internalLinkEmbedder.ts Lines 36 to 109 in d55e4bc
「コードブロックとLaTeXブロック内でない箇所」この条件に URL 内でないも加えればよさそう。 |
URL の検出ロジックは |
現在 this.md.linkify.tlds(['app', 'dev', 'games', 'tech', 'show'], true) どうするのが最善なのかな |
フロントのコードはユーザー用で、バックのコードは BOT 用でオプションが有効の時だけ置換されるやつらしい。 まとめると僕は URL の検出に 2 つの実装方針を考えていて、 A. 依存関係無しで実装別言語であるバックとフロントを同じロジックにするために、traQ のフロントが内部で使っているマークダウンパーサーの実装をある程度再現する。ライブラリに依存しないことで二言語で同じロジックにしやすい。 メリット: ユーザーと BOT で置換のロジックが揃う B. ロジックを揃えないでそれぞれ実装フロントは traQ のマークダウンパーサーで使われている メリット: 実装が楽、ユーザーのみ MD の URL の検出ロジックと一致する つまり、BOT とユーザーを合わせるのが A、ユーザーと MD を合わせるのが B って感じかな。 |
C. フロントの実装を消し、ユーザーのもバックにさせる
ので、フロントの置換ロジックを消してしまって、常にバックに任せるとよさそう。バックは メリット: ライブラリなら実装が楽、ユーザーと BOT で URL の検出ロジックが一致する、同じロジックが複数存在しなくなる |
C がよさそうかな~という感じになってる。ただフロントでの置換結果のテキストはそのまま送信する前に長さチェックに使われているので、そこを少し書き換える必要がありそうという感じに |
フロントは置換 → 長さチェックの順だけど、バックは長さチェック → 置換らしいので、そこもバックに合わせるならフロントの長さチェックは置換無しのでそのままやっちゃえばよさそう |
が
になってリンクされる
The text was updated successfully, but these errors were encountered: