webots-proto 0.1.1

Facade crate for parsing, templating, resolving, and validating Webots PROTO.
Documentation

webots-proto

Facade crate for working with Webots PROTO files.

Use this crate when you want one dependency that exposes:

  • parsing via Proto
  • template rendering via ProtoExt::render()
  • validation via ProtoExt::validate()
  • EXTERNPROTO expansion via ProtoResolver
  • typed R2025a nodes via r2025a

Features

  • template
  • resolver
  • schema
  • validation
  • r2025a

Default features enable the full façade.

Example

use webots_proto::{Proto, ProtoExt, RenderOptions};

let proto: Proto = r#"#VRML_SIM R2025a utf8
PROTO Demo [] { Group {} }
"#
.parse()?;

let rendered = proto.render(&RenderOptions::default())?;
let diagnostics = proto.validate()?;
assert!(!diagnostics.has_errors());
# Ok::<(), Box<dyn std::error::Error>>(())

Use the companion crates directly if you only want one layer of functionality.