@@ -207,9 +207,7 @@ fn stripped_filtered_line<'a>(s: &'a str) -> Option<&'a str> {
207
207
///
208
208
/// Any leading or trailing whitespace will be trimmed.
209
209
fn collapse_whitespace ( s : & str ) -> String {
210
- s. split ( |c : char | c. is_whitespace ( ) ) . filter ( |s| {
211
- !s. is_empty ( )
212
- } ) . collect :: < Vec < _ > > ( ) . join ( " " )
210
+ s. split_whitespace ( ) . collect :: < Vec < _ > > ( ) . join ( " " )
213
211
}
214
212
215
213
thread_local ! ( static USED_HEADER_MAP : RefCell <HashMap <String , usize >> = {
@@ -277,10 +275,10 @@ pub fn render(w: &mut fmt::Formatter, s: &str, print_toc: bool) -> fmt::Result {
277
275
278
276
// Extract the text provided
279
277
let s = if text. is_null ( ) {
280
- "" . to_string ( )
278
+ "" . to_owned ( )
281
279
} else {
282
280
let s = unsafe { ( * text) . as_bytes ( ) } ;
283
- str:: from_utf8 ( s) . unwrap ( ) . to_string ( )
281
+ str:: from_utf8 ( & s) . unwrap ( ) . to_owned ( )
284
282
} ;
285
283
286
284
// Discard '<em>', '<code>' tags and some escaped characters,
@@ -322,22 +320,15 @@ pub fn render(w: &mut fmt::Formatter, s: &str, print_toc: bool) -> fmt::Result {
322
320
id
323
321
} ) ;
324
322
325
- let sec = match opaque. toc_builder {
326
- Some ( ref mut builder) => {
327
- builder. push ( level as u32 , s. clone ( ) , id. clone ( ) )
328
- }
329
- None => { "" }
330
- } ;
323
+
324
+ let sec = opaque. toc_builder . as_mut ( ) . map_or ( "" . to_owned ( ) , |builder| {
325
+ format ! ( "{} " , builder. push( level as u32 , s. clone( ) , id. clone( ) ) )
326
+ } ) ;
331
327
332
328
// Render the HTML
333
329
let text = format ! ( r##"<h{lvl} id="{id}" class='section-header'><a
334
330
href="#{id}">{sec}{}</a></h{lvl}>"## ,
335
- s, lvl = level, id = id,
336
- sec = if sec. is_empty( ) {
337
- sec. to_string( )
338
- } else {
339
- format!( "{} " , sec)
340
- } ) ;
331
+ s, lvl = level, id = id, sec = sec) ;
341
332
342
333
let text = CString :: new ( text) . unwrap ( ) ;
343
334
unsafe { hoedown_buffer_puts ( ob, text. as_ptr ( ) ) }
@@ -351,7 +342,7 @@ pub fn render(w: &mut fmt::Formatter, s: &str, print_toc: bool) -> fmt::Result {
351
342
_: * const hoedown_renderer_data ,
352
343
) -> libc:: c_int {
353
344
let content = if text. is_null ( ) {
354
- "" . to_string ( )
345
+ "" . to_owned ( )
355
346
} else {
356
347
let bytes = unsafe { ( * text) . as_bytes ( ) } ;
357
348
let s = str:: from_utf8 ( bytes) . unwrap ( ) ;
@@ -385,10 +376,9 @@ pub fn render(w: &mut fmt::Formatter, s: &str, print_toc: bool) -> fmt::Result {
385
376
386
377
hoedown_html_renderer_free ( renderer) ;
387
378
388
- let mut ret = match opaque. toc_builder {
389
- Some ( b) => write ! ( w, "<nav id=\" TOC\" >{}</nav>" , b. into_toc( ) ) ,
390
- None => Ok ( ( ) )
391
- } ;
379
+ let mut ret = opaque. toc_builder . map_or ( Ok ( ( ) ) , |builder| {
380
+ write ! ( w, "<nav id=\" TOC\" >{}</nav>" , builder. into_toc( ) )
381
+ } ) ;
392
382
393
383
if ret. is_ok ( ) {
394
384
let buf = ( * ob) . as_bytes ( ) ;
@@ -422,7 +412,7 @@ pub fn find_testable_code(doc: &str, tests: &mut ::test::Collector) {
422
412
stripped_filtered_line ( l) . unwrap_or ( l)
423
413
} ) ;
424
414
let text = lines. collect :: < Vec < & str > > ( ) . join ( "\n " ) ;
425
- tests. add_test ( text. to_string ( ) ,
415
+ tests. add_test ( text. to_owned ( ) ,
426
416
block_info. should_panic , block_info. no_run ,
427
417
block_info. ignore , block_info. test_harness ) ;
428
418
}
@@ -578,10 +568,7 @@ pub fn plain_summary_line(md: &str) -> String {
578
568
md. len ( ) as libc:: size_t ) ;
579
569
hoedown_document_free ( document) ;
580
570
let plain_slice = ( * ob) . as_bytes ( ) ;
581
- let plain = match str:: from_utf8 ( plain_slice) {
582
- Ok ( s) => s. to_string ( ) ,
583
- Err ( _) => "" . to_string ( ) ,
584
- } ;
571
+ let plain = str:: from_utf8 ( plain_slice) . unwrap_or ( "" ) . to_owned ( ) ;
585
572
hoedown_buffer_free ( ob) ;
586
573
plain
587
574
}
0 commit comments