Skip to content

Commit 88eaa79

Browse files
committed
Clean up resolve_name() function
Make it as method instead of global function
1 parent bc47fde commit 88eaa79

File tree

1 file changed

+13
-15
lines changed

1 file changed

+13
-15
lines changed

crates/cmd_lib_core/src/parser.rs

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,11 @@ impl Parser {
3939
self
4040
}
4141

42-
fn resolve_name(src: &str, sym_table: &HashMap<&'static str, String>, file: &str, line: u32) -> String {
42+
fn resolve_name(&self, src: String) -> String {
43+
if self.sym_table.is_none() {
44+
return src;
45+
}
46+
4347
let mut output = String::new();
4448
let input: Vec<char> = src.chars().collect();
4549
let len = input.len();
@@ -62,13 +66,13 @@ impl Parser {
6266
}
6367
if with_bracket {
6468
if input[i] != '}' {
65-
panic!("invalid name {}, {}:{}\n{}", var, file, line, src);
69+
panic!("invalid name {}, {}:{}\n{}", var, self.file, self.line, src);
6670
}
6771
} else {
6872
i -= 1; // back off 1 char
6973
}
70-
match sym_table.get(var.as_str()) {
71-
None => panic!("resolve {} failed, {}:{}\n{}", var, file, line, src),
74+
match self.sym_table.as_ref().unwrap().get(var.as_str()) {
75+
None => panic!("resolve {} failed, {}:{}\n{}", var, self.file, self.line, src),
7276
Some(v) => output += v,
7377
};
7478
} else {
@@ -186,11 +190,8 @@ impl Parser {
186190
ret.set_redirect(0, self.parse_redirect(s, i));
187191
}
188192

189-
let mut arg1 = self.parse_normal_arg(s, i);
190-
if let Some(sym_table) = self.sym_table.as_ref() {
191-
arg1 = Parser::resolve_name(&arg1, sym_table, &self.file, self.line);
192-
}
193-
arg += &arg1;
193+
let arg1 = self.parse_normal_arg(s, i);
194+
arg += &self.resolve_name(arg1);
194195
}
195196
if !arg.is_empty() {
196197
ret.add_arg(arg);
@@ -270,11 +271,8 @@ impl Parser {
270271
}
271272
}
272273

273-
let mut file = self.parse_normal_arg(s, i);
274-
if let Some(sym_table) = self.sym_table.as_ref() {
275-
file = Parser::resolve_name(&file, sym_table, &self.file, self.line);
276-
}
277-
FdOrFile::File(file, append)
274+
let file = self.parse_normal_arg(s, i);
275+
FdOrFile::File(self.resolve_name(file), append)
278276
}
279277

280278
fn parse_str_lit(&mut self, s: &Vec<char>, i: &mut usize) -> String {
@@ -331,7 +329,7 @@ impl Parser {
331329
if is_raw {
332330
return str_lit; // don't resolve names for raw string literals
333331
} else {
334-
return Parser::resolve_name(&str_lit, self.sym_table.as_ref().unwrap(), &self.file, self.line);
332+
return self.resolve_name(str_lit);
335333
}
336334
}
337335
}

0 commit comments

Comments
 (0)