use crate::item::Item;
use crate::item_kind::ItemKind;
use crate::statement::Statement;
use ocelot_base::span::Span;
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct Script {
pub items: Vec<Item>,
pub span: Span,
}
impl Script {
pub fn new(items: Vec<Item>, span: Span) -> Self {
Self { items, span }
}
pub fn statements(&self) -> impl Iterator<Item = &Statement> {
self.items.iter().filter_map(|item| match &item.kind {
ItemKind::Statement(statement) => Some(statement),
ItemKind::Test(_) => None,
})
}
}
impl Default for Script {
fn default() -> Self {
Self::new(Vec::new(), Span::default())
}
}