概要
AsgConverter.VisitParagraph のフォールバックパスで \r\n→\n の改行正規化が欠落している。
VisitInlineText では正規化しているにもかかわらずフォールバックパスでは行われておらず、Windows 形式(\r\n)の改行を含む AsciiDoc 文書が未対応構文またはエラー回復でフォールバックに到達した場合、ASG の Value に \r\n が残ったままになる。
再現条件
- Windows 形式(
\r\n)の改行を含む AsciiDoc 文書
- かつ
ParagraphSyntax.InlineElements が空(未対応構文・エラー回復)になる場合
問題のコード
Source/AsciiSharp.Asg/AsgConverter.cs — VisitParagraph フォールバック部分:
// 現状: 正規化なし
var paragraphText = node.ToString().Trim();
期待する修正
var paragraphText = node.ToString()
.Replace("\r\n", "\n", StringComparison.Ordinal)
.Replace("\r", "\n", StringComparison.Ordinal)
.Trim();
また、フォールバックへの到達自体が完全にサイレントであり、パーサーのバグと意図的な未対応構文を区別できない。Debug.Assert または診断コードの追加を検討する。
発見経緯
PR 008-fix-multiline-paragraph のレビュー(silent-failure-hunter エージェント)にて検出。