forked from bblanchon/ArduinoJson
42 lines
758 B
C++
42 lines
758 B
C++
// Copyright Benoit Blanchon 2014
|
|
// MIT License
|
|
//
|
|
// Arduino JSON library
|
|
// https://github.com/bblanchon/ArduinoJson
|
|
|
|
#include "../../include/ArduinoJson/Internals/IndentedPrint.hpp"
|
|
|
|
using namespace ArduinoJson::Internals;
|
|
|
|
void IndentedPrint::indent() {
|
|
if (level < MAX_LEVEL) level++;
|
|
}
|
|
|
|
void IndentedPrint::unindent() {
|
|
if (level > 0) level--;
|
|
}
|
|
|
|
void IndentedPrint::setTabSize(uint8_t n) {
|
|
if (n < MAX_TAB_SIZE) tabSize = n & MAX_TAB_SIZE;
|
|
}
|
|
|
|
size_t IndentedPrint::write(uint8_t c) {
|
|
size_t n = 0;
|
|
|
|
if (isNewLine) n += writeTabs();
|
|
|
|
n += sink->write(c);
|
|
|
|
isNewLine = c == '\n';
|
|
|
|
return n;
|
|
}
|
|
|
|
inline size_t IndentedPrint::writeTabs() {
|
|
size_t n = 0;
|
|
|
|
for (int i = 0; i < level * tabSize; i++) n += sink->write(' ');
|
|
|
|
return n;
|
|
}
|