Refactoring...

This commit is contained in:
Benoit Blanchon
2014-08-25 13:14:09 +02:00
parent fafae8181b
commit 1df6cde026
2 changed files with 58 additions and 42 deletions

View File

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

View File

@ -35,12 +35,28 @@ private:
size_t handleStringChar(uint8_t); size_t handleStringChar(uint8_t);
size_t handleMarkupChar(uint8_t); size_t handleMarkupChar(uint8_t);
size_t writeClosing(uint8_t); size_t handleBlockClose(uint8_t);
size_t writeColumn(); size_t handleBlockOpen(uint8_t);
size_t writeComma(); size_t handleColumn();
size_t writeLineBreak(); size_t handleComma();
size_t writeOpening(uint8_t); size_t handleQuoteOpen();
size_t writeQuote(); size_t handleNormalChar(uint8_t);
size_t writeValueChar(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);
}
}; };