@@ -382,7 +382,6 @@ impl<'a, I: Iterator<Item = Event<'a>>> Iterator for LinkReplacer<'a, I> {
382
382
Some ( Event :: Code ( text) ) => {
383
383
trace ! ( "saw code {}" , text) ;
384
384
if let Some ( link) = self . shortcut_link {
385
- trace ! ( "original text was {}" , link. original_text) ;
386
385
// NOTE: this only replaces if the code block is the *entire* text.
387
386
// If only part of the link has code highlighting, the disambiguator will not be removed.
388
387
// e.g. [fn@`f`]
@@ -391,8 +390,11 @@ impl<'a, I: Iterator<Item = Event<'a>>> Iterator for LinkReplacer<'a, I> {
391
390
// So we could never be sure we weren't replacing too much:
392
391
// [fn@my_`f`unc] is treated the same as [my_func()] in that pass.
393
392
//
394
- // NOTE: &[1..len() - 1] is to strip the backticks
395
- if * * text == link. original_text [ 1 ..link. original_text . len ( ) - 1 ] {
393
+ // NOTE: .get(1..len() - 1) is to strip the backticks
394
+ if let Some ( link) = self . links . iter ( ) . find ( |l| {
395
+ l. href == link. href
396
+ && Some ( & * * text) == l. original_text . get ( 1 ..l. original_text . len ( ) - 1 )
397
+ } ) {
396
398
debug ! ( "replacing {} with {}" , text, link. new_text) ;
397
399
* text = CowStr :: Borrowed ( & link. new_text ) ;
398
400
}
@@ -403,9 +405,12 @@ impl<'a, I: Iterator<Item = Event<'a>>> Iterator for LinkReplacer<'a, I> {
403
405
Some ( Event :: Text ( text) ) => {
404
406
trace ! ( "saw text {}" , text) ;
405
407
if let Some ( link) = self . shortcut_link {
406
- trace ! ( "original text was {}" , link. original_text) ;
407
408
// NOTE: same limitations as `Event::Code`
408
- if * * text == * link. original_text {
409
+ if let Some ( link) = self
410
+ . links
411
+ . iter ( )
412
+ . find ( |l| l. href == link. href && * * text == * l. original_text )
413
+ {
409
414
debug ! ( "replacing {} with {}" , text, link. new_text) ;
410
415
* text = CowStr :: Borrowed ( & link. new_text ) ;
411
416
}
0 commit comments