2014-08-26 09:56:05 +02:00
|
|
|
#include "IndentedPrint.h"
|
2014-08-26 09:28:41 +02:00
|
|
|
|
2014-08-26 10:16:13 +02:00
|
|
|
using namespace ArduinoJson::Generator;
|
|
|
|
|
2014-08-26 09:56:05 +02:00
|
|
|
void IndentedPrint::indent()
|
2014-08-26 09:28:41 +02:00
|
|
|
{
|
2014-08-26 11:58:33 +02:00
|
|
|
if (level < MAX_LEVEL)
|
2014-08-26 09:53:32 +02:00
|
|
|
level++;
|
2014-08-26 09:28:41 +02:00
|
|
|
}
|
|
|
|
|
2014-08-26 09:56:05 +02:00
|
|
|
void IndentedPrint::unindent()
|
2014-08-26 09:28:41 +02:00
|
|
|
{
|
2014-08-26 11:58:33 +02:00
|
|
|
if (level > 0)
|
2014-08-26 09:53:32 +02:00
|
|
|
level--;
|
2014-08-26 09:28:41 +02:00
|
|
|
}
|
|
|
|
|
2014-08-26 11:58:33 +02:00
|
|
|
void IndentedPrint::setTabSize(uint8_t n)
|
|
|
|
{
|
|
|
|
if (n < MAX_TAB_SIZE)
|
|
|
|
tabSize = n;
|
|
|
|
}
|
|
|
|
|
2014-08-26 09:56:05 +02:00
|
|
|
size_t IndentedPrint::write(uint8_t c)
|
2014-08-26 09:28:41 +02:00
|
|
|
{
|
|
|
|
size_t n = 0;
|
|
|
|
|
|
|
|
if (isNewLine)
|
2014-08-26 09:53:32 +02:00
|
|
|
n += writeTabs();
|
2014-08-26 09:28:41 +02:00
|
|
|
|
|
|
|
n += sink.write(c);
|
|
|
|
|
|
|
|
isNewLine = c == '\n';
|
2014-08-26 11:58:33 +02:00
|
|
|
|
2014-08-26 09:28:41 +02:00
|
|
|
return n;
|
|
|
|
}
|
|
|
|
|
2014-08-26 12:11:17 +02:00
|
|
|
inline size_t IndentedPrint::writeTabs()
|
2014-08-26 09:28:41 +02:00
|
|
|
{
|
|
|
|
size_t n = 0;
|
|
|
|
|
2014-08-26 11:58:33 +02:00
|
|
|
for (int i = 0; i < level*tabSize; i++)
|
2014-08-26 09:28:41 +02:00
|
|
|
n += sink.write(' ');
|
|
|
|
|
|
|
|
return n;
|
|
|
|
}
|