shex_ast/shexr/
shexr_error.rs1use 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}