mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 16:14:11 +01:00 
			
		
		
		
	Extracted class EscapedString
This commit is contained in:
		
							
								
								
									
										65
									
								
								JsonGenerator/EscapedString.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								JsonGenerator/EscapedString.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,65 @@ | ||||
| /* | ||||
|  * Arduino JSON library | ||||
|  * Benoit Blanchon 2014 - MIT License | ||||
|  */ | ||||
|  | ||||
| #include "EscapedString.h" | ||||
|  | ||||
|  | ||||
| size_t EscapedString::printTo(Print& p) const | ||||
| { | ||||
|     const char* s = rawString; | ||||
|  | ||||
|     if (!s) | ||||
|     { | ||||
|         return p.print("null"); | ||||
|     } | ||||
|  | ||||
|     size_t n = 0; | ||||
|  | ||||
|     n += p.write('\"'); | ||||
|  | ||||
|     while (*s) | ||||
|     { | ||||
|         switch (*s) | ||||
|         { | ||||
|         case '"': | ||||
|             n += p.print("\\\""); | ||||
|             break; | ||||
|  | ||||
|         case '\\': | ||||
|             n += p.print("\\\\"); | ||||
|             break; | ||||
|  | ||||
|         case '\b': | ||||
|             n += p.print("\\b"); | ||||
|             break; | ||||
|  | ||||
|         case '\f': | ||||
|             n += p.print("\\f"); | ||||
|             break; | ||||
|  | ||||
|         case '\n': | ||||
|             n += p.print("\\n"); | ||||
|             break; | ||||
|  | ||||
|         case '\r': | ||||
|             n += p.print("\\r"); | ||||
|             break; | ||||
|  | ||||
|         case '\t': | ||||
|             n += p.print("\\t"); | ||||
|             break; | ||||
|  | ||||
|         default: | ||||
|             n += p.write(*s); | ||||
|             break; | ||||
|         } | ||||
|  | ||||
|         s++; | ||||
|     } | ||||
|  | ||||
|     n += p.write('\"'); | ||||
|  | ||||
|     return n; | ||||
| } | ||||
							
								
								
									
										24
									
								
								JsonGenerator/EscapedString.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								JsonGenerator/EscapedString.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | ||||
| /* | ||||
|  * Arduino JSON library | ||||
|  * Benoit Blanchon 2014 - MIT License | ||||
|  */ | ||||
|  | ||||
| #pragma once | ||||
|  | ||||
| #include "Print.h" | ||||
|  | ||||
| class EscapedString | ||||
| { | ||||
| public: | ||||
|     EscapedString(const char* s) | ||||
|         : rawString(s) | ||||
|     { | ||||
|  | ||||
|     } | ||||
|  | ||||
|     size_t printTo(Print&) const; | ||||
|  | ||||
| private: | ||||
|     const char* rawString; | ||||
| }; | ||||
|  | ||||
| @@ -3,6 +3,7 @@ | ||||
|  * Benoit Blanchon 2014 - MIT License | ||||
|  */ | ||||
|  | ||||
| #include "EscapedString.h" | ||||
| #include "JsonValue.h" | ||||
|  | ||||
| using namespace ArduinoJson::Generator; | ||||
| @@ -27,58 +28,6 @@ size_t JsonValue::printPrintableTo(const Content& c, Print& p) | ||||
|  | ||||
| size_t JsonValue::printStringTo(const Content& c, Print& p) | ||||
| { | ||||
|     const char* s = c.asString; | ||||
|  | ||||
|     if (!s) | ||||
|     { | ||||
|         return p.print("null"); | ||||
|     } | ||||
|  | ||||
|     size_t n = 0; | ||||
|  | ||||
|     n += p.write('\"'); | ||||
|  | ||||
|     while (*s) | ||||
|     { | ||||
|         switch (*s) | ||||
|         { | ||||
|         case '"': | ||||
|             n += p.print("\\\""); | ||||
|             break; | ||||
|  | ||||
|         case '\\': | ||||
|             n += p.print("\\\\"); | ||||
|             break; | ||||
|  | ||||
|         case '\b': | ||||
|             n += p.print("\\b"); | ||||
|             break; | ||||
|  | ||||
|         case '\f': | ||||
|             n += p.print("\\f"); | ||||
|             break; | ||||
|  | ||||
|         case '\n': | ||||
|             n += p.print("\\n"); | ||||
|             break; | ||||
|  | ||||
|         case '\r': | ||||
|             n += p.print("\\r"); | ||||
|             break; | ||||
|  | ||||
|         case '\t': | ||||
|             n += p.print("\\t"); | ||||
|             break; | ||||
|  | ||||
|         default: | ||||
|             n += p.write(*s); | ||||
|             break; | ||||
|         } | ||||
|  | ||||
|         s++; | ||||
|     } | ||||
|  | ||||
|     n += p.write('\"'); | ||||
|  | ||||
|     return n; | ||||
|     EscapedString s(c.asString); | ||||
|     return s.printTo(p); | ||||
| } | ||||
| @@ -84,6 +84,7 @@ | ||||
|     </Link> | ||||
|   </ItemDefinitionGroup> | ||||
|   <ItemGroup> | ||||
|     <ClCompile Include="..\JsonGenerator\EscapedString.cpp" /> | ||||
|     <ClCompile Include="..\JsonGenerator\JsonValue.cpp" /> | ||||
|     <ClCompile Include="..\JsonGenerator\StringBuilder.cpp" /> | ||||
|     <ClCompile Include="JsonArrayTests.cpp" /> | ||||
| @@ -93,6 +94,7 @@ | ||||
|     <ClCompile Include="StringBuilderTests.cpp" /> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ClInclude Include="..\JsonGenerator\EscapedString.h" /> | ||||
|     <ClInclude Include="..\JsonGenerator\JsonArray.h" /> | ||||
|     <ClInclude Include="..\JsonGenerator\JsonHashTable.h" /> | ||||
|     <ClInclude Include="..\JsonGenerator\JsonObjectBase.h" /> | ||||
|   | ||||
| @@ -36,6 +36,9 @@ | ||||
|     <ClCompile Include="Print.cpp"> | ||||
|       <Filter>Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="..\JsonGenerator\EscapedString.cpp"> | ||||
|       <Filter>Source Files</Filter> | ||||
|     </ClCompile> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ClInclude Include="..\JsonGenerator\JsonArray.h"> | ||||
| @@ -59,5 +62,8 @@ | ||||
|     <ClInclude Include="..\JsonGenerator\StringBuilder.h"> | ||||
|       <Filter>Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="..\JsonGenerator\EscapedString.h"> | ||||
|       <Filter>Header Files</Filter> | ||||
|     </ClInclude> | ||||
|   </ItemGroup> | ||||
| </Project> | ||||
		Reference in New Issue
	
	Block a user