@@ -5,6 +5,7 @@ extern crate serde_json;
55
66mod problem;
77
8+ use regex:: Regex ;
89use std:: env;
910use std:: fs;
1011use std:: io;
@@ -74,7 +75,10 @@ fn main() {
7475 let source = template
7576 . replace ( "__PROBLEM_TITLE__" , & problem. title )
7677 . replace ( "__PROBLEM_DESC__" , & build_desc ( & problem. content ) )
77- . replace ( "__PROBLEM_DEFAULT_CODE__" , & code. default_code )
78+ . replace (
79+ "__PROBLEM_DEFAULT_CODE__" ,
80+ & insert_return_in_code ( & problem. return_type , & code. default_code ) ,
81+ )
7882 . replace ( "__PROBLEM_ID__" , & format ! ( "{}" , problem. question_id) )
7983 . replace ( "__EXTRA_USE__" , & parse_extra_use ( & code. default_code ) ) ;
8084
@@ -147,6 +151,48 @@ fn parse_extra_use(code: &str) -> String {
147151 extra_use_line
148152}
149153
154+ fn insert_return_in_code ( return_type : & str , code : & str ) -> String {
155+ let re = Regex :: new ( r"\{[ \n]+}" ) . unwrap ( ) ;
156+ match return_type {
157+ "ListNode" => re
158+ . replace ( & code, "{\n Some(Box::new(ListNode::new(0)))\n }" )
159+ . to_string ( ) ,
160+ "ListNode[]" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
161+ "TreeNode" => re
162+ . replace (
163+ & code,
164+ "{\n Some(Rc::new(RefCell::new(TreeNode::new(0))))\n }" ,
165+ )
166+ . to_string ( ) ,
167+ "boolean" => re. replace ( & code, "{\n false\n }" ) . to_string ( ) ,
168+ "character" => re. replace ( & code, "{\n '0'\n }" ) . to_string ( ) ,
169+ "character[][]" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
170+ "double" => re. replace ( & code, "{\n 0f64\n }" ) . to_string ( ) ,
171+ "double[]" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
172+ "int[]" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
173+ "integer" => re. replace ( & code, "{\n 0\n }" ) . to_string ( ) ,
174+ "integer[]" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
175+ "integer[][]" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
176+ "list<String>" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
177+ "list<TreeNode>" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
178+ "list<boolean>" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
179+ "list<double>" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
180+ "list<integer>" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
181+ "list<list<integer>>" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
182+ "list<list<string>>" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
183+ "list<string>" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
184+ "null" => code. to_string ( ) ,
185+ "string" => re
186+ . replace ( & code, "{\n String::new()\n }" )
187+ . to_string ( ) ,
188+ "string[]" => re. replace ( & code, "{\n vec![]\n }" ) . to_string ( ) ,
189+ "void" => code. to_string ( ) ,
190+ "NestedInteger" => code. to_string ( ) ,
191+ "Node" => code. to_string ( ) ,
192+ _ => code. to_string ( ) ,
193+ }
194+ }
195+
150196fn build_desc ( content : & str ) -> String {
151197 // TODO: fix this shit
152198 content
0 commit comments