use shakmaty::{san::SanPlus, Outcome};
use crate::types::{Nag, RawComment, RawHeader, Skip};
pub trait Visitor {
type Result;
fn begin_game(&mut self) {}
fn begin_headers(&mut self) {}
fn header(&mut self, _key: &[u8], _value: RawHeader<'_>) {}
fn end_headers(&mut self) -> Skip {
Skip(false)
}
fn san(&mut self, _san_plus: SanPlus) {}
fn nag(&mut self, _nag: Nag) {}
fn comment(&mut self, _comment: RawComment<'_>) {}
fn begin_variation(&mut self) -> Skip {
Skip(false)
}
fn end_variation(&mut self) {}
fn outcome(&mut self, _outcome: Option<Outcome>) {}
fn end_game(&mut self) -> Self::Result;
}
pub(crate) struct SkipVisitor;
impl Visitor for SkipVisitor {
type Result = ();
fn end_headers(&mut self) -> Skip {
Skip(true)
}
fn begin_variation(&mut self) -> Skip {
Skip(true)
}
fn end_game(&mut self) {}
}