shex_ast/shexr/
shexr_error.rs

1use iri_s::IriS;
2use srdf::RDFParseError;
3use std::fmt::Display;
4use thiserror::Error;
5
6use crate::Node;
7
8#[derive(Debug, Error)]
9pub enum ShExRError {
10    #[error("RDF parse error: {err}")]
11    RDFParseError {
12        #[from]
13        err: RDFParseError,
14    },
15
16    #[error("No nodes with `rdf:type sx:Schema`")]
17    NoSchemaNodes,
18
19    #[error("More than one nodes with `rdf:type sx:Schema`")]
20    MoreThanOneSchema { nodes: Nodes },
21
22    #[error("Shape Label can not be a literal {term}")]
23    ShapeExprLabelLiteral { term: String },
24
25    #[error("Unexpected value for nodeKind: {iri}")]
26    UnexpectedNodeKind { iri: IriS },
27}
28
29#[derive(Debug)]
30
31pub struct Nodes {
32    values: Vec<Node>,
33}
34
35impl Nodes {
36    pub fn new(ns: Vec<Node>) -> Nodes {
37        Nodes { values: ns }
38    }
39}
40
41impl Display for Nodes {
42    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
43        for n in self.values.iter() {
44            write!(f, "{n} ")?;
45        }
46        writeln!(f)?;
47        Ok(())
48    }
49}