pyjo的模型定义语言
pyjo-mdl的Python项目详细描述
#pyjo mdl
pyjo的模型定义语言基本示例:
```
{
"url":{
"type":"url",
"required":false
},
"name":{
"type":"string"
},
"rounds":{
"type":"array",
"element":{
"type":"embedded",
"model":{
"foo":{
"type":"string"
},
"bar":{
"type":"integer",
"min-value":100
}
}
}
}
}
}
````
这允许将模型定义为一组具有某种类型
和验证的属性。
请看,这个DSL中有许多可能的属性。
我们希望从一开始就尽可能简单,
因此这里有一个非常基本的列表,我们计划从一开始就添加这些属性。
将来会根据需要添加更多的属性。
选项
一些常用选项:
-`Required`:如果在提供内容时必须始终填充属性,则为true。默认为true
-`type`:属性的类型,有关可用属性初始集的建议,请参见下文
\string
basic string字段,可以包含任何一组UTF-8字符。
其他选项:
-`validation`:字符串必须满足的正则表达式
-`min-length`:字符串中的最小字符数,默认为0
-`max-length`:字符串中的最大字符数,默认为无限!
-`values`:此字段的所有和唯一可能值的数组
示例:
```
{
"标记版本":{
"类型":"字符串",
"验证":"^.-[0-9].[0-9].[0-9]构建[0-9]+$"
"最大长度":256
}
}
``````
示例(枚举):
````
{
"膳食分类":{
"类型":"字符串",
"值":"[
"smoothie",
"主菜"
"甜点"
]
}
}
`````
附加值:
-`min-value`:min-value-allowed
-`max-value`:max-value-allowed
````
{
"carries":{
"type":"integer",
"min-value":0
}
}
```
特别附加费:
>
-`min值`:允许的最小值
-`max值`:允许的最大值
` ` ` `
{
"价格":{
"类型":"float",
"min值":0,
"max值":99.99
` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `或者是假的。再简单不过了。
```
{
"hidden":{
"type":"boolean"
}
}
```
booleans会自动将
"yes,true,t,y,1"中的值视为truthy(忽略大小写),
"no,false,f,n,0"中的值视为falsy。其他字符串值将引发异常。
/ /(?):[A-ZA-Z][0-9][$-.@.&;+][!*(\)?:%[0-9a-fa-f][0-9a-fa-f])+`
````
{
"封面图像":{
"类型":"url"
}
}
}
```
它可以用来表示一些嵌套的数据结构。
可以包含完整模型的所有属性。必须包含:
-`model`:嵌入的模型结构
示例
```
{
"pet":{
"type":"embedded",
"model":{
"name":{
"type":"string",
},
"age":{
"type":"integer",
"min廑value":0
}
}
}
}
````
\array
表示任何类型的字段列表,包括嵌入的字段。附加:
-`element`:定义此数组属性中的元素类型。它可以是任何类型,包括嵌入的
示例(原始内容):
````
{
"幸运数字":{
"类型":"数组",
"element":{
"type":"integer"
}
}
}
````
>示例2(嵌入式复杂模型):
````
{
"pets":{
"type":"array",
"element":{
"type":"embedded",
"model":{
"name":{
"type":"string"
},
"age":{
"type":"integer",
"最小值":0
}
}
}
}
}
}
}
````
pyjo的模型定义语言基本示例:
```
{
"url":{
"type":"url",
"required":false
},
"name":{
"type":"string"
},
"rounds":{
"type":"array",
"element":{
"type":"embedded",
"model":{
"foo":{
"type":"string"
},
"bar":{
"type":"integer",
"min-value":100
}
}
}
}
}
}
````
这允许将模型定义为一组具有某种类型
和验证的属性。
请看,这个DSL中有许多可能的属性。
我们希望从一开始就尽可能简单,
因此这里有一个非常基本的列表,我们计划从一开始就添加这些属性。
将来会根据需要添加更多的属性。
选项
一些常用选项:
-`Required`:如果在提供内容时必须始终填充属性,则为true。默认为true
-`type`:属性的类型,有关可用属性初始集的建议,请参见下文
\string
basic string字段,可以包含任何一组UTF-8字符。
其他选项:
-`validation`:字符串必须满足的正则表达式
-`min-length`:字符串中的最小字符数,默认为0
-`max-length`:字符串中的最大字符数,默认为无限!
-`values`:此字段的所有和唯一可能值的数组
示例:
```
{
"标记版本":{
"类型":"字符串",
"验证":"^.-[0-9].[0-9].[0-9]构建[0-9]+$"
"最大长度":256
}
}
``````
示例(枚举):
````
{
"膳食分类":{
"类型":"字符串",
"值":"[
"smoothie",
"主菜"
"甜点"
]
}
}
`````
附加值:
-`min-value`:min-value-allowed
-`max-value`:max-value-allowed
````
{
"carries":{
"type":"integer",
"min-value":0
}
}
```
特别附加费:
>
-`min值`:允许的最小值
-`max值`:允许的最大值
` ` ` `
{
"价格":{
"类型":"float",
"min值":0,
"max值":99.99
` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `或者是假的。再简单不过了。
```
{
"hidden":{
"type":"boolean"
}
}
```
booleans会自动将
"yes,true,t,y,1"中的值视为truthy(忽略大小写),
"no,false,f,n,0"中的值视为falsy。其他字符串值将引发异常。
/ /(?):[A-ZA-Z][0-9][$-.@.&;+][!*(\)?:%[0-9a-fa-f][0-9a-fa-f])+`
````
{
"封面图像":{
"类型":"url"
}
}
}
```
它可以用来表示一些嵌套的数据结构。
可以包含完整模型的所有属性。必须包含:
-`model`:嵌入的模型结构
示例
```
{
"pet":{
"type":"embedded",
"model":{
"name":{
"type":"string",
},
"age":{
"type":"integer",
"min廑value":0
}
}
}
}
````
\array
表示任何类型的字段列表,包括嵌入的字段。附加:
-`element`:定义此数组属性中的元素类型。它可以是任何类型,包括嵌入的
示例(原始内容):
````
{
"幸运数字":{
"类型":"数组",
"element":{
"type":"integer"
}
}
}
````
>示例2(嵌入式复杂模型):
````
{
"pets":{
"type":"array",
"element":{
"type":"embedded",
"model":{
"name":{
"type":"string"
},
"age":{
"type":"integer",
"最小值":0
}
}
}
}
}
}
}
````