Skip to main content

oxilean_parse/ast_impl/
renametransformext_traits.rs

1//! # RenameTransformExt - Trait Implementations
2//!
3//! This module contains trait implementations for `RenameTransformExt`.
4//!
5//! ## Implemented Traits
6//!
7//! - `TreeTransformExt`
8//!
9//! 🤖 Generated with [SplitRS](https://github.com/cool-japan/splitrs)
10
11#[allow(unused_imports)]
12use crate::ast::{SimpleNodeKindExt, TreeNodeExt};
13
14use super::functions::TreeTransformExt;
15use super::types::RenameTransformExt;
16
17impl TreeTransformExt for RenameTransformExt {
18    fn transform(&mut self, node: TreeNodeExt) -> TreeNodeExt {
19        if node.kind == SimpleNodeKindExt::Leaf && node.label == self.from {
20            self.count += 1;
21            return TreeNodeExt::leaf(&self.to.clone());
22        }
23        let new_children = node
24            .children
25            .into_iter()
26            .map(|c| self.transform(c))
27            .collect();
28        TreeNodeExt {
29            kind: node.kind,
30            label: node.label,
31            children: new_children,
32        }
33    }
34}