HTML normalizer adds empty list items for whitespace around blocks inside <li>

クローズ 初心者向け
#829 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 3 日以内に返信

@RaphaelFakhri がすでに取り組んでいます。

2026年10月21日 から。

  • #830 @RaphaelFakhri による — オープン

評価

難易度
2/5
見積もり時間
1〜3時間
初心者へのやさしさ
78/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
c, html, react-native

調査の方向性

C normalizer の flush_li_buffer から始めます。issue では、空白のみのバッファを保持するとされています。対応する web normalizer のテストを確認してください。リスト項目内のブロック要素の間に空白があるケースを再現し、C と web の共通の動作で、正規化後の出力に意図した 2 つのリスト項目だけが含まれることを確認してください。

索引モデルが issue の本文から書いたものです。

説明

bug

Describe the bug
With useHtmlNormalizer enabled (the default), a list item whose block children are separated by whitespace gets extra empty list items, one per whitespace run. CommonMark renderers emit exactly this for loose lists, so Markdown rendered to HTML gets empty list items between the real ones. The shared C normalizer (iOS, Android) and the web port behave the same way.

To Reproduce

  1. Normalize this HTML, as EnrichedTextInput and EnrichedText do with useHtmlNormalizer on:
    <ul>
    <li>
    <p>a</p>
    </li>
    <li>
    <p>b</p>
    </li>
    </ul>
    
  2. The output has six list items: an empty one, a, two empty ones, b, and an empty one. I checked this through the normalizer unit tests (C and web), not in a running app.

Normalizer output for <ul><li>\n<p>a</p>\n</li><li>\n<p>b</p>\n</li></ul>:

<ul><li>\n</li><li>a</li><li>\n</li><li>\n</li><li>b</li><li>\n</li></ul>

<ol><li><p>a</p> <p>b</p></li></ol> gives <ol><li>a</li><li> </li><li>b</li></ol>.

Expected behavior
<ul><li>a</li><li>b</li></ul>, two bullets. Whitespace between blocks is already dropped for paragraphs (InterBlockWhitespace), but not inside list items: flush_li_buffer only skips an empty buffer, not a whitespace-only one.

Device:

  • Platform: iOS, Android and web (shared normalizer logic)
  • Version: 1.1.1 / main @ 0d015a7
主要言語
C
スター
1.4k
フォーク
74
平均マージ
3日 4時間
マージ済み PR(30日)
18

環境構築

  • Dockerfile・Docker Compose ファイルなし
  • プルリクエストのテンプレートあり
  • コントリビューションガイドなし

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

software-mansion/react-native-enriched-html のほかの issue

software-mansion/react-native-enriched-html の issue をすべて見る

似ている issue

C の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。