[![Build Status](https://travis-ci.org/KeenS/chema.svg?branch=master)](https://travis-ci.org/KeenS/chema) [![Build status](https://ci.appveyor.com/api/projects/status/3o96tvfb0wv597ud/branch/master?svg=true)](https://ci.appveyor.com/project/KeenS/chema/branch/master) [![chema at crates.io](https://img.shields.io/crates/v/chema.svg)](https://crates.io/crates/chema) # Chema Generate JSON Schema from a lightweight DSL. This is originally intended to generate a `definitions` section of swagger specifications # Install Download a binary from https://github.com/KeenS/chema/releases or if you have setup `cargo`, use `cargo install like below ``` $ cargo install chema ``` # Usage ``` chema 0.0.8 Sunrin SHIMURA (keen) <3han5chou7@gmail.com> An external DSL for JSON Schema USAGE: chema [FLAGS] [OPTIONS] FLAGS: -h, --help Prints help information --no-swagger don't use swagger spesific notation --pack if pack the output -V, --version Prints version information OPTIONS: --format output format (json|yaml) [default: json] --path-prefix path prefix of paths [default: /definitions] ARGS: input file ``` # Syntax ``` TOP = ITEMS ITEMS = ITEM+ ITEM = TYPEDEF TYPEDEF = "type" IDENT "=" TYPE ";" TYPE = "null" | "boolean" | "object" | "number" | "string" | "integer" | IDENT | "[" TYPE "]" | STRUCT | ENUM | TYPE "?" | "format" "(" STRING ")" | "url" "(" STRING ")" | TYPE "&" TYPE | TYPE "|" TYPE | TYPE "where" PRED | "(" TYPE ")" | STRING STRUCT = "struct" "{" (FIELD ",")+ "}" FIELD = IDENT "?"? ":" TYPE ENUM = "enum" "{" (VARIANT",")+ "}" VARIANT = STRING PRED = UNUMBER "<=" "length" | "length" <= UNUMBER | "format" "=" STRING | "it" "=~" REGEX | PRED && PRED IDENT = [a-zA-Z_][a-zA-Z0-9_]* STRIING = "\"" ([^"\\]|\\.)* "\"" REGEX = "/" ([^/\\]|\\.)* "/" UNUMBER = [0-9]+ COMMENT = "//" any "\n" | "/*" any "*/" DOC_COMMENT = "/**" any "*/" ``` # Example See [etc](etc). `*.jsd`s are the sources and `*.jsons` are the generated files. # Supported Platforms UNIX-like system will be supported. Ubuntu LTS is the major target. Windows support is best effort and may not work .