Fixed empty object output

This commit is contained in:
Benoit Blanchon
2014-08-25 09:56:51 +02:00
parent 75c89e7b35
commit eb1a774778
2 changed files with 24 additions and 5 deletions

View File

@ -10,15 +10,33 @@ size_t IndentedPrintDecorator::write(uint8_t c)
switch (c) switch (c)
{ {
case '{': case '{':
indent++; indent++;
return sink.write(c) + writeln(); emptyBlock = true;
return sink.write(c);
case '}': case '}':
indent--; indent--;
return writeln() + sink.write(c);
if (emptyBlock)
{
return sink.write(c);
}
else
{
return writeln() + sink.write(c);
}
default: default:
return sink.write(c);
if (emptyBlock)
{
emptyBlock = false;
return writeln() + sink.write(c);
}
else
{
return sink.write(c);
}
} }
} }

View File

@ -13,7 +13,7 @@ class IndentedPrintDecorator : public Print
public: public:
IndentedPrintDecorator(Print& p) IndentedPrintDecorator(Print& p)
: indent(0), sink(p) : indent(0), sink(p), emptyBlock(false)
{ {
} }
@ -21,6 +21,7 @@ public:
private: private:
int indent; int indent;
bool emptyBlock;
Print& sink; Print& sink;
size_t writeln(); size_t writeln();