1.0.3 • Published 7 years ago

mock-yaml v1.0.3

Weekly downloads
3
License
MIT
Repository
github
Last release
7 years ago

mock-yaml

用yaml语法作为数据结构,兼容绝大部分mockjs语法,同时获得yaml的强大扩展能力。

安装

服务端npm安装

$ npm install mock-yaml --save-dev

客户端引入script脚本

<script src="dist/mockyaml.js"></script>

使用

使用示例

how to use

方法

  • toJSON: 将yaml文件转成json
  • toYAML: 将json转成yaml,暂不支持mockjs规则自动转成yaml语法的规则
  • Random: 扩展mockjs的占位符,也即Mock.Random
  • Mock: mockjs对象

相关文档

TODO

  • todo xhr mock,增强且覆盖尽可能多的库
  • todo 增加mock占位符
  • todo 转换器页面增加链接到GitHub主页

mockjs模板在mock-yaml的语法

属性:规则模板         具体规则   初始值
key:  !str/min-max     1-3        ★

mockjs数据模板

类型mockjs数据模板mock-yaml示例语法示例结果备注
stringmin-maxkey: !str/min-max 1-3 ★{key: "★★"}
stringcountkey: !str/count 4 ★{key: "★★★★"}
numbermin-maxkey: !num/min-max -10-10 1{key: -3}
numbermin-max.dmin-dmaxkey: !num/min-max.dmin-dmax 1-10.2-3 10{key: 9.77}
numbermin-max.dcountkey: !num/min-max.dcount 1-10.3 1{key: 1.104}
numbercount.dmin-dmaxkey: !num/count.dmin-dmax -30.1-2 1{key: -30.9}
numbercount.dcountkey: !num/count.dcount -23.4 1{key: -23.7824}
numbercount没有实现
number+step没有实现
boolean1key: !bool/1{key: false}可以只写规则模板!bool/1,不用写具体规则和初始值
booleanmin-maxkey: !bool/min-max 1-3 true{key: false}
objectcount见示例
objectmin-max见示例
array1见示例
array+1没有实现
arraymin-max见示例
arraycount见示例
function!!js/function >yaml内置
regexp见示例
regexpmin-max没有实现

mockjs占位符

类型占位符兼容(default Y)备注
allallY

注意事项

yml语法的@字符已被保留,所以如果存在以@为首字母的字符串(比如说mockjs的占位符),那么需要用引号将其包裹起来,如果@不是首字母,那么可以省略引号。

placeholder: 
    - '@url'
    - hello @string(5,10)

示例

  • file.yml
root: 
  str:
    -10--1: !str/min-max -10--1 ★
    1-10: !str/min-max 1-10 ★
    4: !str/count 4 ★
  number:
    -10-10: !num/min-max -10-10  1
    1-10.2-3: !num/min-max.dmin-dmax 1-10.2-3  10
    -10-1.1-4: !num/min-max.dmin-dmax -10-1.1-4  10
    1-10.3: !num/min-max.dcount 1-10.3 1
    1-10.-3: !num/min-max.dcount 1-10.-3 1
    -30.1-2: !num/count.dmin-dmax -30.1-2 1
    -23.4: !num/count.dcount -23.4 1
  boolean:
    anychar: !bool/1 1 1
    true1-3: !bool/min-max 1-3 true
    false1-3: !bool/min-max 1-3 false
  object:
    2: &aliasobj1  !object/count
      /rule: 2
      310000: 北京市
      320000: 江苏省
      330000: 浙江省
      340000: 安徽省
    1-3: &aliasobj2 !object/count
      /rule: 1-3
      310000: 北京市
      320000: 江苏省
      330000: 浙江省
      340000: 安徽省
  array:
    1-3: !array/min-max &alias1
      - 1-3
      - 北京市
      - 江苏省
      - 浙江省
      - 安徽省
    2: !array/count 
      - 2
      - 北京市
      - 江苏省
      - 浙江省
      - 安徽省
  func: !!js/function >
      function foobar() {
        return 'Wow! JS-YAML Rocks!';
      }
  regexp: 
    - !regexp/1 /[a-z][A-Z][0-9]/
    - !regexp/1 /\w\W\s\S\d\D/
    - !regexp/1 /\d{5,10}/
    - !regexp/1 /@color/
  placeholder:
    - '@check' 
    - '@url'
    - hello @string(5,10)
    - '@now'
  alias: *alias1
  aliasobj: 
    <<: *aliasobj1
    <<: *aliasobj2
  • json
{
  "root": {
    "str": {
      "4": "★★★★",
      "-10--1": "",
      "1-10": "★★★★★★★"
    },
    "number": {
      "-10-10": 2,
      "1-10.2-3": 9.361,
      "-10-1.1-4": -8.07,
      "1-10.3": 2.412,
      "1-10.-3": 8.6158,
      "-30.1-2": -30.37,
      "-23.4": -23.9829
    },
    "boolean": {
      "anychar": false,
      "true1-3": false,
      "false1-3": false
    },
    "object": {
      "2": {
        "310000": "北京市",
        "320000": "江苏省"
      },
      "1-3": {
        "310000": "北京市",
        "330000": "浙江省",
        "340000": "安徽省"
      }
    },
    "array": {
      "2": [
        "北京市",
        "江苏省",
        "浙江省",
        "安徽省",
        "北京市",
        "江苏省",
        "浙江省",
        "安徽省"
      ],
      "1-3": [
        "北京市",
        "江苏省",
        "浙江省",
        "安徽省",
        "北京市",
        "江苏省",
        "浙江省",
        "安徽省"
      ]
    },
    "regexp": [
      "fG8",
      "V@
u1\"",
      "54677466",
      "#79f2af"
    ],
    "placeholder": [
      "extend success",
      "tn3270://vdqsmnf.sa/weo",
      "hello GmFmah",
      "2017-06-21 22:42:15"
    ],
    "alias": [
      "北京市",
      "江苏省",
      "浙江省",
      "安徽省",
      "北京市",
      "江苏省",
      "浙江省",
      "安徽省"
    ],
    "aliasobj": {
      "310000": "北京市",
      "320000": "江苏省",
      "330000": "浙江省",
      "340000": "安徽省"
    },
    "func": "Wow! JS-YAML Rocks!"
  }
}