生态言据

校验与路径

使用可交换的言据规则校验配置,并安全查询或更新嵌套值。

言据校验规则本身也是言据,可以与配置一起保存、交换和审阅。检查类型一次返回全部问题;符合规则只返回真假;断验在失败时抛出第一项结构化错误。

声明配置规则

下面的规则要求根值是据,且只允许一个包含主机和端口的服务属性:


  「类型」「据」
  「必需」「服务」】,
  「允许额外」
  「属性」
    「服务」
      「类型」「据」
      「必需」「主机」「端口」】,
      「允许额外」
      「属性」
        「主机」「类型」「文」「最短」1】,
        「端口」「类型」「数」「最小」1「最大」65535「整数」



 配置: 言据.读取据「config/app.yj」);
 规则: 言据.读取据「config/app.schema.yj」);

 各错: 言据.检查类型(配置,规则);
 长度(各错)大于 0
 言据.美化(各错);

规则字段

字段约束
类型类型名或类型名列任意,列表示联合类型
枚举值须与其中一项深层相同
最小 / 最大数值闭区间
整数为真时不得有小数部分
最短 / 最长非负整数文字、列或据的长度闭区间
项目规则据递归检查列中的每一项
必需文字列据必须具有的键
属性键到规则据的据按键递归检查
允许额外为假时拒绝属性未声明的键

未知类型名、空联合类型或类型错误的规则字段产生YJ_SCHEMA,不会被误报成数据错误。校验错误按属性键稳定排序,每项包含代码、路径段列路径、显示文字路径文消息预期实际

路径查询

文字路径以全角斜线分段。遇到据时路径段是文字键,遇到列时路径段是非负整数下标:

 端口  言据.查询文(配置,「服务/端口」);
 第二标签  言据.查询(配置,【「标签」1】);

 言据.路径存在文(配置,「服务/证书」
 「已经配置证书」


 用户  言据.查询或(配置,【「服务」「用户」】,「nobody」);

键中的全角斜线写成\/,反斜线写成\\路径分段把文字转换为段列,路径呈现执行反向转换。缺失键、越界下标和中途遇到标量都抛出YJ_PATH,并保留已经走到的数据路径。

不可变设定

设定会先深复制根值,再改写副本;输入配置及其嵌套容器保持不变。父路径必须已经存在,列下标等于列长度时表示追加。

 新配置: 言据.设定据
    配置,
「服务」「端口」】,
    9090
);

根值明确为据时优先使用设定据,它的静态返回类型是。跨多个配置层组合数据时继续阅读数据合并与差异