| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- /*
- * Arduino JSON library
- * Benoit Blanchon 2014 - MIT License
- */
- #include "PrettyPrintDecorator.h"
- size_t PrettyPrintDecorator::write(uint8_t c)
- {
- switch (c)
- {
- case '{':
- case '[':
-
- size_t n;
- if (previousChar == '{' || previousChar == '[')
- {
- n = writeln() + sink.write(c);
- }
- else
- {
- n = sink.write(c);
- }
- previousChar = c;
- indent++;
- return n;
- case '}':
- case ']':
- indent--;
- if (previousChar == '{' || previousChar == '[')
- {
- previousChar = c;
- return sink.write(c);
- }
- else
- {
- previousChar = c;
- return writeln() + sink.write(c);
- }
-
- case ',':
- previousChar = c;
- if (isInAString)
- {
- return sink.write(c);
- }
- else
- {
- return sink.write(c) + writeln();
- }
- case ':':
- previousChar = c;
- if (isInAString)
- {
- return sink.write(c);
- }
- else
- {
- return sink.write(c) + sink.write(' ');
- }
- case '\"':
- if (previousChar != '\\')
- {
- isInAString = !isInAString;
- }
- default:
- if (previousChar == '{' || previousChar == '[')
- {
- previousChar = c;
- return writeln() + sink.write(c);
- }
- else
- {
- previousChar = c;
- return sink.write(c);
- }
- }
- }
- size_t PrettyPrintDecorator::writeln()
- {
- size_t n = sink.write('\n');
- for (int i = 0; i < indent; i++)
- n += sink.write(' ');
- return n;
- }
|