@@ -13,6 +13,7 @@ use flate2::{
1313} ;
1414use oxford_join:: JoinFmt ;
1515use std:: {
16+ borrow:: Cow ,
1617 fs:: File ,
1718 io:: Write ,
1819 path:: Path ,
@@ -120,6 +121,26 @@ impl<'a> Command<'a> {
120121 /// # Description.
121122 const fn description ( & self ) -> & ' a str { self . description }
122123
124+ /// # Full Bin.
125+ ///
126+ /// Return either "bin" or "parent bin", depending on context.
127+ fn full_bin ( & self ) -> Cow < ' a , str > {
128+ self . parent . map_or_else (
129+ || Cow :: Borrowed ( self . bin ( ) ) ,
130+ |p| Cow :: Owned ( format ! ( "{p} {}" , self . bin( ) ) ) ,
131+ )
132+ }
133+
134+ /// # Full Name.
135+ ///
136+ /// Return either "name" or "parent name", depending on context.
137+ fn full_name ( & self ) -> Cow < ' a , str > {
138+ self . parent . map_or_else (
139+ || Cow :: Borrowed ( self . name ( ) ) ,
140+ |p| Cow :: Owned ( format ! ( "{p} {}" , self . name( ) ) ) ,
141+ )
142+ }
143+
123144 #[ must_use]
124145 /// # Name.
125146 const fn name ( & self ) -> & ' a str { self . name }
@@ -408,27 +429,16 @@ impl<'a> Command<'a> {
408429 let now = utc2k:: Utc2k :: now ( ) ;
409430
410431 // Start with the header.
411- match self . parent {
412- Some ( p) => write ! (
413- buf,
414- r#".TH "{} {}" "1" "{} {}" "{} v{}" "User Commands""# ,
415- p. to_uppercase( ) ,
416- self . name( ) . to_uppercase( ) ,
417- now. month_name( ) ,
418- now. year( ) ,
419- self . name( ) ,
420- self . version( ) ,
421- ) ,
422- None => write ! (
423- buf,
424- r#".TH "{}" "1" "{} {}" "{} v{}" "User Commands""# ,
425- self . name( ) . to_uppercase( ) ,
426- now. month_name( ) ,
427- now. year( ) ,
428- self . name( ) ,
429- self . version( ) ,
430- ) ,
431- }
432+ let full_name = self . full_name ( ) ;
433+ let full_bin = self . full_bin ( ) ;
434+ write ! (
435+ buf,
436+ r#".TH "{}" "1" "{} {}" "{full_bin} v{}" "User Commands""# ,
437+ full_name. to_uppercase( ) ,
438+ now. month_name( ) ,
439+ now. year( ) ,
440+ self . version( ) ,
441+ )
432442 . map_err ( |_| BashManError :: WriteSubMan ( Box :: from ( self . bin ) ) ) ?;
433443
434444 /// # Helper: Generic section writer.
@@ -446,10 +456,9 @@ impl<'a> Command<'a> {
446456 "NAME" ,
447457 false ,
448458 vec![ DataKind :: Paragraph ( vec![ & format!(
449- "{} - Manual page for {} v{}." ,
450- self . name( ) ,
451- self . bin,
452- self . version( )
459+ "{} - Manual page for {full_bin} v{}." ,
460+ self . name( ) . to_uppercase( ) ,
461+ self . version( ) ,
453462 ) ] ) ]
454463 ) ;
455464
0 commit comments