YAML
1. What is the difference between single and double quote YAML strings?
- YAML double-quoted strings are the only style that can express arbitrary strings, by using
\escape characters, such as\"to escape double quotes",\\to escape backslashes\, and a single backslash\can be used as a continuation character for double-quoted strings. - YAML single-quoted strings differ from YAML double-quoted strings in that
\and"can be used freely without escaping, but two single-quotes''are used to escape single-quote'characters.
For the following example, the contents of the three string variables are the same.
string1: 'here '' s to "quotes"'
string2: 'here''s to "quotes"'
string3: here's to "quotes"
Note: KCL's strategy for outputting YAML strings is to output unquoted strings or double-quoted strings preferentially when single quotes appear in the string content, and output single-quoted strings in other cases to avoid the burden of understanding.
For more details, please refer to YAML Spec v1.2
2. What is the meaning of symbols such as | - + > in YAML?
When using KCL multi-line strings (triple quote strings), the output YAML often carries some special tokens, such as |, -, + and >, etc. These tokens usually are the representation method of YAML multi-line string, such as the following KCL code:
data = """This is a KCL multi line string (the first line)
This is a KCL multi line string (the second line)
This is a KCL multi line string (the third line)
"""
var = 1
The output YAML is
data: |+
This is a KCL multi line string (the first line)
This is a KCL multi line string (the second line)
This is a KCL multi line string (the third line)
var: 1
|represents block style, which is used to represent a multi-line string, where all newlines in the string represent the real newlines.>represents folding style, in which all newlines in the string will be replaced by spaces.+and-are used to control the use of newlines at the end of strings. The default is to keep a single newline at the end of the string. If we want to remove all newlines, we can put a-after the style indicator|or>. If we want to keep the newline at the end, we need to put a+after|or>.
For more details, please refer to YAML Multiline String and YAML Spec v1.2
3. What is the meaning of numbers that appear after symbols | - + > such as |1 and |2 in YAML?
Numbers represent explicit indentation indicators in YAML. For long strings in YAML, YAML usually the first non-blank line determines the indentation level of the string, and when the first non-blank line is preceded by a non-leading character, such as a newline, we must use explicit indent indicators to specify the indent level of the content, such as |1 and |2 etc.
For example, for the following KCL code:
longStringStartWithNewline = """
This is the second line
This is the third line
"""
longStringStartWithNewline: |2
This is the second line
This is the third line
- Writing long strings from the first line.
longString = """This is the second line
This is the third line
"""
- Writing long strings with line continuation characters.
longString = """\
This is the second line
This is the third line
"""
The YAML output by the above two methods is:
longString: |
This is the second line
This is the third line
For more details, please refer to YAML Spec v1.2