root/trunk/spec/merge.dbk

Revision 7, 4.3 KB (checked in by oren, 8 months ago)

April 06, 2008 draft.

Implemented by YamlReference? 0.9.

Contains new productions, new examples, all the changes collected throughout
the last 3 years, and of course JSON compatibility.

Line 
1<?xml version="1.0"?>
2<!DOCTYPE article
3  PUBLIC "-//OASIS//DTD DocBook V4.2//EN"
4         "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
5
6<article>
7  <articleinfo>
8    <title>
9      Merge Key Language-Independent Type for
10      <trademark>YAML</trademark>&nbsp;Version&nbsp;1.1
11    </title>
12
13    <subtitle>
14      Working Draft 2005-01-18
15    </subtitle>
16
17    <authorgroup>
18      <author>
19        <firstname>Oren</firstname>
20        <surname>Ben-Kiki</surname>
21        <email>oren@ben-kiki.org</email>
22      </author>
23
24      <author>
25        <firstname>Clark</firstname>
26        <surname>Evans</surname>
27        <email>cce+yaml@clarkevans.com</email>
28      </author>
29
30      <author>
31        <firstname>Brian</firstname>
32        <surname>Ingerson</surname>
33        <email>ingy@ttul.org</email>
34      </author>
35    </authorgroup>
36
37    <copyright>
38      <year>2001-2005</year>
39      <holder>Oren Ben-Kiki<fo>,&nbsp;</fo></holder>
40      <holder>Clark Evans<fo>,&nbsp;</fo></holder>
41      <holder>Brian Ingerson</holder>
42    </copyright>
43
44    <legalnotice>
45      This document may be freely copied provided it is not modified.
46    </legalnotice>
47
48    <abstract>
49      <title>Status</title>
50
51      <para>
52       This specification is a draft reflecting consensus reached by members of
53       the <ulink
54       url="http://lists.sourceforge.net/lists/listinfo/yaml-core">yaml-core
55       mailing list</ulink>. Any questions regarding this draft should be
56       raised on this list.
57      </para>
58    </abstract>
59  </articleinfo>
60
61  <section>
62    <variablelist>
63      <varlistentry>
64        <term>
65          <para>
66            URI:
67          </para>
68        </term>
69
70        <listitem>
71          <para>
72            <userinput>tag:yaml.org,2002:merge</userinput>
73          </para>
74        </listitem>
75      </varlistentry>
76
77      <varlistentry>
78        <term>
79          <para>
80            Shorthand:
81          </para>
82        </term>
83
84        <listitem>
85          <para>
86            <userinput>!!merge</userinput>
87          </para>
88        </listitem>
89      </varlistentry>
90
91      <varlistentry>
92        <term>
93          <para>
94            Kind:
95          </para>
96        </term>
97
98        <listitem>
99          <para>
100            Scalar.
101          </para>
102        </listitem>
103      </varlistentry>
104
105      <varlistentry>
106        <term>
107          <para>
108            Canonical:
109          </para>
110        </term>
111
112        <listitem>
113          <para>
114            N/A (single format).
115          </para>
116        </listitem>
117      </varlistentry>
118
119      <varlistentry>
120        <term>
121          <para>
122            Regexp:
123          </para>
124        </term>
125
126        <listitem>
127          <para>
128            <userinput>&lt;&lt;</userinput>
129          </para>
130        </listitem>
131      </varlistentry>
132
133      <varlistentry>
134        <term>
135          <para>
136            Definition:
137          </para>
138        </term>
139
140        <listitem>
141          <para>
142            Specify one or more mappings to be merged with the current one.
143          </para>
144
145          <para>
146            The <quote><userinput>&lt;&lt;</userinput></quote> merge key is
147            used to indicate that all the keys of one or more specified maps
148            should be inserted into the current map. If the value associated
149            with the key is a single mapping node, each of its key/value pairs
150            is inserted into the current mapping, unless the key already exists
151            in it. If the value associated with the merge key is a sequence,
152            then this sequence is expected to contain mapping nodes and each
153            of these nodes is merged in turn according to its order in the
154            sequence. Keys in mapping nodes earlier in the sequence override
155            keys specified in later mapping nodes.
156          </para>
157        </listitem>
158      </varlistentry>
159    </variablelist>
160
161    <example>
162      <title><userinput>!!merge</userinput> Examples</title>
163<programlisting>
164---
165- &amp;CENTER { x: 1, y: 2 }
166- &amp;LEFT { x: 0, y: 2 }
167- &amp;BIG { r: 10 }
168- &amp;SMALL { r: 1 }
169
170# All the following maps are equal:
171
172- # Explicit keys
173  x: 1
174  y: 2
175  r: 10
176  label: center/big
177
178- # Merge one map
179  &lt;&lt; : *CENTER
180  r: 10
181  label: center/big
182
183- # Merge multiple maps
184  &lt;&lt; : [ *CENTER, *BIG ]
185  label: center/big
186
187- # Override
188  &lt;&lt; : [ *BIG, *LEFT, *SMALL ]
189  x: 1
190  label: center/big
191</programlisting>
192    </example>
193  </section>
194</article>
Note: See TracBrowser for help on using the browser.