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

```rust
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.