use xee_interpreter::sequence::Item;
use crate::{error::Result, DocumentHandle, Documents};
pub trait Itemable {
fn to_item(&self, documents: &Documents) -> Result<Item>;
}
impl Itemable for xot::Node {
fn to_item(&self, _documents: &Documents) -> Result<Item> {
Ok(Item::Node(*self))
}
}
impl Itemable for DocumentHandle {
fn to_item(&self, documents: &Documents) -> Result<Item> {
let documents_ref = documents.documents.borrow();
let document = documents_ref.get_by_handle(*self).unwrap();
Ok(Item::Node(document.root()))
}
}
impl Itemable for &Item {
fn to_item(&self, _documents: &Documents) -> Result<Item> {
Ok(Clone::clone(self))
}
}