use crate::types::{CaptureEvent, Pos, TreeEvent};
#[cfg(not(feature = "std"))]
use alloc::vec::Vec;
#[cfg(feature = "std")]
use std::sync::Arc;
#[derive(Debug)]
pub struct ParseOutput {
pub consumed: Pos,
pub events: Vec<CaptureEvent>,
pub tree_events: Vec<TreeEvent>,
}
impl ParseOutput {
#[cfg(feature = "std")]
#[must_use]
pub fn build_green_tree(&self, input: &[u8]) -> Option<Arc<crate::tree::green::GreenNode>> {
crate::tree::green::build_green_tree(input, &self.tree_events)
}
#[cfg(feature = "std")]
#[must_use]
pub fn syntax_root(&self, input: &[u8]) -> Option<crate::tree::red::SyntaxNode> {
self.build_green_tree(input)
.map(crate::tree::red::SyntaxNode::new_root)
}
}