topolis/validator

基于yaml的多维数组架构验证

1.2.0 2019-10-08 09:43 UTC

This package is not auto-updated.

Last update: 2024-09-17 13:23:39 UTC


README

一个复杂的验证器,将基于yaml的架构文件应用于多维数组

语法

架构是一个层次化的Yaml文件。从文件的根开始,每个级别包含三种不同的结构之一。

属性

属性是一个包含命名属性列表的对象。每个属性可以包含其他结构。对象结构的Yaml表示形式为

选项

  • type定义属性是否包含一个子结构或子结构的数组。默认:single
  • conditionals条件列表(如果它们要替换基本对象,则需要包含一个properties键)。默认:undefined
  • default如果没有找到内容,则使用默认值。默认:undefined(将简单地删除属性)
  • required定义此属性是否必须存在。默认:false
  • filter如果类型是multiple,则此过滤器将用于验证数组键。默认:undefined
  • options如果类型是multiple,则这些是键过滤器的选项。默认:[]
  • properties此对象的属性数组。默认:[]
  • errors可以覆盖此验证规则的特定状态代码以使用自定义代码和消息。默认:[](见下文=

示例

properties:
    one:
        ...
    two:
        ...
    three:
        ...
required: true
default: {one: A}        

列表

这定义了一个键值数组。与对象的不同之处在于,键不是严格定义的,只需要通过过滤器。

选项

  • conditionals条件列表(如果它们要替换基本对象,则需要包含一个properties键)。默认:undefined
  • default如果没有找到内容,则使用默认值。默认:undefined(将简单地删除属性)
  • required定义此属性是否必须存在。默认:false
  • min所需的最小数组元素数。默认:false
  • max所需的最大数组元素数。默认:false
  • key需要包含一个具有用于数组键的过滤器的Value结构。默认:undefined
  • value需要包含数组项的结构。默认:undefined

示例

listing:
    required: true
    min: 2
    max: 10
    key:
        ...
    value:
        ...        

这定义了一个单一值。

选项

  • filter要使用的过滤器(@see Topolis/Filter)。默认:Passthrough
  • options此过滤器的选项。默认:[](请注意,Validator将过滤器的默认类型设置为single
  • strict定义是否允许在可能的情况下对值进行清理。默认:false
  • default如果没有找到内容,则使用默认值。默认:undefined(将简单地删除属性)
  • required定义此属性是否必须存在。默认:false

示例

filter: PlainExt
options: {characters: ".-_"}
required: true
default: Pustekuchen
        

自定义错误

对于每个验证规则,可以针对单个状态代码指定自定义错误。但是请注意自定义代码,因为验证结果预期存在某些规则。

  • Positive/Negative遵循典型的进程退出代码,任何正数都被视为成功。任何负数都被视为失败
  • Severity数字越负,错误越严重。大多数调用程序期望无效或清理的结果具有正确值。请小心不要破坏您的结果代码检查。

默认错误代码

  • ERROR = -100关键执行或配置错误
  • INVALID = -11结果未通过最低要求的规则
  • SANITIZED = -2结果存在非关键问题。导致这些问题的值可以自动调整
  • INFO = -1结果是完全有效的,但有一些信息性消息
  • VALID = 1 结果完全有效

示例

filter: PlainExt
options: {characters: ".-_"}
errors: 
    -2:
        code: -1
        message: This data could be sanitized but we think a info alone is enough
    -11:
        code: -192
        message: This very special check failed      

开放任务

  • BUG:在StatusManager中的定义错误(无法重现。在哪里?)
  • FR:在其他文件中的参考定义
  • FR:列表中的自动递增索引