github.com/easysoft/zendata@v0.0.0-20240513203326-705bd5a7fd67/res/zh/sample.yaml (about)

     1  title: zendata数据配置语法说明
     2  desc:
     3  
     4  # 文件组成
     5  
     6  # zendata以yaml格式的文件来定义各个字段的格式。
     7  # yaml文件整体由文件说明和字段定义两部分组成。
     8  
     9  # 文件说明
    10  
    11  # title:   标题,可以用简短的文字概要描述该文件定义的数据类型。
    12  # desc:    描述,可以用多行文本来详细描述该文件定义的数据类型,非必选项。
    13  # author:  作者,非必选项。
    14  # version:版本号,非必选项。
    15  
    16  # 字段列表
    17  
    18  # 字段定义部分都放在fields这个定义里面。
    19  # 一个yaml文件可以包含一个或者多个字段。
    20  # 字段列表以-field定义开始。
    21  # 一个字段可以通过fields属性定义它的子字段。
    22  
    23  # 字段定义
    24  
    25  # field:    字段名,仅支持英文、数字、下换线和.
    26  # range:    列表范围,最重要的定义。
    27  # loop:     循环次数,可以定义某一字段循环多少次。
    28  # loopfix:  每一次循环时的连接符。
    29  
    30  # format:    支持格式化输出。
    31  
    32  # prefix:   该字段的前缀。
    33  # postfix:  该字段的后缀。
    34  
    35  # length:   该字段的长度。如果不通过分隔符区分,则需要指定字段长度,单位是字节。
    36  # leftpad:  左填充的字符。如果长度不够,可指定左填充的字符。默认是以空格左填充。
    37  # rightpad: 右填充的字符。如果长度不够,可指定右填充的字符。
    38  
    39  # config:    可以引用另外一个文件里面的定义。
    40  
    41  # from:     引用某一个定义文件。
    42  # use:      使用被引用文件中定义的若干实例。all代表使用所有。
    43  # select:   如果引用的文件是excel表,可以查询里面的某一个字段。
    44  # where:     如果引用的文件是excel表,可以使用查询条件。
    45  
    46  # loop定义
    47  
    48  # 可以使用一个数字来指定字段循环的次数,比如loop:2。
    49  # 可以使用区间来定义字段循环的次数。比如loop:2-10。
    50  
    51  # range定义
    52  
    53  # 使用逗号连接不同的元素。比如 range: 1,2,3。
    54  # 元素也可以是一个区间。比如 range:1-10, A-Z。
    55  # 区间可以通过冒号:来指定步长。比如 range:1-10:2。
    56  # 步长可以是小数。比如 range: 1-10:0.1。
    57  # 步长可以是负数。比如 range:100-1:-1。
    58  # 区间可以通过R来指定随机。比如 range: 1-10:R,随机和步长只能二选一。
    59  # 可以通过一个文件来指定列表。比如range: list.txt。文件名是相对路径时,以配置文件为基准计算。
    60  # 可以通过{n}的方式来重复某一个元素。比如 range: user1{100},user2{100}
    61  # 如果区间或者几个元素需要重复,需要用[]括起来。比如 range: [user1,user2,user3]{100}
    62  
    63  author: zentao
    64  version: 1.0
    65  
    66  fields:
    67  
    68    - field: field_common                 # 默认的列表类型,通过逗号隔成若干区间。
    69      range: 1-10, 20-25, 27, 29, 30      # 1,2,3...,10,20,21,22...,25,27,29.30
    70      prefix: ""                          # 前缀,特殊字符加引号,否则无法解析。
    71      postfix: "\t"                       # 后缀
    72      divider: ","                        # 字段间的分隔符,仅对文本格式输出有效。
    73  
    74    - field: field_step                   # 区间指定步长。
    75      range: 1-10:2, 1-2:0.1              # 1,3,5,7,9,1, 1.1,1.2...,2
    76      postfix: "\t"
    77  
    78    - field: field_random                 # 区间指定随机。随机属性R同步长不能同时出现。
    79      range: 1-10:R                       # 1,5,8...
    80      postfix: "\t"
    81  
    82    - field: field_loop                   # 自循环的字段。
    83      range: a-z                          # a|b|c ...
    84      loop: 3                             # 循环三次
    85      loopfix: _                          # 每次循环的连接符。
    86      postfix: "\t"
    87  
    88    - field: field_repeat                 # 通过{}定义重复的元素。
    89      range: user-1{3},[user2,user3]{2}   # user-1,user-1,user-1,user2,user2,user3,user3
    90      postfix: "\t"
    91  
    92    - field: field_format                 # 通过格式化字符串输出。
    93      range: 1-10                         # passwd 1,passwd 2,passwd 3 ... passwd10。
    94      format: "passwd%02d"                # 用%02d补零,使密码整体保持8位。
    95      postfix: "\t"
    96  
    97    - field: field_length                 # 指定宽度。
    98      range: 1-99                         # 01\t,02\t,03\t..., 99\t
    99      length: 3                           # 包含前后缀的宽度。
   100      leftpad: 0                          # 宽度不够时,补充的字符。
   101      postfix: "\t"
   102  
   103    - field: field_text                   # 从一个文件中随机读取。
   104      range: user.txt:R                   # 相对当前文件路径。
   105      postfix: "\t"
   106  
   107    - field: field_yaml                   # 引用其他的定义文件整体内容。
   108      range: 01_range.yaml{3}             # 相对当前文件路径。
   109      postfix: "\t"
   110  
   111    - field: field_use_config             # 引用其他的config定义文件。
   112      config: number.yaml                 # 相对当前文件路径,config内包含单个字段。
   113      postfix: "\t"
   114  
   115    - field: field_use_ranges             # 引用內置的定义文件,该文件定义了多个range,他们共享了一些field层面的属性。
   116      from: zentao.number.v1.yaml         # 引用yaml/zentao/number/v1.yaml文件里面的ranges定义。
   117      use: medium                         # 使用该文件中定义的medium分组。
   118      postfix: "\t"
   119  
   120    - field: field_use_instance           # 引用其他的定义文件,该文件定义了多个实例。
   121      from: ip.v1.yaml                    # yaml/ip/v1.yaml
   122      use: privateC,privateB              # 使用该文件中定义的privateC和privateB两个实例。
   123      postfix: "\t"
   124  
   125    - field: field_use_excel              # 从excel数据源里面取数据。
   126      from: city.v1.city                  # 从data/address/v1.xlsx文件中读取名为china的工作簿。
   127      select: name                        # 查询city字段。
   128      where: state like '%山东%'           # 条件是省份包含山东。
   129      rand: true                          # 随机取数据
   130      postfix: "\t"
   131  
   132    - field: field_with_children          # 字段多层嵌套
   133      fields:
   134        - field: child1
   135          range: a-z
   136          prefix: part1_
   137          postfix: '|'
   138  
   139        - field:  child2
   140          range: A-Z
   141          prefix: part2_
   142          postfix: '|'
   143  
   144        - field: child_with_child
   145          prefix: part3_
   146          postfix:
   147          fields:
   148            - field: field_grandson
   149              prefix: int_
   150              range: 10-20
   151              postfix: