@@ -1345,6 +1345,50 @@ impl<'a> Markdown<'a> {
13451345 let p = TableWrapper :: new ( p) ;
13461346 CodeBlocks :: new ( p, codes, edition, playground)
13471347 }
1348+
1349+ pub ( crate ) fn split_summary_and_content ( self ) -> ( Option < String > , Option < String > ) {
1350+ if self . content . is_empty ( ) {
1351+ return ( None , None ) ;
1352+ }
1353+ let mut p = self . into_iter ( ) ;
1354+
1355+ let mut event_level = 0 ;
1356+ let mut summary_events = Vec :: new ( ) ;
1357+ let mut get_next_tag = false ;
1358+
1359+ let mut end_of_summary = false ;
1360+ while let Some ( event) = p. next ( ) {
1361+ match event {
1362+ Event :: Start ( _) => event_level += 1 ,
1363+ Event :: End ( kind) => {
1364+ event_level -= 1 ;
1365+ if event_level == 0 {
1366+ // We're back at the "top" so it means we're done with the summary.
1367+ end_of_summary = true ;
1368+ // We surround tables with `<div>` HTML tags so this is a special case.
1369+ get_next_tag = kind == TagEnd :: Table ;
1370+ }
1371+ }
1372+ _ => { }
1373+ }
1374+ summary_events. push ( event) ;
1375+ if end_of_summary {
1376+ if get_next_tag && let Some ( event) = p. next ( ) {
1377+ summary_events. push ( event) ;
1378+ }
1379+ break ;
1380+ }
1381+ }
1382+ let mut summary = String :: new ( ) ;
1383+ html:: push_html ( & mut summary, summary_events. into_iter ( ) ) ;
1384+ if summary. is_empty ( ) {
1385+ return ( None , None ) ;
1386+ }
1387+ let mut content = String :: new ( ) ;
1388+ html:: push_html ( & mut content, p) ;
1389+
1390+ if content. is_empty ( ) { ( Some ( summary) , None ) } else { ( Some ( summary) , Some ( content) ) }
1391+ }
13481392}
13491393
13501394impl MarkdownWithToc < ' _ > {
@@ -1416,52 +1460,6 @@ impl MarkdownItemInfo<'_> {
14161460 }
14171461}
14181462
1419- pub ( crate ) fn markdown_split_summary_and_content (
1420- md : Markdown < ' _ > ,
1421- ) -> ( Option < String > , Option < String > ) {
1422- if md. content . is_empty ( ) {
1423- return ( None , None ) ;
1424- }
1425- let mut p = md. into_iter ( ) ;
1426-
1427- let mut event_level = 0 ;
1428- let mut summary_events = Vec :: new ( ) ;
1429- let mut get_next_tag = false ;
1430-
1431- let mut end_of_summary = false ;
1432- while let Some ( event) = p. next ( ) {
1433- match event {
1434- Event :: Start ( _) => event_level += 1 ,
1435- Event :: End ( kind) => {
1436- event_level -= 1 ;
1437- if event_level == 0 {
1438- // We're back at the "top" so it means we're done with the summary.
1439- end_of_summary = true ;
1440- // We surround tables with `<div>` HTML tags so this is a special case.
1441- get_next_tag = kind == TagEnd :: Table ;
1442- }
1443- }
1444- _ => { }
1445- }
1446- summary_events. push ( event) ;
1447- if end_of_summary {
1448- if get_next_tag && let Some ( event) = p. next ( ) {
1449- summary_events. push ( event) ;
1450- }
1451- break ;
1452- }
1453- }
1454- let mut summary = String :: new ( ) ;
1455- html:: push_html ( & mut summary, summary_events. into_iter ( ) ) ;
1456- if summary. is_empty ( ) {
1457- return ( None , None ) ;
1458- }
1459- let mut content = String :: new ( ) ;
1460- html:: push_html ( & mut content, p) ;
1461-
1462- if content. is_empty ( ) { ( Some ( summary) , None ) } else { ( Some ( summary) , Some ( content) ) }
1463- }
1464-
14651463impl MarkdownSummaryLine < ' _ > {
14661464 pub ( crate ) fn into_string_with_has_more_content ( self ) -> ( String , bool ) {
14671465 let MarkdownSummaryLine ( md, links) = self ;
0 commit comments