YAML
YAML is a human-readable markup format used for data serialization.
YAML is a recursive acronym for "YAML Ain't Markup Language".
The following is an example of a YAML from Clarive (from a Project Resource):
--- active: 1 assets: [] created_by: root description: '' folders: - active: '1' mid: '1495' moniker: ~ name: Old Projects ts: 2015-09-22 10:15:41 versionid: '1' mid: '932' modified_by: root moniker: APLICACION_PRINCIPAL name: ComplexApp repositories: - active: 1 bl: '*' created_by: root default_branch: HEAD description: 'another repository' exclude: [] include: [] mid: '1220' modified_by: root moniker: '' name: acmebank_cpp rel_path: /cpp repo_dir: /opt/repo/myrepo.git revision_mode: diff tags_mode: bl ts: 2015-02-15 20:35:17 versionid: '1' ts: 2014-10-16 11:56:04 variables: '*': c_compiler_server: '1118' files_server: '103' files_servers: '1118' jboss_server: '103' maven_server: '103' ruta_despliegue_ficheros: /opt/files staging_c_path: /tmp/${project}/cpp staging_path: /tmp/${project}/war tar_path: /tmp/clarivetar DEV: jboss_server: '1118' var2: optCommon TEST: c_servers: 1182,1183 tar_path: /tmp/clarive2 PREP: c_servers: 1184,1185 PROD: c_servers: 1182,1183,1184,1185,1195,1196,1198,1197,1199,1200,1201 SPECIAL: agents_b: '1407' versionid: '1'
YAML is used extensively in Clarive because it allows for expressing data contents in a human-readable format that is familiar to the technical user.
YAML is also used because it allows the system to version data contents, specially Resources, in a file system.
Read more about the format here:
Also, you can play with YAML in Clarive's REPL or at this online tool:
- http://yaml-online-parser.appspot.com/
Indentation¶
In YAML indentation is important, YAML uses a fixed indentation scheme which represents different relationship between elements.
parent: child: grandchild: 10
In JavaScript, the above maps to the following Object:
{ parent: { child: { grandchild: 10 } } }
In Clarive, indentation requires at least 1 space.
Colons¶
Colons represent key-value pairs, which are used to define Objects (Hashes or Dictionaries in other languages).
key1: value1 key2: value2
Which in JavaScript translates to:
{ key1: 'value1', key2: 'value2' }
Dashes¶
Dashes are used for creating lists, or Arrays in Javascript.
parent: - child1 - child2
In JavaScript, the above maps to the following Object:
{ parent: [ 'child1', 'child2' ] }
Multi-line data¶
Multi-line strings can be written using the |
(pipe) YAML operator. Indentation
is necessary, so use leading spaces.
mytext: | Long, long, multiline text that is nicely indented everywhere and may start with spaces. age: 20