mirror of
https://github.com/martinvonz/jj.git
synced 2025-01-31 00:12:06 +00:00
templater: extract little helper that parses text and expands aliases
The caller doesn't have to care about alias expansion.
This commit is contained in:
parent
b380ca0cf7
commit
91d309a93c
3 changed files with 14 additions and 6 deletions
|
@ -458,8 +458,7 @@ pub fn parse<'repo>(
|
||||||
aliases_map: &TemplateAliasesMap,
|
aliases_map: &TemplateAliasesMap,
|
||||||
) -> TemplateParseResult<Box<dyn Template<Commit> + 'repo>> {
|
) -> TemplateParseResult<Box<dyn Template<Commit> + 'repo>> {
|
||||||
let language = CommitTemplateLanguage { repo, workspace_id };
|
let language = CommitTemplateLanguage { repo, workspace_id };
|
||||||
let node = template_parser::parse_template(template_text)?;
|
let node = template_parser::parse(template_text, aliases_map)?;
|
||||||
let node = template_parser::expand_aliases(node, aliases_map)?;
|
|
||||||
let expression = template_parser::build_expression(&language, &node)?;
|
let expression = template_parser::build_expression(&language, &node)?;
|
||||||
Ok(expression.into_template())
|
Ok(expression.into_template())
|
||||||
}
|
}
|
||||||
|
|
|
@ -187,8 +187,7 @@ pub fn parse(
|
||||||
) -> TemplateParseResult<Box<dyn Template<Operation>>> {
|
) -> TemplateParseResult<Box<dyn Template<Operation>>> {
|
||||||
let head_op_id = repo.op_id();
|
let head_op_id = repo.op_id();
|
||||||
let language = OperationTemplateLanguage { head_op_id };
|
let language = OperationTemplateLanguage { head_op_id };
|
||||||
let node = template_parser::parse_template(template_text)?;
|
let node = template_parser::parse(template_text, aliases_map)?;
|
||||||
let node = template_parser::expand_aliases(node, aliases_map)?;
|
|
||||||
let expression = template_parser::build_expression(&language, &node)?;
|
let expression = template_parser::build_expression(&language, &node)?;
|
||||||
Ok(expression.into_template())
|
Ok(expression.into_template())
|
||||||
}
|
}
|
||||||
|
|
|
@ -587,6 +587,17 @@ pub fn expand_aliases<'i>(
|
||||||
expand_node(node, state)
|
expand_node(node, state)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Parses text into AST nodes, and expands aliases.
|
||||||
|
///
|
||||||
|
/// No type/name checking is made at this stage.
|
||||||
|
pub fn parse<'i>(
|
||||||
|
template_text: &'i str,
|
||||||
|
aliases_map: &'i TemplateAliasesMap,
|
||||||
|
) -> TemplateParseResult<ExpressionNode<'i>> {
|
||||||
|
let node = parse_template(template_text)?;
|
||||||
|
expand_aliases(node, aliases_map)
|
||||||
|
}
|
||||||
|
|
||||||
/// Callbacks to build language-specific evaluation objects from AST nodes.
|
/// Callbacks to build language-specific evaluation objects from AST nodes.
|
||||||
pub trait TemplateLanguage<'a> {
|
pub trait TemplateLanguage<'a> {
|
||||||
type Context: 'a;
|
type Context: 'a;
|
||||||
|
@ -1195,8 +1206,7 @@ mod tests {
|
||||||
|
|
||||||
impl WithTemplateAliasesMap {
|
impl WithTemplateAliasesMap {
|
||||||
fn parse<'i>(&'i self, template_text: &'i str) -> TemplateParseResult<ExpressionNode<'i>> {
|
fn parse<'i>(&'i self, template_text: &'i str) -> TemplateParseResult<ExpressionNode<'i>> {
|
||||||
let node = parse_template(template_text)?;
|
parse(template_text, &self.0)
|
||||||
expand_aliases(node, &self.0)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn parse_normalized<'i>(
|
fn parse_normalized<'i>(
|
||||||
|
|
Loading…
Reference in a new issue