interpreter: return Result<Spec, Token> in read_spec

Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
This commit is contained in:
Maxime “pep” Buquet 2023-04-24 12:28:21 +02:00
parent 934376e974
commit 9f5f45aafe

View file

@ -14,7 +14,7 @@
// along with this program. If not, see <https://www.gnu.org/licenses/>. // along with this program. If not, see <https://www.gnu.org/licenses/>.
use crate::element::ScanElement; use crate::element::ScanElement;
use crate::parsers::parse_spec; use crate::parsers::{parse_spec, Token};
use crate::types::{Action, Context, Entity, Spec}; use crate::types::{Action, Context, Entity, Spec};
use jid::Jid; use jid::Jid;
use minidom::{Element, Error as MinidomError}; use minidom::{Element, Error as MinidomError};
@ -99,10 +99,10 @@ pub fn read_actions<'a>(spec: Spec, context: &'a Context) -> Result<InOutStanza<
Ok(inout) Ok(inout)
} }
pub fn read_spec<'a>(buf: &str) -> Spec { pub fn read_spec<'a, 'b>(buf: &str) -> Result<Spec, Token> {
let mut spec = parse_spec(buf).unwrap(); let mut spec = parse_spec(buf)?;
spec.context = bind_context(spec.context.clone()); spec.context = bind_context(spec.context.clone());
spec Ok(spec)
} }
#[cfg(test)] #[cfg(test)]