Comments (1)
Thanks for the bug report! This is probably because of the escaped quotes in the string - the SplitWithQuotes
method doesn't have any support for escaped quotes. The method already loops through each character in the line, so adding support for an escape character shouldn't be too hard. It's a good chance for me to write some unit tests for it as well.
Some basic test cases for my own reference
var testCases = new Dictionary<string, string[]>
{
["Simple"] = new[] { "Simple" },
["No Quotes"] = new[] { "No", "Quotes" },
[@"""With"" ""Quotes"""] = new[] { "With", "Quotes" },
[@"""Empty"" """""] = new[] { "Empty", "" },
[@"""With"" ""\""Escaped\"" Quotes"""] = new[] { "With", @"""Escaped"" Quotes" },
[@"""Json"" ""{ \""Key\"": \""Value\"" }"""] = new [] {"Json", @"{ ""Key"": ""Value"" }"}
};
foreach (var (input, expected) in testCases)
{
$"TEST: {input}".Dump();
try
{
var actual = SplitWithQuotes(input);
if (!actual.SequenceEqual(expected)) $"Test failed. Expected <{String.Join(", ", expected)}>, got <{String.Join(", ", actual)}>".Dump();
else "Test passed.".Dump();
}
catch (Exception ex)
{
$"Test failed. Exception: {ex.Message}".Dump();
}
"".Dump();
}
Current output:
TEST: Simple
Test passed.
TEST: No Quotes
Test passed.
TEST: "With" "Quotes"
Test passed.
TEST: "Empty" ""
Test passed.
TEST: "With" "\"Escaped\" Quotes"
Test failed. Exception: Index and length must refer to a location within the string. (Parameter 'length')
TEST: "Json" "{ \"Key\": \"Value\" }"
Test failed. Exception: Index and length must refer to a location within the string. (Parameter 'length')
from sledge-formats.
Related Issues (20)
- MDL support? HOT 2
- Textures lump deserialization handles invalid offsets incorrectly
- Support creating VTF files HOT 2
- More things to support in Source 2 fgd HOT 2
- Use Tokeniser for .map format
- [QuakeMapFormat] System.FormatException: Input string was not in a correct format HOT 3
- Surface and content flags crash when parsing Valve formats HOT 1
- Texture lumps are written incorrectly
- Quake map face texture names are not always read correctly
- Object value parsing issue in Counter-Strike 2 fgd HOT 1
- Can't access fgd behaviour dictionary in S2 HOT 2
- Properties dictionary wrapper does not handle replacement of SortedProperties list HOT 1
- Support JMF version 122
- Issues reading data from GetBgra32Data HOT 5
- Standardise construction methods for each type HOT 1
- BSP Entities lump writes "classname" and "model" keys twice on write
- Incorrect handling of // in serialized objects HOT 1
- Entities lump does not write null terminator
- Wad file lumps should have a default constructor
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sledge-formats.