mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 08:42:39 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			48 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| // Copyright Benoit Blanchon 2014-2016
 | |
| // MIT License
 | |
| //
 | |
| // Arduino JSON library
 | |
| // https://github.com/bblanchon/ArduinoJson
 | |
| // If you like this project, please add a star!
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| #include "IndentedPrint.hpp"
 | |
| 
 | |
| namespace ArduinoJson {
 | |
| namespace Internals {
 | |
| 
 | |
| // Converts a compact JSON string into an indented one.
 | |
| class Prettyfier : public Print {
 | |
|  public:
 | |
|   explicit Prettyfier(IndentedPrint& p) : _sink(p) {
 | |
|     _previousChar = 0;
 | |
|     _inString = false;
 | |
|   }
 | |
| 
 | |
|   virtual size_t write(uint8_t);
 | |
| 
 | |
|  private:
 | |
|   Prettyfier& operator=(const Prettyfier&);  // cannot be assigned
 | |
| 
 | |
|   bool inEmptyBlock() { return _previousChar == '{' || _previousChar == '['; }
 | |
| 
 | |
|   size_t handleStringChar(uint8_t);
 | |
|   size_t handleMarkupChar(uint8_t);
 | |
| 
 | |
|   size_t handleBlockClose(uint8_t);
 | |
|   size_t handleBlockOpen(uint8_t);
 | |
|   size_t handleColon();
 | |
|   size_t handleComma();
 | |
|   size_t handleQuoteOpen();
 | |
|   size_t handleNormalChar(uint8_t);
 | |
|   size_t indentIfNeeded();
 | |
|   size_t unindentIfNeeded();
 | |
| 
 | |
|   uint8_t _previousChar;
 | |
|   IndentedPrint& _sink;
 | |
|   bool _inString;
 | |
| };
 | |
| }
 | |
| }
 |