webots_proto_schema/
lib.rs1pub mod error;
2#[macro_use]
3pub mod macros;
4pub mod types;
5mod versions;
6
7mod proto {
8 pub mod ast {
9 pub use webots_proto_ast::proto::ast::*;
10 }
11
12 pub mod span {
13 pub use webots_proto_ast::proto::span::*;
14 }
15
16 pub type ProtoResult<T> = Result<T, ProtoError>;
17
18 #[derive(Debug, Clone, PartialEq, Eq)]
19 pub enum ProtoError {
20 ParseError(String),
21 SerializationError(String),
22 }
23
24 pub mod builtin_nodes;
25 pub(crate) mod conversion;
26 pub mod schema;
27 pub mod validation;
28}
29
30pub use error::{Error, Result};
31pub use proto::validation::{
32 Diagnostic, DiagnosticSet, NodeSchema, SchemaField, Severity, ValidationContext,
33};
34pub use versions::r2025a;
35
36pub fn validate(proto: &proto::ast::Proto) -> DiagnosticSet {
37 proto::validation::validate_document(proto)
38}
39
40pub fn validate_runtime_semantics(node: &proto::ast::AstNode) -> DiagnosticSet {
41 proto::validation::validate_runtime_semantics(node)
42}
43
44pub fn ast_to_r2025a_node(node: &proto::ast::AstNode) -> proto::ProtoResult<r2025a::Node> {
45 proto::conversion::ast_to_r2025a_node(node)
46}
47
48pub fn r2025a_node_to_ast(node: &r2025a::Node) -> proto::ProtoResult<proto::ast::AstNode> {
49 proto::conversion::r2025a_node_to_ast(node)
50}