@@ -46,33 +46,63 @@ def update_component():
4646
4747def _example_name_input () -> str :
4848 if len (sys .argv ) == 1 :
49- print ("No example argument given. Provide an example's number or name:" )
50- _print_available_options ()
49+ _print_error (
50+ "No example argument given. Provide an example's number from above."
51+ )
5152 sys .exit (1 )
5253
53- ex_name = sys .argv [1 ]
54-
55- if ex_name in EXAMPLE_NAME_SET :
56- return ex_name
54+ ex_num = sys .argv [1 ]
5755
5856 try :
59- ex_num = int (ex_name )
57+ ex_num = int (ex_num )
6058 except ValueError :
61- print (f"No example { ex_name !r} exists. Provide an example's number or name:" )
62- _print_available_options ()
59+ _print_error (
60+ f"No example { ex_num !r} exists. Provide an example's number as an integer."
61+ )
6362 sys .exit (1 )
6463
6564 ex_index = ex_num - 1
6665 try :
6766 return EXAMPLE_NAME_LIST [ex_index ]
6867 except IndexError :
69- print (f"No example #{ ex_num } exists." )
68+ _print_error (f"No example #{ ex_num } exists. Choose from an option above ." )
7069 sys .exit (1 )
7170
7271
72+ def _print_error (* args ) -> None :
73+ _print_available_options ()
74+ print (* args )
75+
76+
7377def _print_available_options ():
78+ examples_by_path = {}
7479 for i , name in enumerate (EXAMPLE_NAME_LIST ):
75- print (f"{ i + 1 } ." , name )
80+ if "/" not in name :
81+ path = ""
82+ else :
83+ path , name = name .rsplit ("/" , 1 )
84+ examples_by_path .setdefault (path , []).append (name )
85+
86+ number = 1
87+ print ()
88+ for path , names in examples_by_path .items ():
89+ title = " " .join (
90+ map (
91+ str .title ,
92+ path .replace ("/_examples" , "" )
93+ .replace ("/" , " > " )
94+ .replace ("-" , " " )
95+ .replace ("_" , " " )
96+ .upper ()
97+ .split (),
98+ )
99+ )
100+ print (title )
101+ print ("-" * len (title ))
102+ for name in names :
103+ print (f"{ number } . " , name )
104+ number += 1
105+ print ()
76106
77107
78108if __name__ == "__main__" :
0 commit comments