# ipld-schema
[](https://crates.io/crates/ipld-schema)
[](https://docs.rs/ipld-schema)
[](https://github.com/mx00s/ipld-schema/actions)
[](https://coveralls.io/github/mx00s/ipld-schema?branch=main)
## Features
- [ ] DSL
- [x] Parse the [schema-schema](./specs/schemas/schema-schema.ipldsch)
- [ ] Reified Form
- [x] Convert parsed schema-schema to its [reified JSON form](./specs/schemas/schema-schema.ipldsch.json)
- [x] Convert reified form of the schema-schema back to its DSL representation (sans comments)
- [x] Generate arbitrary IPLD schemas in reified form from the parsed schema-schema
- [ ] Validate IPLD schema in reified form against the schema-schema and additional constraints (e.g. "rules around valid characters for type names")
- [ ] Generate Rust types from a valid IPLD schema
- [ ] Test generated IPLD schemas against implementations in other languages
- [ ] Parse IPLD values into Rust types generated from a compatible schema
- [ ] Generate arbitrary IPLD values from the reified form of some IPLD schema
- [ ] Verify generated IPLD values roundtrip through parsing to Rust types which were generated from the IPLD schema
## License
Licensed under either of
* Apache License, Version 2.0
([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
* MIT license
([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
at your option.
## Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in the work by you, as defined in the Apache-2.0 license, shall be
dual licensed as above, without any additional terms or conditions.
See [CONTRIBUTING.md](CONTRIBUTING.md).