在看drupal8,发现其模块和主题的定义使用的是YAML文件。drupal8使用的Symfony框架中YAML文件结构,故翻译整理学习下,有理解不准确的地方请多多指教。

String

一般字符串可以使用单引号,双引号或者不使用引号。

A string in YAML
'A singled-quoted string in YAML'
"A double-quoted string in YAML"

当使用单引号字符串时,其内容中的任何单引号必须加倍才能转义:

'A single quote '' inside a single-quoted string'

包含以下任何字符都需要引号,可以使用单引号或双引号,但使用单引号更方便

:, {, }, [, ], ,, &, *, #, ?, |, -, <, >, =, !, %, @, `

双引号方式提供了以一种表示任意字符串的方法,使用\来转义字符和序列

\0, \x01, \x02, \x03, \x04, \x05, \x06, \a, \b, \t, \n, \v, \f, \r, \x0e, \x0f, \x10, \x11,  \x12, \x13, \x14, \x15, \x16, \x17, \x18, \x19, \x1a, \e, \x1c, \x1d, \x1e, \x1f, \N, \_, \L, \P

"A double-quoted string in YAML\n"

注:测试发现,当字符串中包含上面字符时,使用单引号也可以转义的

最后还有其他一些情况,不管你使用单引号还是双引号

  • true or false ( 否则就是布尔值 )

  • null or ~ (否则认为是null)

  • 当看起来像整数如2,14;浮点数如2.6,14.9;指数如12e7等,否则被视为一个数值

  • 当看起来像一个日期如2014-12-31,否则会自动转为一个Unix时间戳

'true'
'null'
'2.14'
'2014-12-31'

当一个字符串中包含换行符时,可以使用由(|)管道符来指示该字符串将跨越多行。在文字中,换行符被保存下来

|\/ /| |\/| |/ / | |  | |__

或者字符串可以使用折叠样式编写,用>表示,其中每行换行符被空格替换

>  This is a very long sentencethat spans several lines in the YAMLbut which will be rendered as a stringwithout carriage returns.

Numbers

12 #十进制
014 #八进制
0xC #十六进制
13.4 #浮点数
1.2e+24 #指数
.inf #无穷

Nulls

null
~

Booleans

true
false

Dates

#简单日期
2002-12-14

Collections

- PHP
- Perl
- Python

对应PHP为

array('PHP','perl','Python')

PHP:    5.2
MySQL:  5.1
Apache: 2.2.20

对应PHP为

array('PHP' => 5.2, 'MySQL' => 5.1, 'Apache' => '2.2.20');
'symfony 1.0':PHP:    5.0Propel: 1.2
'symfony 1.2':PHP:    5.2Propel: 1.3

对应PHP为

array('symfony 1.0' => array('PHP'    => 5.0,'Propel' => 1.2,),'symfony 1.2' => array('PHP'    => 5.2,'Propel' => 1.3,),
);

在YAML文件中使用缩进时需要记住一件重要的事情:缩进必须由一个或多个空格完成,但从不使用制表符。

也可以根据需要嵌套序列和映射

'Chapter 1':- Introduction- Event Types
'Chapter 2':- Introduction- Helpers

也可使用明显的指示符而不是缩进

[PHP, Perl, Python]
{ PHP: 5.2, MySQL: 5.1, Apache: 2.2.20 }
'Chapter 1': [Introduction, Event Types]
'Chapter 2': [Introduction, Helpers]
'symfony 1.0': { PHP: 5.0, Propel: 1.2 }
'symfony 1.2': { PHP: 5.2, Propel: 1.3 }

注释

#comment on a line

Explicit Typing

YAML规范定义了一些标签来显式地设置任何数据类型:

data:# this value is parsed as a string (it's not transformed into a DateTime)start_date: !!str 2002-12-14# this value is parsed as a float number (it will be 3.0 instead of 3)price: !!float 3# this value is parsed as binary data encoded in base64picture: !!binary |R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5OTk6enp

Unsupported YAML Features

Symfony Yaml组件不支持以下YAML特性:

  • Multi-documents (--- and ... markers); 多文档(---和...标记);

  • Complex mapping keys and complex values starting with ?;以?开头的复杂映射键和复数值;

  • Tagged values as keys;标记为键的值;

  • 下面标签和类型: !!set, !!omap, !!pairs, !!set, !!seq, !!bool, !!int, !!merge, !!null, !!timestamp, !!value, !!yaml;

  • 标记(TAG指令;例如:%TAG!标记:example.com,2000:app /)和标记引用(例如:!<tag:example.com,2000:app / foo>);

  • 映射元素使用类似序列的语法(例如:{foo,bar};改为使用{foo:〜,bar:〜})

原文地址:http://symfony.com/doc/current/components/yaml/yaml_format.html

验证地址:https://codebeautify.org/yaml-to-json-xml-csv

---

仅供个人理解参考

转载于:https://blog.51cto.com/5890945/2046623

YAML文件结构简介相关推荐

  1. yaml 文件格式简介

    from: http://www.cnblogs.com/phpgo/p/6480107.html .yaml 文件格式简介 命名 YAML 的意思其实是:"Yet Another Mark ...

  2. .yaml 文件格式简介

    命名 YAML 的意思其实是:"Yet Another Markup Language"(仍是一种置标语言)的缩写. 功能 YAML的语法和其他高阶语言类似,并且可以简单表达清单. ...

  3. 巡风代码架构简介以及Flask的项目文件结构简介

    一.巡风: 巡风是一款什么东西,想必安全同行都不陌生吧.用它作为内网漏洞扫描管理架构是一种很好的选择,扫描快,开源,还可自己编写符合规则的POC直接放入相应目录来扩展.今天下午趁着有点时间捋了一下巡风 ...

  4. yaml文件 *.yml 写法简介

    YAML文件简介 我们可能在spring配置文件里见到过.yml格式的东东,配置文件不都是.propertie或者.xml文件吗?.yml是什么鬼,今天我带你们来一探究竟. YAML(Yet Anot ...

  5. 【OpenCV】OpenCV实战从入门到精通之 -- 输入输出XML和YAML文件详解

    1.XML和YAML文件简介 XML文件是一种元标记语言,即开发者可以根据自身需要定义自己的标记.它是一种语义和结构语言,描述了文档的语义和结构. YAML以数据为中心,是一个可读性高,用来表达资料序 ...

  6. Golang解析yaml格式文件

    关注公众号 风色年代(itfantasycc) 300G微服务资料等你拿! 作者:会飞的鲶鱼 链接:Golang解析yaml格式文件 - 简书 來源:简书 简书著作权归作者所有,任何形式的转载都请联系 ...

  7. Helm 3 完整教程(三):chart 的文件结构和字段详解

    推荐阅读 Helm3(K8S 资源对象管理工具)视频教程:https://edu.csdn.net/course/detail/32506 Helm3(K8S 资源对象管理工具)博客专栏:https: ...

  8. Kubernetes(k8s) YAML文件详解

    文章目录 一.yaml文件简介 1)yaml的语法规则: 2)在Kubernetes中,只需要知道两种结构类型即可: 二.yaml常见语法 1)apiVersion 2)kind 3)metadata ...

  9. 【浅墨著作】 OpenCV3编程入门 内容简介 勘误 配套源代码下载

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 经过近一 ...

最新文章

  1. python中的变量、Debug和数据类型
  2. Android 获取keystore SHA1方法
  3. 前端工程基础知识点--Browserslist (基于官方文档翻译)
  4. HihoCoder - 1457 后缀自动机四·重复旋律7(后缀自动机)
  5. 第一章 Spark系统概述
  6. Windows 10怎么了?
  7. C 双向链表的简单排序实现
  8. visual studio可以开发python吗_Visual Studio上开发Python六大功能
  9. java gc full gc_Java中full gc什么意思?
  10. 虚拟机安装rsync服务器配置,虚拟机安装rsync服务器配置
  11. 1067 Sort with Swap(0, i) (25 分)
  12. cad查看_CAD手机看图软件中批注的图片在电脑上如何查看?
  13. R语言混合线性模型包代码演示
  14. HTML5 3D棒球游戏截图
  15. 计算机休眠和睡眠省电,几步教会你笔记本睡眠和休眠有什么区别
  16. Docker教程(二):docker常用命令
  17. 支持多种视频格式的html网页视频播放器代码
  18. 使用接口测试活动的中奖概率(随机事件测试)
  19. make px4fmu-v2_default报错:ninja:no work to do
  20. java实现邮箱激活注册账号完整案例

热门文章

  1. throw与throws
  2. 性能测试:性能测试实施全过程指南
  3. 【十八】文件译文:graph.js.fmkr (测试报告模版配置文件)
  4. Vue使用Vditor编辑器
  5. [Ext JS] Grid 的复选框行选择之——某些行不能选取
  6. Linux性能监控与分析之--- CPU
  7. 自己动手写Docker系列 -- 5.1实现容器的后台运行
  8. render java_render 实现v-model
  9. java 路径中代替斜杠_老生常谈java路径中的反斜杠和斜杠的区别
  10. SpringMVC开发框架中使用@ResponseBody注解后返回的json字符串中文乱码问题