swc_xml_parser/parser/
open_elements_stack.rs

1use crate::parser::RcNode;
2
3pub struct OpenElementsStack {
4    pub items: Vec<RcNode>,
5}
6
7impl OpenElementsStack {
8    pub fn new() -> Self {
9        OpenElementsStack {
10            items: Vec::with_capacity(16),
11        }
12    }
13
14    pub fn pop_until_tag_name_popped(&mut self, tag_name: &[&str]) -> Option<RcNode> {
15        while let Some(node) = self.items.pop() {
16            if tag_name.contains(&get_tag_name!(node)) {
17                return Some(node);
18            }
19        }
20
21        None
22    }
23}