misskey-dev / mfm.js

An MFM parser implementation with TypeScript.
MIT License
108 stars 19 forks source link

URLに使用できる記号の検討 #100

Open marihachi opened 2 years ago

marihachi commented 2 years ago

URLに使用できても良さそうな記号がいくつかあるので検討したい。

検討対象(ASCII):

一応、上記の記号はRFC 3986にReserved, Unreservedとして規定されている。 つまりURLとして使用できる?あまり自信はない。

Related

Johann150 commented 2 years ago

Semicolons (;) definitely occur in URLs, for example gitweb uses them in URLs like https://git.qwertqwefsday.eu/?p=agate.git;a=summary

For the others I think we should look towards existing Markdown standards (see also misskey-dev/misskey#8011). On GitHub both of those seem to be recognized as parts of URLs:

https://example.com/ho'ni https://example.com/ho*ni

However not at the start or end:

'https://example.com/honi *https://example.com/honi

https://example.com/honi' https://example.com/honi*

esperecyan commented 8 months ago

CommonMark標準仕様における自動リンクは、< > で囲まれたURLにはリンクしますが、URLのみの場合は単なるテキストとして扱われます。 https://spec.commonmark.org/0.30/#example-610 ただし、広く使われているライブラリを利用し、広く使われている独自拡張に準拠することは意味があると思います。

RFC 3986はURL Standardにより廃用とされており、現実的にも後者を参照した方が良さそうです。 https://triple-underscore.github.io/URL-ja.html

同仕様においては、文章中のどの範囲をURLをみなすかといったことは定義されておらず、たいていの記号は解析時にパーセント符号化されます。そこで、解析器にかけたときに、強制的にパーセント符号化される記号は、URLに使えない記号であるとみなすと考えた場合に、検討対象のそれぞれの文字がURLのどこでつかえるかとまとめると、以下のようになりました。 記号 URLのどこで使えるか
' クエリ ※1
* URLでは使えない
; URLでは使えない

※1 スキームがftp, file, http, https, ws, wssの場合のみ