Cumin

crates.io

Cumin is a Structured, Typed and Mini-Programmable Configuration Language. ## Documents - [cympfh.cc/cumin, English](https://cympfh.cc/cumin) - [v0.9.10 マニュアル, 日本語](https://zenn.dev/cympfh/books/cumin-book-v0910) ## Features - Rust-like Syntax - Structured - struct, enum - Typed - Validated Data - Mini-Programmable ## Example ```rust struct UserRecord { id: Int, name: Option = None, region: Region = Region::Unknown, } enum Region { Unknown, East, West, } [ UserRecord(1, "cympfh", Region::East), UserRecord { id = 2, name = "Alan", region = Region::West, }, UserRecord { id = 3, name = "Bob" }, UserRecord { id = 4, region = Region::East }, ] ``` ## Compiler Cumin Compiler `cuminc` converts to JSON from Cumin. ```bash $ cuminc ./examples/names.cumin [ { "id": 1, "name": "cympfh", "region": "East" }, { "id": 2, "name": "Alan", "region": "West" }, { "id": 3, "name": "Bob", "region": "Unknown" }, { "id": 4, "name": null, "region": "East" } ] ``` ## For Vim Users ```vim Plugin 'rust-lang/rust.vim' au BufRead,BufNewFile *.cumin set filetype=cumin au FileType cumin set syntax=rust ```