File tree Expand file tree Collapse file tree 1 file changed +19
-4
lines changed Expand file tree Collapse file tree 1 file changed +19
-4
lines changed Original file line number Diff line number Diff line change @@ -310,12 +310,27 @@ pub fn relative_path(a: &str, b: &str) -> TokenStream {
310310 res
311311}
312312
313+ // If a document contains newline(either hardcode newline or escape sequence),
314+ // convert it into multiple #[doc=""] sequence, and append 2 whitespace at end of each line (but not the last line),
315+ // to make multiple valid markdown lines.
313316pub fn doc ( doc : & Option < String > ) -> TokenStream {
314317 if let Some ( doc) = doc {
315- let doc = doc. replace ( "\\ n" , "\n " ) ;
316- let doc = respace ( & doc) ;
317- let doc = escape_brackets ( & doc) ;
318- quote ! ( #[ doc=#doc] )
318+ let mut doc = doc. replace ( "\\ r" , "\n " ) ;
319+ doc = doc. replace ( "\\ n" , "\n " ) ;
320+ let doc_lines: Vec < _ > = doc. split ( '\n' ) . skip_while ( |v| v. is_empty ( ) ) . collect ( ) ;
321+
322+ let mut doc_token_stream = TokenStream :: new ( ) ;
323+ for ( index, content) in doc_lines. iter ( ) . enumerate ( ) {
324+ let mut content = respace ( content) ;
325+ content = escape_brackets ( & content) ;
326+ // save a lot of whitespace for one-line doc
327+ if index != doc_lines. len ( ) - 1 {
328+ content. push_str ( " " ) ;
329+ }
330+ doc_token_stream. extend ( quote ! ( #[ doc=#content] ) ) ;
331+ }
332+
333+ doc_token_stream
319334 } else {
320335 quote ! ( )
321336 }
You can’t perform that action at this time.
0 commit comments