Browse Source

Refactoring...

Benoit Blanchon 11 years ago
parent
commit
151fc52c1c
2 changed files with 13 additions and 8 deletions
  1. 12 7
      JsonGenerator/PrettyPrintDecorator.cpp
  2. 1 1
      JsonGenerator/PrettyPrintDecorator.h

+ 12 - 7
JsonGenerator/PrettyPrintDecorator.cpp

@@ -16,7 +16,9 @@ size_t PrettyPrintDecorator::handleStringChar(uint8_t c)
 {
     bool isQuote = c == '"' && previousChar != '\\';
 
-    return isQuote ? writeQuote() : writeNormalChar(c);
+    if (isQuote) inString = false;
+
+    return sink.write(c);
 }
 
 size_t PrettyPrintDecorator::handleMarkupChar(uint8_t c)
@@ -41,14 +43,13 @@ size_t PrettyPrintDecorator::handleMarkupChar(uint8_t c)
         return writeQuote();
 
     default:
-        return writeNormalChar(c); // <- should not happen anyway
+        return writeValueChar(c);
     }
 }
 
-size_t PrettyPrintDecorator::writeNormalChar(uint8_t c)
+size_t PrettyPrintDecorator::writeValueChar(uint8_t c)
 {
-    bool inEmptyBlock = !inString && (previousChar == '{' || previousChar == '[');
-
+    bool inEmptyBlock = previousChar == '{' || previousChar == '[';
     return inEmptyBlock ? writeln() + sink.write(c) : sink.write(c);
 }
 
@@ -75,8 +76,12 @@ size_t PrettyPrintDecorator::writeOpening(uint8_t c)
 
 size_t PrettyPrintDecorator::writeQuote()
 {
-    size_t n = writeNormalChar('"');
-    inString = !inString;
+    bool inEmptyBlock = previousChar == '{' || previousChar == '[';
+
+    size_t n = inEmptyBlock ? writeln() + sink.write('"') : sink.write('"');
+
+    inString = true;
+
     return n;
 }
 

+ 1 - 1
JsonGenerator/PrettyPrintDecorator.h

@@ -35,7 +35,7 @@ private:
     size_t writeClosing(uint8_t);
     size_t writeColumn();
     size_t writeComma();
-    size_t writeNormalChar(uint8_t);
+    size_t writeValueChar(uint8_t);
     size_t writeOpening(uint8_t);
     size_t writeQuote();
 };