How to escape indicator characters (i.e. : or - ) in YAML
In a config file, I have a key to which I wish to assign a URL. The problem is that YAML interprets : and - characters as either creating mappings or lists, so it has a problem with the line
url: http://www.example-site.com/
(both because of the colon following http and the hyphen in the middle)
Is there an explicit way to escape ':' and '-' ? Or would it work to just put the whole thing in single quotes and call it a day?
Quotes:
"url: http://www.example-site.com/"
To clarify, I meant “quote the value” and originally thought the entire thing was the value. If http://www.example-site.com/
is the value, just quote it like so:
url: "http://www.example-site.com/"
What also works and is even nicer for long, multiline texts, is putting your text indented on the next line, after a pipe or greater-than sign:
text: >
Op dit plein stond het hoofdkantoor van de NIROM: Nederlands Indische
Radio Omroep
A pipe preserves newlines, a gt-sign turns all the following lines into one long string.
According to the YAML spec, neither the :
nor the -
should be a problem. :
is only a key separator with a space after it, and -
is only an array indicator at the start of a line with a space after it.
But if your YAML implementation has a problem with it, you potentially have lots of options:
- url: 'http://www.example-site.com/'
- url: "http://www.example-site.com/"
- url:
http://www.example-site.com/
- url: >-
http://www.example-site.com/
- url: |-
http://www.example-site.com/
There is explicitly no form of escaping possible in "plain style", however.
Quotes, but I prefer them on the just the value:
url: "http://www.example.com/"
Putting them across the whole line looks like it might cause problems.