@@ -2359,8 +2359,8 @@ peg::parser! {
23592359 // to prevent nested lists from consuming parent-level continuations.
23602360 rule list_with_continuation( start: usize , offset: usize , block_metadata: & BlockParsingMetadata , allow_continuation: bool ) -> Result <Block , Error >
23612361 = callout_list( start, offset, block_metadata)
2362- / unordered_list( start, offset, block_metadata, false , allow_continuation)
2363- / ordered_list( start, offset, block_metadata, false , allow_continuation)
2362+ / unordered_list( start, offset, block_metadata, false , allow_continuation, false )
2363+ / ordered_list( start, offset, block_metadata, false , allow_continuation, false )
23642364 / description_list( start, offset, block_metadata)
23652365
23662366 rule unordered_list_marker( ) -> & ' input str = $( "*" + / "-" )
@@ -2448,7 +2448,7 @@ peg::parser! {
24482448 / ( "[[" [ ^']' ] + "]]" whitespace( ) * eol( ) )
24492449 )
24502450
2451- rule unordered_list( start: usize , offset: usize , block_metadata: & BlockParsingMetadata , parent_is_ordered: bool , allow_continuation: bool ) -> Result <Block , Error >
2451+ rule unordered_list( start: usize , offset: usize , block_metadata: & BlockParsingMetadata , parent_is_ordered: bool , allow_continuation: bool , is_nested : bool ) -> Result <Block , Error >
24522452 // Parse whitespace + marker first to capture base_marker for rest items
24532453 // marker_start captures position before marker for correct first item location
24542454 = whitespace( ) * marker_start: position!( ) base_marker: $( unordered_list_marker( ) ) & whitespace( )
@@ -2466,8 +2466,8 @@ peg::parser! {
24662466 let marker = items. first( ) . map_or( String :: new( ) , |item| item. marker. clone( ) ) ;
24672467
24682468 Ok ( Block :: UnorderedList ( UnorderedList {
2469- title: block_metadata. title. clone( ) ,
2470- metadata: block_metadata. metadata. clone( ) ,
2469+ title: if is_nested { Title :: default ( ) } else { block_metadata. title. clone( ) } ,
2470+ metadata: if is_nested { BlockMetadata :: default ( ) } else { block_metadata. metadata. clone( ) } ,
24712471 items,
24722472 marker,
24732473 location: state. create_location( start+offset, end+offset) ,
@@ -2522,7 +2522,7 @@ peg::parser! {
25222522 }
25232523 }
25242524
2525- rule ordered_list( start: usize , offset: usize , block_metadata: & BlockParsingMetadata , parent_is_ordered: bool , allow_continuation: bool ) -> Result <Block , Error >
2525+ rule ordered_list( start: usize , offset: usize , block_metadata: & BlockParsingMetadata , parent_is_ordered: bool , allow_continuation: bool , is_nested : bool ) -> Result <Block , Error >
25262526 // Parse whitespace + marker first to capture base_marker for rest items
25272527 // marker_start captures position before marker for correct first item location
25282528 = whitespace( ) * marker_start: position!( ) base_marker: $( ordered_list_marker( ) ) & whitespace( )
@@ -2540,8 +2540,8 @@ peg::parser! {
25402540 let marker = items. first( ) . map_or( String :: new( ) , |item| item. marker. clone( ) ) ;
25412541
25422542 Ok ( Block :: OrderedList ( OrderedList {
2543- title: block_metadata. title. clone( ) ,
2544- metadata: block_metadata. metadata. clone( ) ,
2543+ title: if is_nested { Title :: default ( ) } else { block_metadata. title. clone( ) } ,
2544+ metadata: if is_nested { BlockMetadata :: default ( ) } else { block_metadata. metadata. clone( ) } ,
25452545 items,
25462546 marker,
25472547 location: state. create_location( start+offset, end+offset) ,
@@ -2819,7 +2819,7 @@ peg::parser! {
28192819 // whitespace) from being incorrectly parsed as nested. Without this, `. item` at
28202820 // column 1 would be nested inside the parent unordered item instead of being a
28212821 // sibling list.
2822- = !at_root_ordered_marker( ) nested_start: position!( ) list: ordered_list( nested_start, offset, block_metadata, true , false ) {
2822+ = !at_root_ordered_marker( ) nested_start: position!( ) list: ordered_list( nested_start, offset, block_metadata, true , false , true ) {
28232823 Some ( list)
28242824 }
28252825 // Nested unordered list with deeper markers (e.g., ** inside *)
@@ -2854,8 +2854,8 @@ peg::parser! {
28542854 let marker = items. first( ) . map_or( String :: new( ) , |item| item. marker. clone( ) ) ;
28552855
28562856 Ok ( Block :: UnorderedList ( UnorderedList {
2857- title: block_metadata . title . clone ( ) ,
2858- metadata: block_metadata . metadata . clone ( ) ,
2857+ title: Title :: default ( ) ,
2858+ metadata: BlockMetadata :: default ( ) ,
28592859 items,
28602860 marker,
28612861 location: state. create_location( start+offset, end+offset) ,
@@ -3105,7 +3105,7 @@ peg::parser! {
31053105 // whitespace) from being incorrectly parsed as nested. Without this, `* item` at
31063106 // column 1 would be nested inside the parent ordered item instead of being a
31073107 // sibling list.
3108- = !at_root_unordered_marker( ) nested_start: position!( ) list: unordered_list( nested_start, offset, block_metadata, true , false ) {
3108+ = !at_root_unordered_marker( ) nested_start: position!( ) list: unordered_list( nested_start, offset, block_metadata, true , false , true ) {
31093109 Some ( list)
31103110 }
31113111 // Nested ordered list with deeper markers (e.g., .. inside .)
@@ -3140,8 +3140,8 @@ peg::parser! {
31403140 let marker = items. first( ) . map_or( String :: new( ) , |item| item. marker. clone( ) ) ;
31413141
31423142 Ok ( Block :: OrderedList ( OrderedList {
3143- title: block_metadata . title . clone ( ) ,
3144- metadata: block_metadata . metadata . clone ( ) ,
3143+ title: Title :: default ( ) ,
3144+ metadata: BlockMetadata :: default ( ) ,
31453145 items,
31463146 marker,
31473147 location: state. create_location( start+offset, end+offset) ,
@@ -3486,7 +3486,7 @@ peg::parser! {
34863486 = eol( ) * // Consume any blank lines before the list
34873487 & ( whitespace( ) * ( unordered_list_marker( ) / ordered_list_marker( ) ) whitespace( ) )
34883488 list_start: position!( )
3489- list: ( unordered_list( list_start, offset, block_metadata, false , true ) / ordered_list( list_start, offset, block_metadata, false , true ) )
3489+ list: ( unordered_list( list_start, offset, block_metadata, false , true , true ) / ordered_list( list_start, offset, block_metadata, false , true , true ) )
34903490 {
34913491 tracing:: info!( "Auto-attaching list to description list item" ) ;
34923492 Ok ( vec![ list?] )
0 commit comments