Skip to content

Commit

Permalink
Allow colons in plain scalars inside flow collections
Browse files Browse the repository at this point in the history
This is a followup to yaml#28

See http://yaml.org/spec/1.1/#nb-plain-char(c) and the following
productions.

This commit will allow `[http://example]`, but still fail for:
- `[:foo]`
- `[foo:]`
  • Loading branch information
perlpunk committed Feb 2, 2018
1 parent 01f3a87 commit a9606b7
Showing 1 changed file with 10 additions and 2 deletions.
12 changes: 10 additions & 2 deletions src/scanner.c
Expand Up @@ -3434,7 +3434,15 @@ yaml_parser_scan_plain_scalar(yaml_parser_t *parser, yaml_token_t *token)

if (parser->flow_level
&& CHECK(parser->buffer, ':')
&& !IS_BLANKZ_AT(parser->buffer, 1)) {
&& (
CHECK_AT(parser->buffer, ',', 1)
|| CHECK_AT(parser->buffer, '?', 1)
|| CHECK_AT(parser->buffer, '[', 1)
|| CHECK_AT(parser->buffer, ']', 1)
|| CHECK_AT(parser->buffer, '{', 1)
|| CHECK_AT(parser->buffer, '}', 1)
)
) {
yaml_parser_set_scanner_error(parser, "while scanning a plain scalar",
start_mark, "found unexpected ':'");
goto error;
Expand All @@ -3444,7 +3452,7 @@ yaml_parser_scan_plain_scalar(yaml_parser_t *parser, yaml_token_t *token)

if ((CHECK(parser->buffer, ':') && IS_BLANKZ_AT(parser->buffer, 1))
|| (parser->flow_level &&
(CHECK(parser->buffer, ',') || CHECK(parser->buffer, ':')
(CHECK(parser->buffer, ',')
|| CHECK(parser->buffer, '?') || CHECK(parser->buffer, '[')
|| CHECK(parser->buffer, ']') || CHECK(parser->buffer, '{')
|| CHECK(parser->buffer, '}'))))
Expand Down

0 comments on commit a9606b7

Please sign in to comment.