Skip to main content

oxilean_parse/pattern/
patterncompiler_flatten_or_pattern_group.rs

1//! # PatternCompiler - flatten_or_pattern_group Methods
2//!
3//! This module contains method implementations for `PatternCompiler`.
4//!
5//! 🤖 Generated with [SplitRS](https://github.com/cool-japan/splitrs)
6
7use crate::Pattern;
8
9use super::patterncompiler_type::PatternCompiler;
10
11impl PatternCompiler {
12    /// Flatten a nested or-pattern into a flat list of alternatives.
13    pub fn flatten_or_pattern(&self, pattern: &Pattern) -> Vec<Pattern> {
14        match pattern {
15            Pattern::Or(left, right) => {
16                let mut result = self.flatten_or_pattern(&left.value);
17                result.extend(self.flatten_or_pattern(&right.value));
18                result
19            }
20            other => vec![other.clone()],
21        }
22    }
23}