JsonPrettyPrint.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. /*
  2. * Arduino JSON library
  3. * Benoit Blanchon 2014 - MIT License
  4. */
  5. #pragma once
  6. #include "Print.h"
  7. #include "IndentedPrint.h"
  8. namespace ArduinoJson
  9. {
  10. namespace Generator
  11. {
  12. // Converts a compact JSON string into an indented one.
  13. class JsonPrettyPrint : public Print
  14. {
  15. public:
  16. JsonPrettyPrint(IndentedPrint& p)
  17. : _sink(p)
  18. {
  19. _previousChar = 0;
  20. _inString = false;
  21. }
  22. virtual size_t write(uint8_t);
  23. private:
  24. uint8_t _previousChar;
  25. IndentedPrint& _sink;
  26. bool _inString;
  27. bool inEmptyBlock()
  28. {
  29. return _previousChar == '{' || _previousChar == '[';
  30. }
  31. size_t handleStringChar(uint8_t);
  32. size_t handleMarkupChar(uint8_t);
  33. size_t handleBlockClose(uint8_t);
  34. size_t handleBlockOpen(uint8_t);
  35. size_t handleColumn();
  36. size_t handleComma();
  37. size_t handleQuoteOpen();
  38. size_t handleNormalChar(uint8_t);
  39. size_t indentIfNeeded();
  40. size_t unindentIfNeeded();
  41. };
  42. }
  43. }