@@ -55,6 +55,7 @@ pub fn parse(input: &str, comment_char: char) -> Vec<Token> {
5555 \s+)" ,
5656 )
5757 . unwrap ( ) ;
58+ let mut px = false ;
5859 for line in lines {
5960 if has_scissors {
6061 match * toks. last_mut ( ) . expect ( "has_scissors" ) {
@@ -79,10 +80,12 @@ pub fn parse(input: &str, comment_char: char) -> Vec<Token> {
7980 if toks. last ( ) != Some ( & Token :: VerticalSpace ) {
8081 toks. push ( Token :: VerticalSpace ) ;
8182 }
83+ px = true ;
8284 } else if !has_subject {
8385 parse_subject ( line, & mut toks) ;
8486 has_subject = true ;
85- } else if footnote. is_match ( line) {
87+ px = false ;
88+ } else if px && footnote. is_match ( line) {
8689 debug_assert ! ( footnote. as_str( ) . contains( ' ' ) ) ;
8790 let mut splitter = line. splitn ( 2 , ' ' ) ;
8891 let key = splitter. next ( ) . unwrap ( ) . to_owned ( ) ;
@@ -118,6 +121,7 @@ pub fn parse(input: &str, comment_char: char) -> Vec<Token> {
118121 raw. push ( '\n' ) ; // Recover linefeed lost from iterator.
119122 Some ( Token :: Literal ( raw) )
120123 } else {
124+ px = false ;
121125 Some ( Token :: Paragraph ( line. trim ( ) . to_owned ( ) ) )
122126 }
123127 }
@@ -525,7 +529,7 @@ Signed-off-by: Jane Doe <jane@doe.com>
525529 }
526530
527531 #[ test]
528- fn footnotes_are_left_bracket_ident_right_bracket_space_text ( ) {
532+ fn footnotes_are_left_bracket_ident_right_bracket_space_text_distanced_from_paragraph ( ) {
529533 assert_eq ! (
530534 parse(
531535 "
@@ -564,13 +568,18 @@ subject
564568 }
565569
566570 #[ test]
567- fn footnote_does_not_join_immediately_preceding_paragraph ( ) {
571+ fn footnote_cannot_follow_paragraph_immediately ( ) {
568572 assert_eq ! (
569573 parse(
570574 "
571575subject
572576
573- paragraph
577+ paragraph 1
578+ [1] not footnote 1
579+ [2] not footnote 2
580+
581+ paragraph 2
582+
574583[1] footnote 1
575584[2] footnote 2
576585"
@@ -579,7 +588,10 @@ paragraph
579588 VerticalSpace ,
580589 Subject ( "subject" . to_owned( ) ) ,
581590 VerticalSpace ,
582- Paragraph ( "paragraph" . to_owned( ) ) ,
591+ Paragraph ( "paragraph 1 [1] not footnote 1 [2] not footnote 2" . to_owned( ) ) ,
592+ VerticalSpace ,
593+ Paragraph ( "paragraph 2" . to_owned( ) ) ,
594+ VerticalSpace ,
583595 Footnote ( "[1]" . to_owned( ) , "footnote 1" . to_owned( ) ) ,
584596 Footnote ( "[2]" . to_owned( ) , "footnote 2" . to_owned( ) ) ,
585597 ] ,
0 commit comments