@@ -5,6 +5,7 @@ extern crate serde_json;
5
5
6
6
mod problem;
7
7
8
+ use regex:: Regex ;
8
9
use std:: env;
9
10
use std:: fs;
10
11
use std:: io;
@@ -74,7 +75,10 @@ fn main() {
74
75
let source = template
75
76
. replace ( "__PROBLEM_TITLE__" , & problem. title )
76
77
. 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
+ )
78
82
. replace ( "__PROBLEM_ID__" , & format ! ( "{}" , problem. question_id) )
79
83
. replace ( "__EXTRA_USE__" , & parse_extra_use ( & code. default_code ) ) ;
80
84
@@ -147,6 +151,48 @@ fn parse_extra_use(code: &str) -> String {
147
151
extra_use_line
148
152
}
149
153
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
+
150
196
fn build_desc ( content : & str ) -> String {
151
197
// TODO: fix this shit
152
198
content
0 commit comments