diff --git a/.gitignore b/.gitignore index 6682812f..63cd5641 100644 --- a/.gitignore +++ b/.gitignore @@ -21,6 +21,9 @@ bld/ [Bb]in/ [Oo]bj/ +# JetBrains Rider +.idea/ + # Visual Studio 2015 cache/options directory .vs/ # Uncomment if you have tasks that create the project's static files in wwwroot diff --git a/ValveKeyValue/ValveKeyValue.Test/Text/CommentOnEndOfTheLine.cs b/ValveKeyValue/ValveKeyValue.Test/Text/CommentOnEndOfTheLine.cs new file mode 100644 index 00000000..08209a2c --- /dev/null +++ b/ValveKeyValue/ValveKeyValue.Test/Text/CommentOnEndOfTheLine.cs @@ -0,0 +1,28 @@ +using System.Linq; +using System.Text; +using NUnit.Framework; + +namespace ValveKeyValue.Test +{ + class CommentOnEndOfTheLine + { + [Test] + public void CanHandleCommentOnEndOfTheLine() + { + var text = new StringBuilder(); + text.Append(@"""test_kv""" + "\n"); + text.Append("{" + "\n"); + text.Append("//" + "\n"); + text.Append(@"""test"" ""hello""" + "\n"); + text.Append("}" + "\n"); + + var data = KVSerializer.Create(KVSerializationFormat.KeyValues1Text).Deserialize(text.ToString()); + + Assert.Multiple(() => + { + Assert.That(data.Children.Count(), Is.EqualTo(1)); + Assert.That((string)data["test"], Is.EqualTo("hello")); + }); + } + } +} diff --git a/ValveKeyValue/ValveKeyValue/Deserialization/KV1TokenReader.cs b/ValveKeyValue/ValveKeyValue/Deserialization/KV1TokenReader.cs index d24ea564..6d837a2f 100644 --- a/ValveKeyValue/ValveKeyValue/Deserialization/KV1TokenReader.cs +++ b/ValveKeyValue/ValveKeyValue/Deserialization/KV1TokenReader.cs @@ -106,7 +106,7 @@ KVToken ReadComment() sb.Append(next); } - if (sb[^1] == '\r') + if (sb.Length > 0 && sb[^1] == '\r') { sb.Remove(sb.Length - 1, 1); }