Skip to content
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

feat: Add parseHtml #156

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from

Conversation

noellabo
Copy link

@noellabo noellabo commented Jan 6, 2025

What

parseHtml APIを追加し、MFM未対応実装のNoteに含まれるHTMLを期待通りにパースできるようにします。

Why

MFM未対応実装のNoteに含まれるHTMLは、従来のparse APIでは投稿者が意図していない解釈となります。

MFM構文のうち、対応HTMLタグ、メンション、ハッシュタグ、URL、絵文字コード、Unicode絵文字のみパースするAPIを追加することにより、過剰な解釈を行わず、適切に解釈できる機能を提供します。

Additional info (optional)

Fix #155
See misskey-dev/misskey#15217

Copy link
Member

@samunohito samunohito left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

prありがとうございます。気になった点がありましたのでコメントいたします。

Comment on lines +175 to +201
html: r => {
return P.alt([
// Regexp
r.unicodeEmoji,
// "<center>" block
r.centerTag,
// "<small>"
r.smallTag,
// "<plain>"
r.plainTag,
// "<b>"
r.boldTag,
// "<i>"
r.italicTag,
// "<s>"
r.strikeTag,
// "@"
r.mention,
// "#"
r.hashtag,
// ":"
r.emojiCode,
// http
r.url,
r.text,
]);
},
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

以下の要素で囲われた文字列の中に、**__のようなMFMとして意味のある記号が存在した時の挙動が気になっております。

  • centerTag
  • smallTag
  • boldTag
  • italicTag
  • strikeTag

html用のパーサに含まれている上記はinlineを使用して再帰的に解析を行うものであり、<center>タグの中に**などがあった場合、MFMとして認識されてしまわないかという点を懸念しております。

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

あー、そうすると、インライン用の解析器をわけて別途制限しないとダメかな

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

parseHtml APIを追加する
2 participants