YAML 学习笔记
2016-10-15 | learn | 11|
643
YAML: YAML Ain’t Markup Language.
简介
基本语法规则如下:
- 大小写敏感
- 使用缩进表示层级关系
- 缩进时不允许使用tab键,只允许使用空格
- 缩进的空格数量不重要,只要相同层级的元素左侧对齐即可
#
开启行注释
YAML支持的数据结构有三种:
- 对象:键值对的集合
- 数组:一组按次序排列的值
- 标量(scalars):单个的、不可再分的值
下面我们主要参考YAML.pdf
第二章的内容展开。
Collections
YAML的块集合(block collections)用缩进表示作用域,每一个实体都单独一行。块数组(block sequence)用-
标识每一个实体,块映射(mapping)用:
来标识每一个键值对。
YAML也有流格式(flow style)。此时就需要用特殊的字符来标识作用域了。在flow style
格式下,流数组(flow sequence)中每个元素之间要用,
分隔,之外需要用[
/]
来声明序列的范围;流映射(flow mapping)则使用{
/}
来标识范围。
Structures
YAML使用---
来指示文档中某一指令的开始,用...
来指示文档中某一指令的结束。
文档中的指代标记,如下规定,&
用来声明并标识某个实体,用*
来指代该实体:
[TODO]: ?
Scalars
多行字符串时,使用|
将保留换行符,>
将把换行符置换为空格,除非它后面跟着一个空行或者缩进更多的行。
单引号和双引号都可以使用,双引号不会对特殊字符转义,之外字符串中所有的换行符都会默认被换为空格。
Tags
Full Length Example
这两个例子都来自YAML.pdf
中,第一个例子是一个关于发票的,第二个则是关于一个日志文件的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | --- !<tag:clarkevans.com,2002:invoice> invoice: 34843 date : 2001-01-23 bill-to: &id001 given : Chris family : Dumars address: lines: | 458 Walkman Dr. Suite #292 city : Royal Oak state : MI postal : 48046 ship-to: *id001 product: - sku : BL394D quantity : 4 description: Basketball price : 450.00 - sku : BL4438H quantity : 1 description: Super Hoop price : 2392.00 tax : 251.42 total: 4443.52 comments: Late afternoon is best. Backup contact is Nancy. Billsmer @ 338-4338. |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | --- Time: 2001-11-23 15:01:42 -5 User: ed Warning: This is an error message for the log file --- Time: 2001-11-23 15:02:31 -5 User: ed Warning: A slightly different error message. --- Date: 2001-11-23 15:03:17 -5 User: ed Fatal: Unknown variable "bar" Stack: - file: TopClass.py line: 23 code: | x = MoreObject("345\n") - file: MoreClass.py line: 58 code: |- foo = bar |
参考资料
YAML 语言教程 - 阮一峰的网络日志
YAML Ain’t Markup Language - 官方文档
YAML.pdf
- 本文作者: WrRan
- 本文链接: http://www.wrran.com/blog/2016/10/15/learn/yaml/
- 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!