From d3eac2952b4c1aa1dfccf0b28615be6fa39d412f Mon Sep 17 00:00:00 2001 From: Phodal Huang Date: Mon, 24 Aug 2020 21:57:06 +0800 Subject: [PATCH] refactor: inline code --- scie-grammar/src/rule.rs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/scie-grammar/src/rule.rs b/scie-grammar/src/rule.rs index 77e2ea3..1a2263e 100644 --- a/scie-grammar/src/rule.rs +++ b/scie-grammar/src/rule.rs @@ -71,16 +71,22 @@ impl RuleFactory { for pattern in patterns { let mut pattern_id = -1; if let Some(include_s) = pattern.clone().include { + let map = repository.clone().map.name_map.clone(); + if include_s.starts_with("#") { - let map = repository.clone().map.name_map.clone(); let first = remove_first(include_s.as_str()); let local_included_rule = map.get(first); if let Some(rule) = local_included_rule { - let copy_rule = *rule.clone(); - pattern_id = RuleFactory::get_compiled_rule_id(copy_rule, *helper, repository.clone()); + pattern_id = RuleFactory::get_compiled_rule_id(*rule.clone(), &mut (*helper).clone(), repository.clone()); } else { println!("CANNOT find rule for scopeName: {:?}", pattern.clone().include); } + } else if include_s == "$base" || include_s == "$self" { + let option = pattern.include.unwrap(); + let local_included_rule = map.get(option.as_str()); + if let Some(rule) = local_included_rule { + pattern_id = RuleFactory::get_compiled_rule_id(*(rule).clone(), &mut (*helper).clone(), repository.clone()); + } } } } -- GitLab