#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;
}

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