Benoit Blanchon пре 11 година
родитељ
комит
1df6cde026
2 измењених фајлова са 53 додато и 37 уклоњено
  1. 30 30
      JsonGenerator/PrettyPrintDecorator.cpp
  2. 23 7
      JsonGenerator/PrettyPrintDecorator.h

+ 30 - 30
JsonGenerator/PrettyPrintDecorator.cpp

@@ -18,7 +18,7 @@ size_t PrettyPrintDecorator::handleStringChar(uint8_t c)
 
     if (isQuote) inString = false;
 
-    return sink.write(c);
+    return writeChar(c);
 }
 
 size_t PrettyPrintDecorator::handleMarkupChar(uint8_t c)
@@ -27,72 +27,72 @@ size_t PrettyPrintDecorator::handleMarkupChar(uint8_t c)
     {
     case '{':
     case '[':
-        return writeOpening(c);
+        return handleBlockOpen(c);
 
     case '}':
     case ']':
-        return writeClosing(c);
-
-    case ',':
-        return writeComma();
+        return handleBlockClose(c);
 
     case ':':
-        return writeColumn();
+        return handleColumn();
+
+    case ',':
+        return handleComma();
 
     case '"':
-        return writeQuote();
+        return handleQuoteOpen();
 
     default:
-        return writeValueChar(c);
+        return handleNormalChar(c);
     }
 }
 
-size_t PrettyPrintDecorator::writeValueChar(uint8_t c)
+size_t PrettyPrintDecorator::handleBlockOpen(uint8_t c)
 {
-    return inEmptyBlock() ? writeLineBreak() + sink.write(c) : sink.write(c);
+    size_t n = inEmptyBlock() ? breakThenWrite(c) : writeChar(c);
+
+    indent++;
+
+    return n;
 }
 
-size_t PrettyPrintDecorator::writeColumn()
+size_t PrettyPrintDecorator::handleBlockClose(uint8_t c)
 {
-    return sink.write(':') + sink.write(' ');
+    indent--;
+
+    return inEmptyBlock() ? writeChar(c) : breakThenWrite(c);
 }
 
-size_t PrettyPrintDecorator::writeComma()
+size_t PrettyPrintDecorator::handleColumn()
 {
-    return sink.write(',') + writeLineBreak();
+    return writeChar(':') + writeChar(' ');
 }
 
-size_t PrettyPrintDecorator::writeOpening(uint8_t c)
+size_t PrettyPrintDecorator::handleComma()
 {
-    size_t n = inEmptyBlock() ? writeLineBreak() + sink.write(c) : sink.write(c);
-
-    indent++;
-
-    return n;
+    return writeThenBreak(',');
 }
 
-size_t PrettyPrintDecorator::writeQuote()
+size_t PrettyPrintDecorator::handleQuoteOpen()
 {
-    size_t n = inEmptyBlock() ? writeLineBreak() + sink.write('"') : sink.write('"');
+    size_t n = inEmptyBlock() ? breakThenWrite('"') : writeChar('"');
 
     inString = true;
 
     return n;
 }
 
-size_t PrettyPrintDecorator::writeClosing(uint8_t c)
+size_t PrettyPrintDecorator::handleNormalChar(uint8_t c)
 {
-    indent--;
-
-    return inEmptyBlock() ? sink.write(c) : writeLineBreak() + sink.write(c);
+    return inEmptyBlock() ? breakThenWrite(c) : writeChar(c);
 }
 
-size_t PrettyPrintDecorator::writeLineBreak()
+size_t PrettyPrintDecorator::breakAndIndent()
 {
-    size_t n = sink.write('\n');
+    size_t n = writeChar('\n');
 
     for (int i = 0; i < indent; i++)
-        n += sink.write(' ');
+        n += writeChar(' ');
 
     return n;
 }

+ 23 - 7
JsonGenerator/PrettyPrintDecorator.h

@@ -35,12 +35,28 @@ private:
     size_t handleStringChar(uint8_t);
     size_t handleMarkupChar(uint8_t);
 
-    size_t writeClosing(uint8_t);
-    size_t writeColumn();
-    size_t writeComma();
-    size_t writeLineBreak();
-    size_t writeOpening(uint8_t);
-    size_t writeQuote();
-    size_t writeValueChar(uint8_t);
+    size_t handleBlockClose(uint8_t);
+    size_t handleBlockOpen(uint8_t);
+    size_t handleColumn();
+    size_t handleComma();
+    size_t handleQuoteOpen();
+    size_t handleNormalChar(uint8_t);
+
+    size_t breakAndIndent();
+
+    size_t breakThenWrite(uint8_t c)
+    {
+        return breakAndIndent() + writeChar(c);
+    }
+
+    size_t writeThenBreak(uint8_t c)
+    {
+        return writeChar(c) + breakAndIndent();
+    }
+
+    size_t writeChar(uint8_t c)
+    {
+        return sink.write(c);
+    }
 };