2014-08-25 09:06:21 +02:00
|
|
|
/*
|
|
|
|
* Arduino JSON library
|
|
|
|
* Benoit Blanchon 2014 - MIT License
|
|
|
|
*/
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "Print.h"
|
2014-08-26 09:56:05 +02:00
|
|
|
#include "IndentedPrint.h"
|
2014-08-25 09:06:21 +02:00
|
|
|
|
2014-08-25 13:19:07 +02:00
|
|
|
namespace ArduinoJson
|
2014-08-25 09:06:21 +02:00
|
|
|
{
|
2014-08-25 13:19:07 +02:00
|
|
|
namespace Generator
|
2014-08-25 09:06:21 +02:00
|
|
|
{
|
2014-08-25 13:19:07 +02:00
|
|
|
class PrettyPrintDecorator : public Print
|
|
|
|
{
|
|
|
|
public:
|
2014-08-25 09:06:21 +02:00
|
|
|
|
2014-08-26 09:56:05 +02:00
|
|
|
PrettyPrintDecorator(IndentedPrint& p)
|
2014-08-26 09:28:41 +02:00
|
|
|
: sink(p)
|
2014-08-25 13:19:07 +02:00
|
|
|
{
|
|
|
|
previousChar = 0;
|
|
|
|
inString = false;
|
|
|
|
}
|
2014-08-25 09:06:21 +02:00
|
|
|
|
2014-08-25 13:19:07 +02:00
|
|
|
virtual size_t write(uint8_t);
|
2014-08-25 09:52:42 +02:00
|
|
|
|
2014-08-26 09:28:41 +02:00
|
|
|
private:
|
2014-08-25 13:19:07 +02:00
|
|
|
uint8_t previousChar;
|
2014-08-26 09:56:05 +02:00
|
|
|
IndentedPrint& sink;
|
2014-08-25 13:19:07 +02:00
|
|
|
bool inString;
|
2014-08-25 12:41:49 +02:00
|
|
|
|
2014-08-25 13:19:07 +02:00
|
|
|
bool inEmptyBlock()
|
|
|
|
{
|
|
|
|
return previousChar == '{' || previousChar == '[';
|
|
|
|
}
|
2014-08-25 13:14:09 +02:00
|
|
|
|
2014-08-25 13:19:07 +02:00
|
|
|
size_t handleStringChar(uint8_t);
|
|
|
|
size_t handleMarkupChar(uint8_t);
|
2014-08-25 13:14:09 +02:00
|
|
|
|
2014-08-25 13:19:07 +02:00
|
|
|
size_t handleBlockClose(uint8_t);
|
|
|
|
size_t handleBlockOpen(uint8_t);
|
|
|
|
size_t handleColumn();
|
|
|
|
size_t handleComma();
|
|
|
|
size_t handleQuoteOpen();
|
|
|
|
size_t handleNormalChar(uint8_t);
|
2014-08-26 09:28:41 +02:00
|
|
|
size_t indentIfNeeded();
|
2014-08-26 09:49:59 +02:00
|
|
|
size_t unindentIfNeeded();
|
2014-08-25 13:19:07 +02:00
|
|
|
};
|
|
|
|
}
|
|
|
|
}
|