9 个版本
0.0.9 | 2020年12月2日 |
---|---|
0.0.8 | 2020年11月4日 |
0.0.7 | 2018年12月6日 |
0.0.6 | 2018年9月19日 |
0.0.4 | 2017年11月22日 |
#887 in 开发工具
32 每月下载量
51KB
1.5K SLoC
Chema
从轻量级 DSL 生成 JSON Schema。
最初目的是生成 swagger 规范的 definitions
部分
安装
从 https://github.com/KeenS/chema/releases 下载二进制文件或如果您已设置 cargo
,使用以下命令安装
$ cargo install chema
用法
chema 0.0.8
Sunrin SHIMURA (keen) <3han5chou7@gmail.com>
An external DSL for JSON Schema
USAGE:
chema [FLAGS] [OPTIONS] <input>
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 <format> output format (json|yaml) [default: json]
--path-prefix <path_prefix> path prefix of paths [default: /definitions]
ARGS:
<input> input file
语法
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 "*/"
示例
参见 etc. *.jsd
是源文件,而 *.jsons
是生成的文件。
支持的平台
将支持类似 UNIX 的系统。Ubuntu LTS 是主要目标。Windows 的支持是尽力而为的,可能无法正常工作。
依赖项
~8–17MB
~223K SLoC