@@ -333,6 +333,7 @@ impl<'a> SummaryParser<'a> {
333
333
334
334
/// Finishes parsing a link once the `Event::Start(Tag::Link(..))` has been opened.
335
335
fn parse_link ( & mut self , href : String ) -> Link {
336
+ let href = href. replace ( "%20" , " " ) ;
336
337
let link_content = collect_events ! ( self . stream, end Tag :: Link ( ..) ) ;
337
338
let name = stringify_events ( link_content) ;
338
339
@@ -947,4 +948,29 @@ mod tests {
947
948
948
949
assert_eq ! ( got, should_be) ;
949
950
}
951
+
952
+ #[ test]
953
+ fn allow_space_in_link_destination ( ) {
954
+ let src = "- [test1](./test%20link1.md)\n - [test2](<./test link2.md>)" ;
955
+ let should_be = vec ! [
956
+ SummaryItem :: Link ( Link {
957
+ name: String :: from( "test1" ) ,
958
+ location: Some ( PathBuf :: from( "./test link1.md" ) ) ,
959
+ number: Some ( SectionNumber ( vec![ 1 ] ) ) ,
960
+ nested_items: Vec :: new( ) ,
961
+ } ) ,
962
+ SummaryItem :: Link ( Link {
963
+ name: String :: from( "test2" ) ,
964
+ location: Some ( PathBuf :: from( "./test link2.md" ) ) ,
965
+ number: Some ( SectionNumber ( vec![ 2 ] ) ) ,
966
+ nested_items: Vec :: new( ) ,
967
+ } ) ,
968
+ ] ;
969
+ let mut parser = SummaryParser :: new ( src) ;
970
+ let got = parser
971
+ . parse_numbered ( & mut 0 , & mut SectionNumber :: default ( ) )
972
+ . unwrap ( ) ;
973
+
974
+ assert_eq ! ( got, should_be) ;
975
+ }
950
976
}
0 commit comments