Skip to content

Commit

Permalink
Merge pull request #759 from EdwardCooke/ec-fix-757
Browse files Browse the repository at this point in the history
Allow braces in non-flows
  • Loading branch information
EdwardCooke committed Dec 15, 2022
2 parents 6bf5b44 + cca792b commit 40e05a2
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 6 deletions.
29 changes: 29 additions & 0 deletions YamlDotNet.Test/Core/ScannerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -414,6 +414,35 @@ public void Issue_553_562()
}
}

[Fact]
public void Plain_Scalar_outside_of_flow_allows_braces()
{
AssertSequenceOfTokensFrom(Yaml.ScannerForText(@"value: -[123]"),
StreamStart,
BlockMappingStart,
Key,
PlainScalar("value"),
Value,
PlainScalar("-[123]"),
BlockEnd,
StreamEnd);
}

[Fact]
public void Plain_Scalar_inside_flow_does_not_allow_braces()
{
AssertPartialSequenceOfTokensFrom(Yaml.ScannerForText(@"
[
value: -[123]
]"),
StreamStart,
FlowSequenceStart,
Key,
PlainScalar("value"),
Value,
Error("Invalid key indicator format."));
}

private void AssertPartialSequenceOfTokensFrom(Scanner scanner, params Token[] tokens)
{
var tokenNumber = 1;
Expand Down
5 changes: 5 additions & 0 deletions YamlDotNet.Test/Core/TokenHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,11 @@ protected static AnchorAlias AnchorAlias(string alias)
return new AnchorAlias(new AnchorName(alias));
}

protected static Error Error(string value)
{
return new Error(value, new Mark(), new Mark());
}

protected static Comment StandaloneComment(string text)
{
return new Comment(text, false);
Expand Down
2 changes: 1 addition & 1 deletion YamlDotNet/Core/Scanner.cs
Original file line number Diff line number Diff line change
Expand Up @@ -398,7 +398,7 @@ private void FetchNextToken()
FetchBlockEntry();
return;
}
else if (analyzer.Check(",[]{}", 1))
else if (flowLevel > 0 && analyzer.Check(",[]{}", 1))
{
tokens.Enqueue(new Error("Invalid key indicator format.", cursor.Mark(), cursor.Mark()));
}
Expand Down
10 changes: 5 additions & 5 deletions YamlDotNet/Core/Tokens/Error.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,16 +22,16 @@
namespace YamlDotNet.Core.Tokens
{
/// <summary>
/// Base class for YAML tokens.
/// Error tokens.
/// </summary>
internal class Error : Token
public class Error : Token
{
/// <summary>
/// Gets the value of the comment
/// Gets the value of the error
/// </summary>
internal string Value { get; }
public string Value { get; }

internal Error(string value, Mark start, Mark end)
public Error(string value, Mark start, Mark end)
: base(start, end)
{
Value = value;
Expand Down

0 comments on commit 40e05a2

Please sign in to comment.