Skip to content

Commit

Permalink
minor syntax adjustments
Browse files Browse the repository at this point in the history
  • Loading branch information
nlohmann committed Jan 9, 2015
1 parent 661a44d commit 33f5e74
Showing 1 changed file with 17 additions and 9 deletions.
26 changes: 17 additions & 9 deletions src/json.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2049,13 +2049,16 @@ std::string json::parser::parseString()
bool evenAmountOfBackslashes = true;

// iterate with pos_ over the whole string
for (;pos_ < buffer_.size(); pos_++) {
for (; pos_ < buffer_.size(); pos_++)
{
char currentChar = buffer_[pos_];

// currentChar is a quote, so we might have found the end of the string
if (currentChar == '"') {
if (currentChar == '"')
{
// but only if the amount of backslashes before that quote is even
if (evenAmountOfBackslashes) {
if (evenAmountOfBackslashes)
{

const auto stringLength = pos_ - startPos;
// set pos_ behind the trailing quote
Expand All @@ -2068,13 +2071,18 @@ std::string json::parser::parseString()
}
}

// remember if we have an even amount of backslashes before the current character
if (currentChar == '\\') {
// remember if we have an even amount of backslashes before the current
// character
if (currentChar == '\\')
{
// jump between even/uneven for each backslash we encounter
evenAmountOfBackslashes = !evenAmountOfBackslashes;
} else {
// zero backslashes are also an even number, so as soon as we encounter a non-backslash
// the chain of backslashes breaks and we start again from zero
evenAmountOfBackslashes = not evenAmountOfBackslashes;
}
else
{
// zero backslashes are also an even number, so as soon as we
// encounter a non-backslash the chain of backslashes breaks and
// we start again from zero
evenAmountOfBackslashes = true;
}
}
Expand Down

0 comments on commit 33f5e74

Please sign in to comment.