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;
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 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);
size_t n = inEmptyBlock() ? breakThenWrite(c) : writeChar(c);
indent++;
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;
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;
}

View File

@ -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);
}
};