@@ -34,6 +34,7 @@ use std::fmt::Write;
34
34
use std:: ops:: Range ;
35
35
use std:: str;
36
36
37
+ use crate :: clean:: RenderedLink ;
37
38
use crate :: doctest;
38
39
use crate :: html:: highlight;
39
40
use crate :: html:: toc:: TocBuilder ;
@@ -52,7 +53,7 @@ fn opts() -> Options {
52
53
pub struct Markdown < ' a > (
53
54
pub & ' a str ,
54
55
/// A list of link replacements.
55
- pub & ' a [ ( String , String ) ] ,
56
+ pub & ' a [ RenderedLink ] ,
56
57
/// The current list of used header IDs.
57
58
pub & ' a mut IdMap ,
58
59
/// Whether to allow the use of explicit error codes in doctest lang strings.
@@ -78,7 +79,7 @@ pub struct MarkdownHtml<'a>(
78
79
pub & ' a Option < Playground > ,
79
80
) ;
80
81
/// A tuple struct like `Markdown` that renders only the first paragraph.
81
- pub struct MarkdownSummaryLine < ' a > ( pub & ' a str , pub & ' a [ ( String , String ) ] ) ;
82
+ pub struct MarkdownSummaryLine < ' a > ( pub & ' a str , pub & ' a [ RenderedLink ] ) ;
82
83
83
84
#[ derive( Copy , Clone , PartialEq , Debug ) ]
84
85
pub enum ErrorCodes {
@@ -339,11 +340,11 @@ impl<'a, I: Iterator<Item = Event<'a>>> Iterator for CodeBlocks<'_, 'a, I> {
339
340
/// Make headings links with anchor IDs and build up TOC.
340
341
struct LinkReplacer < ' a , ' b , I : Iterator < Item = Event < ' a > > > {
341
342
inner : I ,
342
- links : & ' b [ ( String , String ) ] ,
343
+ links : & ' b [ RenderedLink ] ,
343
344
}
344
345
345
346
impl < ' a , ' b , I : Iterator < Item = Event < ' a > > > LinkReplacer < ' a , ' b , I > {
346
- fn new ( iter : I , links : & ' b [ ( String , String ) ] ) -> Self {
347
+ fn new ( iter : I , links : & ' b [ RenderedLink ] ) -> Self {
347
348
LinkReplacer { inner : iter, links }
348
349
}
349
350
}
@@ -354,8 +355,8 @@ impl<'a, 'b, I: Iterator<Item = Event<'a>>> Iterator for LinkReplacer<'a, 'b, I>
354
355
fn next ( & mut self ) -> Option < Self :: Item > {
355
356
let event = self . inner . next ( ) ;
356
357
if let Some ( Event :: Start ( Tag :: Link ( kind, dest, text) ) ) = event {
357
- if let Some ( & ( _ , ref replace ) ) = self . links . iter ( ) . find ( |link| link. 0 == * dest) {
358
- Some ( Event :: Start ( Tag :: Link ( kind, replace . to_owned ( ) . into ( ) , text) ) )
358
+ if let Some ( link ) = self . links . iter ( ) . find ( |link| link. original_text == * dest) {
359
+ Some ( Event :: Start ( Tag :: Link ( kind, link . href . clone ( ) . into ( ) , text) ) )
359
360
} else {
360
361
Some ( Event :: Start ( Tag :: Link ( kind, dest, text) ) )
361
362
}
@@ -855,8 +856,8 @@ impl Markdown<'_> {
855
856
return String :: new ( ) ;
856
857
}
857
858
let replacer = |_: & str , s : & str | {
858
- if let Some ( & ( _ , ref replace ) ) = links. iter ( ) . find ( |link| & * link. 0 == s) {
859
- Some ( ( replace . clone ( ) , s . to_owned ( ) ) )
859
+ if let Some ( link ) = links. iter ( ) . find ( |link| & * link. original_text == s) {
860
+ Some ( ( link . original_text . clone ( ) , link . href . clone ( ) ) )
860
861
} else {
861
862
None
862
863
}
@@ -933,8 +934,8 @@ impl MarkdownSummaryLine<'_> {
933
934
}
934
935
935
936
let replacer = |_: & str , s : & str | {
936
- if let Some ( & ( _ , ref replace ) ) = links. iter ( ) . find ( |link| & * link. 0 == s) {
937
- Some ( ( replace . clone ( ) , s . to_owned ( ) ) )
937
+ if let Some ( rendered_link ) = links. iter ( ) . find ( |link| & * link. original_text == s) {
938
+ Some ( ( rendered_link . original_text . clone ( ) , rendered_link . href . clone ( ) ) )
938
939
} else {
939
940
None
940
941
}
0 commit comments