@@ -34,7 +34,7 @@ pub fn write_to_file(
3434
3535pub fn parse_programming_language (
3636 lang : & str ,
37- ) -> Result < leetcoderustapi:: ProgrammingLanguage , String > {
37+ ) -> Result < leetcoderustapi:: ProgrammingLanguage , std :: io :: Error > {
3838 match lang. to_ascii_lowercase ( ) . as_str ( ) {
3939 "cpp" | "c++" => Ok ( leetcoderustapi:: ProgrammingLanguage :: CPP ) ,
4040 "java" => Ok ( leetcoderustapi:: ProgrammingLanguage :: Java ) ,
@@ -62,7 +62,10 @@ pub fn parse_programming_language(
6262 "dart" => Ok ( leetcoderustapi:: ProgrammingLanguage :: Dart ) ,
6363 "pandas" => Ok ( leetcoderustapi:: ProgrammingLanguage :: Pandas ) ,
6464 "react" => Ok ( leetcoderustapi:: ProgrammingLanguage :: React ) ,
65- _ => Err ( format ! ( "Unsupported language: {}" , lang) ) ,
65+ _ => Err ( io:: Error :: new (
66+ io:: ErrorKind :: InvalidInput ,
67+ format ! ( "Unsupported language: {}" , lang) ,
68+ ) ) ,
6669 }
6770}
6871
@@ -159,3 +162,27 @@ pub fn extension_programming_language(
159162pub fn spin_the_spinner ( message : & str ) -> spinners:: Spinner {
160163 spinners:: Spinner :: new ( spinners:: Spinners :: Dots12 , message. to_string ( ) )
161164}
165+
166+ pub fn prompt_for_language (
167+ id : & u32 , problem_name : & str , available_languages : & [ String ] ,
168+ ) -> Result < String , io:: Error > {
169+ println ! (
170+ "\n Please enter a valid Leetcode programming language.\n Here is a \
171+ list of available languages for the problem {} - {}\n {}",
172+ id,
173+ problem_name,
174+ available_languages
175+ . iter( )
176+ . map( |l| l. to_string( ) )
177+ . collect:: <Vec <_>>( )
178+ . join( ", " )
179+ ) ;
180+ let mut input = String :: new ( ) ;
181+ io:: stdin ( ) . read_line ( & mut input) ?;
182+ let trimmed = input. trim ( ) . to_string ( ) ;
183+ if trimmed. is_empty ( ) {
184+ Err ( io:: Error :: new ( io:: ErrorKind :: InvalidInput , "No language entered" ) )
185+ } else {
186+ Ok ( trimmed)
187+ }
188+ }
0 commit comments