Yaml
yaml ain’t markup language
配置Sakura主题的时候用到了yaml 当时看着语法还挺清晰 依样画葫芦也能写出来 就直接上手了 写blog的时候倒是经常因为冒号后面没加空格之类的error而报错 现在来总结下:
参考链接
基本语法规则:
大小写敏感
使用缩进表示层级关系
缩进不允许使用tab,只允许空格
缩进的空格数不重要,只要相同层级的元素左对齐即可
‘#’表示注释
这方面个人感觉 除了不允许tab外 和py的类似之处很多
数据类型
- 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
- 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
- 纯量(scalars):单个的、不可再分的值
类似于py的dict/list/常量
对象
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| key:{key1: value1, key2: value2, ...}
key: child-key: value child-key2: value2 ? - complexkey1 - complexkey2 : - complexvalue1 - complexvalue2
|
数组
1 2 3 4 5 6 7 8 9 10
| - A - B - C
- - A - B - C
key: [v1,v2,..]
|
综合展示:
- ```yaml
companies:
-
id: 1
name: company1
price: 200W
-
id: 2
name: company2
price: 500W1 2 3 4 5
| - ```yaml companies: [{id: 1,name: company1,price: 200W},{id: 2,name: company2,price: 500W}]
|
显然 二者可以混合使用
常量
上代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| boolean: - TRUE - FALSE float: - 3.14 - 6.8523015e+5 int: - 123 - 0b1010_0111_0100_1010_1110 null: nodeName: 'node' parent: ~ string: - 哈哈 - 'Hello world' - newline newline2 date: - 2018-02-17 datetime: - 2018-02-17T15:02:31+08:00
|
变量引用
1 2 3 4 5
| default-db: port: 3306
user-db: port: ${default-db.port}
|
可以用形如上述的方法进行变量引用(但是 反过来赋值是不行的!)
此外 可用**&和***进行引用和赋值:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| defaults: &defaults adapter: postgres host: localhost
development: database: myapp_development <<: *defaults
test: database: myapp_test <<: *defaults - &showell Steve - Clark - Brian - Oren - *showell
|
相当于
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| defaults: adapter: postgres host: localhost
development: database: myapp_development adapter: postgres host: localhost
test: database: myapp_test adapter: postgres host: localhost - &showell Steve - Clark - Brian - Oren - Steve
|
强制类型转换
用!!
1 2
| e: !!str 123 f: !!str true
|