@@ -88,6 +88,7 @@ pub struct Help<'a> {
88
88
impl < ' a > Help < ' a > {
89
89
/// Create a new `Help` instance.
90
90
pub fn new ( w : & ' a mut Write , next_line_help : bool , hide_pv : bool , color : bool ) -> Self {
91
+ debugln ! ( "fn=Help::new;" ) ;
91
92
Help {
92
93
writer : w,
93
94
next_line_help : next_line_help,
@@ -100,12 +101,14 @@ impl<'a> Help<'a> {
100
101
/// Reads help settings from an App
101
102
/// and write its help to the wrapped stream.
102
103
pub fn write_app_help ( w : & ' a mut Write , app : & App ) -> ClapResult < ( ) > {
104
+ debugln ! ( "fn=Help::write_app_help;" ) ;
103
105
Self :: write_parser_help ( w, & app. p )
104
106
}
105
107
106
108
/// Reads help settings from a Parser
107
109
/// and write its help to the wrapped stream.
108
110
pub fn write_parser_help ( w : & ' a mut Write , parser : & Parser ) -> ClapResult < ( ) > {
111
+ debugln ! ( "fn=Help::write_parser_help;" ) ;
109
112
let nlh = parser. is_set ( AppSettings :: NextLineHelp ) ;
110
113
let hide_v = parser. is_set ( AppSettings :: HidePossibleValuesInHelp ) ;
111
114
let color = parser. is_set ( AppSettings :: ColoredHelp ) ;
@@ -114,6 +117,7 @@ impl<'a> Help<'a> {
114
117
115
118
/// Writes the parser help to the wrapped stream.
116
119
pub fn write_help ( & mut self , parser : & Parser ) -> ClapResult < ( ) > {
120
+ debugln ! ( "fn=Help::write_help;" ) ;
117
121
if let Some ( h) = parser. meta . help_str {
118
122
try!( write ! ( self . writer, "{}" , h) . map_err ( Error :: from) ) ;
119
123
} else if let Some ( ref tmpl) = parser. meta . template {
@@ -131,6 +135,7 @@ impl<'a> Help<'a> {
131
135
fn write_args_unsorted < ' b : ' d , ' c : ' d , ' d , I : ' d > ( & mut self , args : I ) -> io:: Result < ( ) >
132
136
where I : Iterator < Item = & ' d ArgWithOrder < ' b , ' c > >
133
137
{
138
+ debugln ! ( "fn=write_args_unsorted;" ) ;
134
139
let mut longest = 0 ;
135
140
let mut arg_v = Vec :: with_capacity ( 10 ) ;
136
141
for arg in args. filter ( |arg| {
@@ -159,6 +164,7 @@ impl<'a> Help<'a> {
159
164
fn write_args < ' b : ' d , ' c : ' d , ' d , I : ' d > ( & mut self , args : I ) -> io:: Result < ( ) >
160
165
where I : Iterator < Item = & ' d ArgWithOrder < ' b , ' c > >
161
166
{
167
+ debugln ! ( "fn=write_args;" ) ;
162
168
let mut longest = 0 ;
163
169
let mut ord_m = VecMap :: new ( ) ;
164
170
for arg in args. filter ( |arg| {
@@ -179,7 +185,7 @@ impl<'a> Help<'a> {
179
185
try!( self . writer . write ( b"\n " ) ) ;
180
186
} else {
181
187
first = false ;
182
- } ;
188
+ }
183
189
try!( self . write_arg ( arg. as_base ( ) , longest) ) ;
184
190
}
185
191
}
@@ -191,7 +197,7 @@ impl<'a> Help<'a> {
191
197
arg : & ArgWithDisplay < ' b , ' c > ,
192
198
longest : usize )
193
199
-> io:: Result < ( ) > {
194
- debugln ! ( "fn=write_to ;" ) ;
200
+ debugln ! ( "fn=write_arg ;" ) ;
195
201
try!( self . short ( arg) ) ;
196
202
try!( self . long ( arg, longest) ) ;
197
203
try!( self . val ( arg, longest) ) ;
@@ -505,6 +511,7 @@ impl<'a> Help<'a> {
505
511
506
512
/// Writes help for subcommands of a Parser Object to the wrapped stream.
507
513
fn write_subcommands ( & mut self , parser : & Parser ) -> io:: Result < ( ) > {
514
+ debugln ! ( "exec=write_subcommands;" ) ;
508
515
let mut longest = 0 ;
509
516
510
517
let mut ord_m = VecMap :: new ( ) ;
@@ -518,10 +525,12 @@ impl<'a> Help<'a> {
518
525
for ( _, btm) in ord_m. into_iter ( ) {
519
526
for ( _, sc) in btm. into_iter ( ) {
520
527
if !first {
528
+ debugln ! ( "Writing newline..." ) ;
521
529
try!( self . writer . write ( b"\n " ) ) ;
522
530
} else {
523
531
first = false ;
524
532
}
533
+ debugln ! ( "Writing sc...{}" , sc) ;
525
534
try!( self . write_arg ( sc, longest) ) ;
526
535
}
527
536
}
@@ -551,6 +560,7 @@ impl<'a> Help<'a> {
551
560
552
561
/// Writes default help for a Parser Object to the wrapped stream.
553
562
pub fn write_default_help ( & mut self , parser : & Parser ) -> ClapResult < ( ) > {
563
+ debugln ! ( "fn=write_default_help;" ) ;
554
564
if let Some ( h) = parser. meta . pre_help {
555
565
try!( write ! ( self . writer, "{}" , h) ) ;
556
566
try!( self . writer . write ( b"\n \n " ) ) ;
@@ -720,6 +730,7 @@ impl<'a> Help<'a> {
720
730
/// The template system is, on purpose, very simple. Therefore the tags have to writen
721
731
/// in the lowercase and without spacing.
722
732
fn write_templated_help ( & mut self , parser : & Parser , template : & str ) -> ClapResult < ( ) > {
733
+ debugln ! ( "fn=write_templated_help;" ) ;
723
734
let mut tmplr = Cursor :: new ( & template) ;
724
735
let mut tag_buf = Cursor :: new ( vec ! [ 0u8 ; 15 ] ) ;
725
736
@@ -737,6 +748,12 @@ impl<'a> Help<'a> {
737
748
_ => continue ,
738
749
} ;
739
750
751
+ debugln ! ( "iter;tag_buf={};" , unsafe {
752
+ String :: from_utf8_unchecked( tag_buf. get_ref( ) [ 0 ..tag_length]
753
+ . iter( )
754
+ . map( |& i|i)
755
+ . collect:: <Vec <_>>( ) )
756
+ } ) ;
740
757
match & tag_buf. get_ref ( ) [ 0 ..tag_length] {
741
758
b"?" => {
742
759
try!( self . writer . write ( b"Could not decode tag name" ) ) ;
@@ -780,8 +797,8 @@ impl<'a> Help<'a> {
780
797
. map ( as_arg_trait) ) ) ;
781
798
}
782
799
b"positionals" => {
783
- try!( self . write_args ( parser. iter_positionals ( )
784
- . map ( as_arg_trait) ) ) ;
800
+ try!( self . write_args_unsorted ( parser. iter_positionals ( )
801
+ . map ( as_arg_trait) ) ) ;
785
802
}
786
803
b"subcommands" => {
787
804
try!( self . write_subcommands ( & parser) ) ;
@@ -803,7 +820,6 @@ impl<'a> Help<'a> {
803
820
try!( self . writer . write ( b"}" ) ) ;
804
821
}
805
822
}
806
-
807
823
}
808
824
}
809
825
}
0 commit comments