IndentedPrint.cpp 687 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #include "IndentedPrint.h"
  2. using namespace ArduinoJson::Generator;
  3. void IndentedPrint::indent()
  4. {
  5. if (level < MAX_LEVEL)
  6. level++;
  7. }
  8. void IndentedPrint::unindent()
  9. {
  10. if (level > 0)
  11. level--;
  12. }
  13. void IndentedPrint::setTabSize(uint8_t n)
  14. {
  15. if (n < MAX_TAB_SIZE)
  16. tabSize = n;
  17. }
  18. size_t IndentedPrint::write(uint8_t c)
  19. {
  20. size_t n = 0;
  21. if (isNewLine)
  22. n += writeTabs();
  23. n += sink->write(c);
  24. isNewLine = c == '\n';
  25. return n;
  26. }
  27. inline size_t IndentedPrint::writeTabs()
  28. {
  29. size_t n = 0;
  30. for (int i = 0; i < level*tabSize; i++)
  31. n += sink->write(' ');
  32. return n;
  33. }