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.some-site.example/
(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.some-site.example/"
To clarify, I meant “quote the value” and originally thought the entire thing was the value. If http://www.some-site.example/
is the value, just quote it like so:
url: "http://www.some-site.example/"
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.
>-
or |-
in order to prevent this.
- >
but the items after the first are ignored.
- |
and then on a new line I indented the list item text so that the first character lined up with the pipe. I hope that helps, it worked for me in a Rails 4.2 locale file.
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.some-site.example/'
- url: "http://www.some-site.example/"
- url:
http://www.some-site.example/
- url: >-
http://www.some-site.example/
- url: |-
http://www.some-site.example/
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.some-site.example/"
Putting them across the whole line looks like it might cause problems.
Another way that works with the YAML parser used in Jekyll:
title: My Life: A Memoir
Colons not followed by spaces don't seem to bother Jekyll's YAML parser, on the other hand. Neither do dashes.
If you're using @ConfigurationProperties
with Spring Boot 2 to inject maps with keys that contain colons then you need an additional level of escaping using square brackets inside the quotes because spring only allows alphanumeric and '-' characters, stripping out the rest. Your new key would look like this:
"[8.11.32.120:8000]": GoogleMapsKeyforThisDomain
See this github issue for reference.
I came here trying to get my Azure DevOps Command Line task working. The thing that worked for me was using the pipe (|
) character. Using >
did not work.
Example:
steps:
- task: CmdLine@2
inputs:
script: |
echo "Selecting Mono version..."
/bin/bash -c "sudo $AGENT_HOMEDIRECTORY/scripts/select-xamarin-sdk.sh 5_18_1"
echo "Selecting Xcode version..."
/bin/bash -c "echo '##vso[task.setvariable variable=MD_APPLE_SDK_ROOT;]'/Applications/Xcode_10.2.1.app;sudo xcode-select --switch /Applications/Xcode_10.2.1.app/Contents/Developer"
.gitlab-ci.yml
, but until I needed pipe '|' in script - it fails silently on it :(
GitHub actions complain about
curl -L -H "Authorization: token ${{ secrets.TOKEN }}" https://example.com/try.txt
but it's fine when there is no space after colon, like
curl -L -H "Authorization:token ${{ secrets.TOKEN }}" https://example.com/try.txt
Success story sharing
- 'PS4="+(${BASH_SOURCE}:${LINENO}): ${FUNCNAME[0]:+${FUNCNAME[0]}(): }"'